SlideShare a Scribd company logo
1 of 9
Download to read offline
Textul si imaginile din acest document sunt licentiate
Attribution-NonCommercial-NoDerivs
CC BY-NC-ND
Codul sursa din acest document este licentiat
Public-Domain
Esti liber sa distribui acest document prin orice mijloace consideri (email, publicare pe website /
blog, printare, sau orice alt mijloc), atat timp cat nu aduci nici un fel de modificari acestuia. Codul
sursa din acest document poate fi utilizat in orice fel de scop, de natura comerciala sau nu, fara
nici un fel de limitari.
Raspberry PI si LCD Shield 20x4
Shield-ul LCD 20x4 functioneaza perfect impreuna cu placa Raspberry PI.
Shield-ul se poate conecta direct la portul placii sau prin intermediul unei
panglici cobbler. Placa expune in acelasi timp si toti pinii GPIO ai Raspberry PI
(conectorul 2X13, nepopulat, de langa LCD). In acest mod, poti avea acces la
oricare pin GPIO doresti si in acelasi timp poti folosi si LCD-ul.
In acest tutorial vei utiliza shield-ul LCD 20x4 pentru a afisa data/ora,
adresa IP a placii, temperatura si nivelul de utilizare al procesorului. Pentru a
scoate in evidenta utilitatea placii Raspberry PI, programul sintetizeaza vocal
parametrii de mai sus.
Pentru acest tutorial ai nevoie de urmatoarele componente:
• O placa Raspberry PI.
• Un shield LCD 20x4.
• O boxa audio cu alimentare prin USB.
• O sursa de alimentare pentru Raspberry PI (5V).
Cum procedez ?
1. Conecteaza shield-ul LCD la placa Raspberry PI.
2. Conecteaza mufa USB a boxei la unul din porturile USB ale placii.
3. Conecteaza mufa jack a boxei la iesirea audio a placii Raspberry.
4. Alimenteaza Raspberry PI si logheaza-te la placa prin Putty sau
orice alt utilitar doresti.
Pachetul Python RPi.GPIO 0.4.1a.
Inainte de a executa programul listat mai jos trebuie sa instalezi pachetul
python RPi.GPIO 0.4.1a. Programul shield-ului depinde de acest pachet.
1. Descarca modulul prin comanda:
http://www.robofun.ro/forum
sudo wget
https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-
0.4.1a.tar.gz
2. Dezarhiveaza-l prin comanda:
sudo tar -xvf Rpi.GPIO-0.4.1a.tar.gz
3. Schimba locatia in noul fisier:
cd Rpi.GPIO-0.4.1a
4. Urmeaza sa il instalezi prin comanda:
sudo python setup.py install
Programul shield-ului.
1. Creeaza un fisier cu numele lcd20x4.
sudo mkdir lcd20x4
2. Deschide editorul nano si copiaza codul sursa listat mai jos. Dupa
ce l-ai copiat, salveaza-l cu CTRL X si Y:
sudo nano lcd.py
3. Executa programul cu comanda:
sudo python lcd.py
4. Pe afisaj vei obtine urmatoarele linii, ca in imaginile de mai jos, iar
sintetizorul va reda vocal parametrii:
http://www.robofun.ro/forum
http://www.robofun.ro/forum
import os
import subprocess
import RPi.GPIO as GPIO
import time
from datetime import datetime
import socket
import fcntl
import struct
LCD_RS = 25
LCD_E = 24
LCD_D4 = 23
LCD_D5 = 17
LCD_D6 = 18
LCD_D7 = 22
LED_ON = 15
http://www.robofun.ro/forum
LCD_WIDTH = 20
LCD_CHR = True
LCD_CMD = False
LCD_LINE_1 = 0x80
LCD_LINE_2 = 0xC0
LCD_LINE_3 = 0x94
LCD_LINE_4 = 0xD4
E_PULSE = 0.00005
E_DELAY = 0.00005
def main():
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(LCD_E, GPIO.OUT)
GPIO.setup(LCD_RS, GPIO.OUT)
GPIO.setup(LCD_D4, GPIO.OUT)
GPIO.setup(LCD_D5, GPIO.OUT)
GPIO.setup(LCD_D6, GPIO.OUT)
GPIO.setup(LCD_D7, GPIO.OUT)
GPIO.setup(LED_ON, GPIO.OUT)
lcd_init()
while 1:
lcd_byte(LCD_LINE_1, LCD_CMD)
lcd_string("ROBOFUN.RO",2)
lcd_byte(LCD_LINE_2, LCD_CMD)
lcd_string("Raspberry PI",2)
lcd_byte(LCD_LINE_3, LCD_CMD)
lcd_string("LCD Shield", 2)
lcd_byte(LCD_LINE_4, LCD_CMD)
lcd_string("20x4", 2)
os.system('espeak -v en "{0}"'.format('www.robofun.ro
introducing'))
os.system('espeak -v en "{0}"'.format('the new Raspberry PI'))
os.system('espeak -v en "{0}"'.format('20 characters by 4 lines
LCD Shield'))
http://www.robofun.ro/forum
for i in range(0,50):
lcd_byte(LCD_LINE_1, LCD_CMD)
textTime = datetime.now().strftime('%b %d %H:%M')
lcd_string(textTime, 2)
lcd_byte(LCD_LINE_2, LCD_CMD)
textIP = get_ip_add('eth0')
lcd_string(textIP, 2)
lcd_byte(LCD_LINE_3, LCD_CMD)
textTemp = 'CPU Temp %s C' % (get_cpu_temp())
lcd_string(textTemp, 2)
lcd_byte(LCD_LINE_4, LCD_CMD)
textCpuUse = 'CPU Use %s' % (get_cpu_use()) + '%'
lcd_string(textCpuUse, 2)
os.system('espeak -v en "{0}"'.format('The temperature is %s
degrees Celsius' % (get_cpu_temp())))
os.system('espeak -v en "{0}"'.format('IP adress is %s' %
textIP))
os.system('espeak -v en "{0}"'.format('The procesor is being
used at %s percent' % get_cpu_use()))
os.system('espeak -v en "{0}"'.format('The time is %s' %
textTime))
time.sleep(0.2)
http://www.robofun.ro/forum
def get_cpu_use():
return(str(os.popen("top -n1 | awk '/Cpu(s):/ {print
$2}'").readline().strip()))
def get_cpu_temp():
res = os.popen('vcgencmd measure_temp').readline()
return (res.replace("temp="," ").replace("'Cn",""))
def get_ip_add(ifname):
s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
return
socket.inet_ntoa(fcntl.ioctl(s.fileno(),0x8915,struct.pack('256s',
ifname[:15]))[20:24])
def lcd_init():
lcd_byte(0x33,LCD_CMD)
lcd_byte(0x32,LCD_CMD)
lcd_byte(0x28,LCD_CMD)
lcd_byte(0x0C,LCD_CMD)
lcd_byte(0x06,LCD_CMD)
lcd_byte(0x01,LCD_CMD)
def lcd_string(message,style):
if style==1:
message = message.ljust(LCD_WIDTH," ")
elif style==2:
message = message.center(LCD_WIDTH," ")
elif style==3:
message = message.rjust(LCD_WIDTH," ")
for i in range(LCD_WIDTH):
lcd_byte(ord(message[i]),LCD_CHR)
http://www.robofun.ro/forum
def lcd_byte(bits, mode):
GPIO.output(LCD_RS, mode)
GPIO.output(LCD_D4, False)
GPIO.output(LCD_D5, False)
GPIO.output(LCD_D6, False)
GPIO.output(LCD_D7, False)
if bits&0x10==0x10:
GPIO.output(LCD_D4, True)
if bits&0x20==0x20:
GPIO.output(LCD_D5, True)
if bits&0x40==0x40:
GPIO.output(LCD_D6, True)
if bits&0x80==0x80:
GPIO.output(LCD_D7, True)
time.sleep(E_DELAY)
GPIO.output(LCD_E, True)
time.sleep(E_PULSE)
GPIO.output(LCD_E, False)
time.sleep(E_DELAY)
GPIO.output(LCD_D4, False)
GPIO.output(LCD_D5, False)
GPIO.output(LCD_D6, False)
GPIO.output(LCD_D7, False)
if bits&0x01==0x01:
GPIO.output(LCD_D4, True)
if bits&0x02==0x02:
GPIO.output(LCD_D5, True)
if bits&0x04==0x04:
GPIO.output(LCD_D6, True)
if bits&0x08==0x08:
GPIO.output(LCD_D7, True)
time.sleep(E_DELAY)
GPIO.output(LCD_E, True)
time.sleep(E_PULSE)
GPIO.output(LCD_E, False)
time.sleep(E_DELAY)
if __name__ == '__main__':
main()
http://www.robofun.ro/forum

More Related Content

Viewers also liked

Arduino indicatoare cp-usiram
Arduino indicatoare cp-usiramArduino indicatoare cp-usiram
Arduino indicatoare cp-usiramIulius Bors
 
Raspberry pi bmp085blueedition
Raspberry pi bmp085blueeditionRaspberry pi bmp085blueedition
Raspberry pi bmp085blueeditionIulius Bors
 
Curs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastaturaCurs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastaturaIulius Bors
 
Arduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linuxArduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linuxIulius Bors
 
Raspberry piuln2803
Raspberry piuln2803Raspberry piuln2803
Raspberry piuln2803Iulius Bors
 
Curs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelCurs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelIulius Bors
 
Curs gratuitarduino lectia3-proiectesimple-1
Curs gratuitarduino lectia3-proiectesimple-1Curs gratuitarduino lectia3-proiectesimple-1
Curs gratuitarduino lectia3-proiectesimple-1Iulius Bors
 
Asamblare statie meteo
Asamblare statie meteoAsamblare statie meteo
Asamblare statie meteoIulius Bors
 
Arduino uno rfidid-12
Arduino uno rfidid-12Arduino uno rfidid-12
Arduino uno rfidid-12Iulius Bors
 
Arduino multiplexarea le-durilor
Arduino multiplexarea le-durilorArduino multiplexarea le-durilor
Arduino multiplexarea le-durilorIulius Bors
 
Curs gratuitarduino lectia2-senzorianalogici
Curs gratuitarduino lectia2-senzorianalogiciCurs gratuitarduino lectia2-senzorianalogici
Curs gratuitarduino lectia2-senzorianalogiciIulius Bors
 
Arduino shield wifi-monitorizarelocuinta
Arduino shield wifi-monitorizarelocuintaArduino shield wifi-monitorizarelocuinta
Arduino shield wifi-monitorizarelocuintaIulius Bors
 
Arduino releemodio2
Arduino releemodio2Arduino releemodio2
Arduino releemodio2Iulius Bors
 
Arduino wifi shield-drivermotoarel298
Arduino wifi shield-drivermotoarel298Arduino wifi shield-drivermotoarel298
Arduino wifi shield-drivermotoarel298Iulius Bors
 
Curs gratuitarduino lectia12-conexiunewifi-googledocs
Curs gratuitarduino lectia12-conexiunewifi-googledocsCurs gratuitarduino lectia12-conexiunewifi-googledocs
Curs gratuitarduino lectia12-conexiunewifi-googledocsIulius Bors
 
Raspberry pi firmata - arduino
Raspberry pi   firmata - arduinoRaspberry pi   firmata - arduino
Raspberry pi firmata - arduinoIulius Bors
 
Raspberry pi wirelesshotspot
Raspberry pi wirelesshotspotRaspberry pi wirelesshotspot
Raspberry pi wirelesshotspotIulius Bors
 
Arduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecretArduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecretIulius Bors
 

Viewers also liked (20)

Arduino indicatoare cp-usiram
Arduino indicatoare cp-usiramArduino indicatoare cp-usiram
Arduino indicatoare cp-usiram
 
Raspberry pi bmp085blueedition
Raspberry pi bmp085blueeditionRaspberry pi bmp085blueedition
Raspberry pi bmp085blueedition
 
Curs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastaturaCurs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastatura
 
Arduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linuxArduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linux
 
Raspberry piuln2803
Raspberry piuln2803Raspberry piuln2803
Raspberry piuln2803
 
Curs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelCurs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcel
 
Curs gratuitarduino lectia3-proiectesimple-1
Curs gratuitarduino lectia3-proiectesimple-1Curs gratuitarduino lectia3-proiectesimple-1
Curs gratuitarduino lectia3-proiectesimple-1
 
Asamblare statie meteo
Asamblare statie meteoAsamblare statie meteo
Asamblare statie meteo
 
Arduino uno rfidid-12
Arduino uno rfidid-12Arduino uno rfidid-12
Arduino uno rfidid-12
 
Arduino multiplexarea le-durilor
Arduino multiplexarea le-durilorArduino multiplexarea le-durilor
Arduino multiplexarea le-durilor
 
Arduino sht11
Arduino sht11Arduino sht11
Arduino sht11
 
Curs gratuitarduino lectia2-senzorianalogici
Curs gratuitarduino lectia2-senzorianalogiciCurs gratuitarduino lectia2-senzorianalogici
Curs gratuitarduino lectia2-senzorianalogici
 
Arduino shield wifi-monitorizarelocuinta
Arduino shield wifi-monitorizarelocuintaArduino shield wifi-monitorizarelocuinta
Arduino shield wifi-monitorizarelocuinta
 
Arduino releemodio2
Arduino releemodio2Arduino releemodio2
Arduino releemodio2
 
Arduino wifi shield-drivermotoarel298
Arduino wifi shield-drivermotoarel298Arduino wifi shield-drivermotoarel298
Arduino wifi shield-drivermotoarel298
 
Curs gratuitarduino lectia12-conexiunewifi-googledocs
Curs gratuitarduino lectia12-conexiunewifi-googledocsCurs gratuitarduino lectia12-conexiunewifi-googledocs
Curs gratuitarduino lectia12-conexiunewifi-googledocs
 
Raspberry pi firmata - arduino
Raspberry pi   firmata - arduinoRaspberry pi   firmata - arduino
Raspberry pi firmata - arduino
 
Raspberry pi wirelesshotspot
Raspberry pi wirelesshotspotRaspberry pi wirelesshotspot
Raspberry pi wirelesshotspot
 
Arduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecretArduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecret
 
Arduino mod-gps
Arduino mod-gpsArduino mod-gps
Arduino mod-gps
 

Similar to Raspberry pi lcd-shield20x4

Ins and Outs of GPIO Programming
Ins and Outs of GPIO ProgrammingIns and Outs of GPIO Programming
Ins and Outs of GPIO ProgrammingICS
 
Interfacing two wire adc0831 to raspberry pi2 / Pi3
Interfacing two wire adc0831 to raspberry pi2 / Pi3Interfacing two wire adc0831 to raspberry pi2 / Pi3
Interfacing two wire adc0831 to raspberry pi2 / Pi3Dnyanesh Patil
 
Openwrt, linux e GPIO al LinuxDay 2010 Roma
Openwrt, linux e GPIO al LinuxDay 2010 RomaOpenwrt, linux e GPIO al LinuxDay 2010 Roma
Openwrt, linux e GPIO al LinuxDay 2010 RomaClaudio Mignanti
 
Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !Dobrica Pavlinušić
 
Raspberry pi technical documentation
Raspberry pi technical documentationRaspberry pi technical documentation
Raspberry pi technical documentationGR Techno Solutions
 
IoT with openHAB on pcDuino3B
IoT with openHAB on pcDuino3BIoT with openHAB on pcDuino3B
IoT with openHAB on pcDuino3BJingfeng Liu
 
manual_2020_Cyber Physical System.pdf
manual_2020_Cyber Physical System.pdfmanual_2020_Cyber Physical System.pdf
manual_2020_Cyber Physical System.pdfssuserc5ee4c
 
Raspberry Pi - HW/SW Application Development
Raspberry Pi - HW/SW Application DevelopmentRaspberry Pi - HW/SW Application Development
Raspberry Pi - HW/SW Application DevelopmentCorley S.r.l.
 
Introduction To Raspberry Pi with Simple GPIO pin Control
Introduction To Raspberry Pi with Simple GPIO pin ControlIntroduction To Raspberry Pi with Simple GPIO pin Control
Introduction To Raspberry Pi with Simple GPIO pin ControlPradip Bhandari
 
Project ACRN GPIO mediator introduction
Project ACRN GPIO mediator introductionProject ACRN GPIO mediator introduction
Project ACRN GPIO mediator introductionProject ACRN
 
CPE439FinalProjectReport
CPE439FinalProjectReportCPE439FinalProjectReport
CPE439FinalProjectReportJordan Read
 
Hands-on Labs: Raspberry Pi 2 + Windows 10 IoT Core
Hands-on Labs: Raspberry Pi 2 + Windows 10 IoT CoreHands-on Labs: Raspberry Pi 2 + Windows 10 IoT Core
Hands-on Labs: Raspberry Pi 2 + Windows 10 IoT CoreAndri Yadi
 
Getting Started With Raspberry Pi - UCSD 2013
Getting Started With Raspberry Pi - UCSD 2013Getting Started With Raspberry Pi - UCSD 2013
Getting Started With Raspberry Pi - UCSD 2013Tom Paulus
 
ScratchGPIO, Raspberry Pi & BerryClip
ScratchGPIO, Raspberry Pi & BerryClipScratchGPIO, Raspberry Pi & BerryClip
ScratchGPIO, Raspberry Pi & BerryClipDavid Dryden
 
[Forward4 Webinar 2016] Building IoT Prototypes w/ Raspberry Pi
[Forward4 Webinar 2016] Building IoT Prototypes w/ Raspberry Pi [Forward4 Webinar 2016] Building IoT Prototypes w/ Raspberry Pi
[Forward4 Webinar 2016] Building IoT Prototypes w/ Raspberry Pi Tomomi Imura
 

Similar to Raspberry pi lcd-shield20x4 (20)

Ins and Outs of GPIO Programming
Ins and Outs of GPIO ProgrammingIns and Outs of GPIO Programming
Ins and Outs of GPIO Programming
 
Interfacing two wire adc0831 to raspberry pi2 / Pi3
Interfacing two wire adc0831 to raspberry pi2 / Pi3Interfacing two wire adc0831 to raspberry pi2 / Pi3
Interfacing two wire adc0831 to raspberry pi2 / Pi3
 
Openwrt, linux e GPIO al LinuxDay 2010 Roma
Openwrt, linux e GPIO al LinuxDay 2010 RomaOpenwrt, linux e GPIO al LinuxDay 2010 Roma
Openwrt, linux e GPIO al LinuxDay 2010 Roma
 
Atomic pi Mini PC
Atomic pi Mini PCAtomic pi Mini PC
Atomic pi Mini PC
 
Atomic PI apug
Atomic PI apugAtomic PI apug
Atomic PI apug
 
Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !
 
Raspberry pi technical documentation
Raspberry pi technical documentationRaspberry pi technical documentation
Raspberry pi technical documentation
 
IoT with openHAB on pcDuino3B
IoT with openHAB on pcDuino3BIoT with openHAB on pcDuino3B
IoT with openHAB on pcDuino3B
 
Raspberry pi
Raspberry pi Raspberry pi
Raspberry pi
 
4. GPIO Access
4. GPIO Access4. GPIO Access
4. GPIO Access
 
manual_2020_Cyber Physical System.pdf
manual_2020_Cyber Physical System.pdfmanual_2020_Cyber Physical System.pdf
manual_2020_Cyber Physical System.pdf
 
Raspberry Pi - HW/SW Application Development
Raspberry Pi - HW/SW Application DevelopmentRaspberry Pi - HW/SW Application Development
Raspberry Pi - HW/SW Application Development
 
Introduction To Raspberry Pi with Simple GPIO pin Control
Introduction To Raspberry Pi with Simple GPIO pin ControlIntroduction To Raspberry Pi with Simple GPIO pin Control
Introduction To Raspberry Pi with Simple GPIO pin Control
 
Project ACRN GPIO mediator introduction
Project ACRN GPIO mediator introductionProject ACRN GPIO mediator introduction
Project ACRN GPIO mediator introduction
 
CPE439FinalProjectReport
CPE439FinalProjectReportCPE439FinalProjectReport
CPE439FinalProjectReport
 
Hands-on Labs: Raspberry Pi 2 + Windows 10 IoT Core
Hands-on Labs: Raspberry Pi 2 + Windows 10 IoT CoreHands-on Labs: Raspberry Pi 2 + Windows 10 IoT Core
Hands-on Labs: Raspberry Pi 2 + Windows 10 IoT Core
 
Raspberry pi led blink
Raspberry pi led blinkRaspberry pi led blink
Raspberry pi led blink
 
Getting Started With Raspberry Pi - UCSD 2013
Getting Started With Raspberry Pi - UCSD 2013Getting Started With Raspberry Pi - UCSD 2013
Getting Started With Raspberry Pi - UCSD 2013
 
ScratchGPIO, Raspberry Pi & BerryClip
ScratchGPIO, Raspberry Pi & BerryClipScratchGPIO, Raspberry Pi & BerryClip
ScratchGPIO, Raspberry Pi & BerryClip
 
[Forward4 Webinar 2016] Building IoT Prototypes w/ Raspberry Pi
[Forward4 Webinar 2016] Building IoT Prototypes w/ Raspberry Pi [Forward4 Webinar 2016] Building IoT Prototypes w/ Raspberry Pi
[Forward4 Webinar 2016] Building IoT Prototypes w/ Raspberry Pi
 

More from Iulius Bors

Raspberry pi timelapse
Raspberry pi timelapseRaspberry pi timelapse
Raspberry pi timelapseIulius Bors
 
Programare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificialaProgramare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificialaIulius Bors
 
Motoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriverMotoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriverIulius Bors
 
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...Iulius Bors
 
Curs gratuitarduino lectia11-muzicacuarduino
Curs gratuitarduino lectia11-muzicacuarduinoCurs gratuitarduino lectia11-muzicacuarduino
Curs gratuitarduino lectia11-muzicacuarduinoIulius Bors
 
Curs gratuitarduino lectia10-lcd-uri
Curs gratuitarduino lectia10-lcd-uriCurs gratuitarduino lectia10-lcd-uri
Curs gratuitarduino lectia10-lcd-uriIulius Bors
 
Curs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosfericiCurs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosfericiIulius Bors
 
Curs gratuitarduino lectia8-comunicareethernet
Curs gratuitarduino lectia8-comunicareethernetCurs gratuitarduino lectia8-comunicareethernet
Curs gratuitarduino lectia8-comunicareethernetIulius Bors
 
Curs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistantaCurs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistantaIulius Bors
 
Curs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia6-senzorifortaCurs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia6-senzorifortaIulius Bors
 
Curs gratuitarduino lectia4-modalitati decomunicare
Curs gratuitarduino lectia4-modalitati decomunicareCurs gratuitarduino lectia4-modalitati decomunicare
Curs gratuitarduino lectia4-modalitati decomunicareIulius Bors
 
Curs gratuitarduino lectia1-arduinoblink
Curs gratuitarduino lectia1-arduinoblinkCurs gratuitarduino lectia1-arduinoblink
Curs gratuitarduino lectia1-arduinoblinkIulius Bors
 
Cum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiCum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiIulius Bors
 

More from Iulius Bors (13)

Raspberry pi timelapse
Raspberry pi timelapseRaspberry pi timelapse
Raspberry pi timelapse
 
Programare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificialaProgramare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificiala
 
Motoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriverMotoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriver
 
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
 
Curs gratuitarduino lectia11-muzicacuarduino
Curs gratuitarduino lectia11-muzicacuarduinoCurs gratuitarduino lectia11-muzicacuarduino
Curs gratuitarduino lectia11-muzicacuarduino
 
Curs gratuitarduino lectia10-lcd-uri
Curs gratuitarduino lectia10-lcd-uriCurs gratuitarduino lectia10-lcd-uri
Curs gratuitarduino lectia10-lcd-uri
 
Curs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosfericiCurs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosferici
 
Curs gratuitarduino lectia8-comunicareethernet
Curs gratuitarduino lectia8-comunicareethernetCurs gratuitarduino lectia8-comunicareethernet
Curs gratuitarduino lectia8-comunicareethernet
 
Curs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistantaCurs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistanta
 
Curs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia6-senzorifortaCurs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia6-senzoriforta
 
Curs gratuitarduino lectia4-modalitati decomunicare
Curs gratuitarduino lectia4-modalitati decomunicareCurs gratuitarduino lectia4-modalitati decomunicare
Curs gratuitarduino lectia4-modalitati decomunicare
 
Curs gratuitarduino lectia1-arduinoblink
Curs gratuitarduino lectia1-arduinoblinkCurs gratuitarduino lectia1-arduinoblink
Curs gratuitarduino lectia1-arduinoblink
 
Cum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiCum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypi
 

Raspberry pi lcd-shield20x4

  • 1. Textul si imaginile din acest document sunt licentiate Attribution-NonCommercial-NoDerivs CC BY-NC-ND Codul sursa din acest document este licentiat Public-Domain Esti liber sa distribui acest document prin orice mijloace consideri (email, publicare pe website / blog, printare, sau orice alt mijloc), atat timp cat nu aduci nici un fel de modificari acestuia. Codul sursa din acest document poate fi utilizat in orice fel de scop, de natura comerciala sau nu, fara nici un fel de limitari.
  • 2. Raspberry PI si LCD Shield 20x4 Shield-ul LCD 20x4 functioneaza perfect impreuna cu placa Raspberry PI. Shield-ul se poate conecta direct la portul placii sau prin intermediul unei panglici cobbler. Placa expune in acelasi timp si toti pinii GPIO ai Raspberry PI (conectorul 2X13, nepopulat, de langa LCD). In acest mod, poti avea acces la oricare pin GPIO doresti si in acelasi timp poti folosi si LCD-ul. In acest tutorial vei utiliza shield-ul LCD 20x4 pentru a afisa data/ora, adresa IP a placii, temperatura si nivelul de utilizare al procesorului. Pentru a scoate in evidenta utilitatea placii Raspberry PI, programul sintetizeaza vocal parametrii de mai sus. Pentru acest tutorial ai nevoie de urmatoarele componente: • O placa Raspberry PI. • Un shield LCD 20x4. • O boxa audio cu alimentare prin USB. • O sursa de alimentare pentru Raspberry PI (5V). Cum procedez ? 1. Conecteaza shield-ul LCD la placa Raspberry PI. 2. Conecteaza mufa USB a boxei la unul din porturile USB ale placii. 3. Conecteaza mufa jack a boxei la iesirea audio a placii Raspberry. 4. Alimenteaza Raspberry PI si logheaza-te la placa prin Putty sau orice alt utilitar doresti. Pachetul Python RPi.GPIO 0.4.1a. Inainte de a executa programul listat mai jos trebuie sa instalezi pachetul python RPi.GPIO 0.4.1a. Programul shield-ului depinde de acest pachet. 1. Descarca modulul prin comanda: http://www.robofun.ro/forum
  • 3. sudo wget https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO- 0.4.1a.tar.gz 2. Dezarhiveaza-l prin comanda: sudo tar -xvf Rpi.GPIO-0.4.1a.tar.gz 3. Schimba locatia in noul fisier: cd Rpi.GPIO-0.4.1a 4. Urmeaza sa il instalezi prin comanda: sudo python setup.py install Programul shield-ului. 1. Creeaza un fisier cu numele lcd20x4. sudo mkdir lcd20x4 2. Deschide editorul nano si copiaza codul sursa listat mai jos. Dupa ce l-ai copiat, salveaza-l cu CTRL X si Y: sudo nano lcd.py 3. Executa programul cu comanda: sudo python lcd.py 4. Pe afisaj vei obtine urmatoarele linii, ca in imaginile de mai jos, iar sintetizorul va reda vocal parametrii: http://www.robofun.ro/forum
  • 5. import os import subprocess import RPi.GPIO as GPIO import time from datetime import datetime import socket import fcntl import struct LCD_RS = 25 LCD_E = 24 LCD_D4 = 23 LCD_D5 = 17 LCD_D6 = 18 LCD_D7 = 22 LED_ON = 15 http://www.robofun.ro/forum
  • 6. LCD_WIDTH = 20 LCD_CHR = True LCD_CMD = False LCD_LINE_1 = 0x80 LCD_LINE_2 = 0xC0 LCD_LINE_3 = 0x94 LCD_LINE_4 = 0xD4 E_PULSE = 0.00005 E_DELAY = 0.00005 def main(): GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(LCD_E, GPIO.OUT) GPIO.setup(LCD_RS, GPIO.OUT) GPIO.setup(LCD_D4, GPIO.OUT) GPIO.setup(LCD_D5, GPIO.OUT) GPIO.setup(LCD_D6, GPIO.OUT) GPIO.setup(LCD_D7, GPIO.OUT) GPIO.setup(LED_ON, GPIO.OUT) lcd_init() while 1: lcd_byte(LCD_LINE_1, LCD_CMD) lcd_string("ROBOFUN.RO",2) lcd_byte(LCD_LINE_2, LCD_CMD) lcd_string("Raspberry PI",2) lcd_byte(LCD_LINE_3, LCD_CMD) lcd_string("LCD Shield", 2) lcd_byte(LCD_LINE_4, LCD_CMD) lcd_string("20x4", 2) os.system('espeak -v en "{0}"'.format('www.robofun.ro introducing')) os.system('espeak -v en "{0}"'.format('the new Raspberry PI')) os.system('espeak -v en "{0}"'.format('20 characters by 4 lines LCD Shield')) http://www.robofun.ro/forum
  • 7. for i in range(0,50): lcd_byte(LCD_LINE_1, LCD_CMD) textTime = datetime.now().strftime('%b %d %H:%M') lcd_string(textTime, 2) lcd_byte(LCD_LINE_2, LCD_CMD) textIP = get_ip_add('eth0') lcd_string(textIP, 2) lcd_byte(LCD_LINE_3, LCD_CMD) textTemp = 'CPU Temp %s C' % (get_cpu_temp()) lcd_string(textTemp, 2) lcd_byte(LCD_LINE_4, LCD_CMD) textCpuUse = 'CPU Use %s' % (get_cpu_use()) + '%' lcd_string(textCpuUse, 2) os.system('espeak -v en "{0}"'.format('The temperature is %s degrees Celsius' % (get_cpu_temp()))) os.system('espeak -v en "{0}"'.format('IP adress is %s' % textIP)) os.system('espeak -v en "{0}"'.format('The procesor is being used at %s percent' % get_cpu_use())) os.system('espeak -v en "{0}"'.format('The time is %s' % textTime)) time.sleep(0.2) http://www.robofun.ro/forum
  • 8. def get_cpu_use(): return(str(os.popen("top -n1 | awk '/Cpu(s):/ {print $2}'").readline().strip())) def get_cpu_temp(): res = os.popen('vcgencmd measure_temp').readline() return (res.replace("temp="," ").replace("'Cn","")) def get_ip_add(ifname): s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM) return socket.inet_ntoa(fcntl.ioctl(s.fileno(),0x8915,struct.pack('256s', ifname[:15]))[20:24]) def lcd_init(): lcd_byte(0x33,LCD_CMD) lcd_byte(0x32,LCD_CMD) lcd_byte(0x28,LCD_CMD) lcd_byte(0x0C,LCD_CMD) lcd_byte(0x06,LCD_CMD) lcd_byte(0x01,LCD_CMD) def lcd_string(message,style): if style==1: message = message.ljust(LCD_WIDTH," ") elif style==2: message = message.center(LCD_WIDTH," ") elif style==3: message = message.rjust(LCD_WIDTH," ") for i in range(LCD_WIDTH): lcd_byte(ord(message[i]),LCD_CHR) http://www.robofun.ro/forum
  • 9. def lcd_byte(bits, mode): GPIO.output(LCD_RS, mode) GPIO.output(LCD_D4, False) GPIO.output(LCD_D5, False) GPIO.output(LCD_D6, False) GPIO.output(LCD_D7, False) if bits&0x10==0x10: GPIO.output(LCD_D4, True) if bits&0x20==0x20: GPIO.output(LCD_D5, True) if bits&0x40==0x40: GPIO.output(LCD_D6, True) if bits&0x80==0x80: GPIO.output(LCD_D7, True) time.sleep(E_DELAY) GPIO.output(LCD_E, True) time.sleep(E_PULSE) GPIO.output(LCD_E, False) time.sleep(E_DELAY) GPIO.output(LCD_D4, False) GPIO.output(LCD_D5, False) GPIO.output(LCD_D6, False) GPIO.output(LCD_D7, False) if bits&0x01==0x01: GPIO.output(LCD_D4, True) if bits&0x02==0x02: GPIO.output(LCD_D5, True) if bits&0x04==0x04: GPIO.output(LCD_D6, True) if bits&0x08==0x08: GPIO.output(LCD_D7, True) time.sleep(E_DELAY) GPIO.output(LCD_E, True) time.sleep(E_PULSE) GPIO.output(LCD_E, False) time.sleep(E_DELAY) if __name__ == '__main__': main() http://www.robofun.ro/forum