Differenze tra le versioni di "Nokia 5110 LCD 84x48 px"
(Creata pagina con 'In questa pagina spiego come collegare al Raspberry questo display che si trova a pochi euro (io l'ho preso a 4 euro da un famoso sito cinese). ==Hardware== [[File:nokia_lcd...') |
|||
(Una versione intermedia di un altro utente non mostrate) | |||
Riga 9: | Riga 9: | ||
Questo schermo si pilota tramite l'interfaccia SPI. | Questo schermo si pilota tramite l'interfaccia SPI. | ||
− | Nell'immagine successiva viene mostrato come deve essere collegato al Raspberry. | + | Nell'immagine (creata con Fritzing) successiva viene mostrato come deve essere collegato al Raspberry. |
[[File:nokia_lcd_rasp.png|Collegamento Nokia LCD e Raspberry]] | [[File:nokia_lcd_rasp.png|Collegamento Nokia LCD e Raspberry]] | ||
Riga 168: | Riga 168: | ||
[[File:nokia_lcd_demo_4.jpg|Uptime, ip e disegno]] | [[File:nokia_lcd_demo_4.jpg|Uptime, ip e disegno]] | ||
+ | |||
+ | |||
+ | [[Category:Progetti]] |
Versione attuale delle 22:55, 25 set 2014
In questa pagina spiego come collegare al Raspberry questo display che si trova a pochi euro (io l'ho preso a 4 euro da un famoso sito cinese).
Hardware
Vi faccio notare che mi è arrivato già saldato come vedete nelle foto.
Questo schermo si pilota tramite l'interfaccia SPI.
Nell'immagine (creata con Fritzing) successiva viene mostrato come deve essere collegato al Raspberry.
Software (Raspbian)
Prima di tutto dobbiamo abilitare il modulo SPI che di default viene inserito nella blacklist
sudo vi /etc/modprobe.d/raspi-blacklist.conf
commentiamo la linea contenente "spi-bcm2708"
#blacklist spi-bcm2708
Al prossimo riavvio il modulo verrà caricato, per abilitarlo subito senza riavviare:
sudo modprobe spi-bcm2708
Installiamo il necessario:
sudo apt-get install python-imaging python-imaging-tk python-pip python-dev sudo pip install spidev sudo pip install wiringpi
L'ultima cosa è la libreria nokiaSPI.py che ci facilita molto, per adesso purtroppo non è presente nei repository e dobbiamo scaricarla da qua [[1]], basta copiare tutto il codice relativo alla libreria e salvarlo in un file chiamato "nokiaSPI.py".
Esempi
Semplice testo
Sorgente Python:
import nokiaSPI lcd = nokiaSPI.NokiaSPI() #Puliamo lo schermo lcd.cls() #Impostiamo la luminosita' dei led lcd.led(500) #Scriviamo del testo lcd.text("Hello RaspiBo")
Risultato:
Immagine e testo
import nokiaSPI from PIL import Image,ImageDraw lcd = nokiaSPI.NokiaSPI() #Puliamo lo schermo lcd.cls() #Impostiamo la luminosita' dei led lcd.led(500) #carichiamo il logo im = Image.open("raspibo_logo.png") #ridimensioniamo l'immagine per la misura del display im.thumbnail((84,48)) #la convertiamo in bianco e nero im = im.convert("1") #la stampiamo sul display lcd.show_image(im) #sposiamo il cursore (riga, colonna) lcd.gotorc(0,5) lcd.text("RasPiBO") lcd.gotorc(1,9) lcd.text("Wiki") lcd.gotorc(2,4) lcd.text("non-corso") lcd.gotorc(3,5) lcd.text("libero") lcd.gotorc(4,8) lcd.text("e") lcd.gotorc(5,5) lcd.text("pubblico")
Risultato:
Font diversi, temperatura
Per lo script della temperatura leggete qua
import nokiaSPI, temp from PIL import Image,ImageDraw,ImageFont lcd = nokiaSPI.NokiaSPI() #Puliamo lo schermo lcd.cls() #Impostiamo la luminosita' dei led lcd.led(500) #Prendiamo la temperatura temperatura = str(temp.getTemp()) #Creazione di un'immagine in bianco-nero im = Image.new('1', (84,48)) #Spazio per disegnare draw = ImageDraw.Draw(im) #Importiamo dei font font = ImageFont.truetype("/usr/share/fonts/truetype/freefont/FreeSans.ttf", 11) font2 = ImageFont.truetype("/usr/share/fonts/truetype/freefont/FreeSerif.ttf", 12) font3 = ImageFont.truetype("/usr/share/fonts/truetype/freefont/FreeMonoBold.ttf", 14) font4 = ImageFont.truetype("/usr/share/fonts/truetype/freefont/FreeMonoBold.ttf", 16) #Scriviamo sullo spazio da disegno, il primo parametro e' la posizione (x,y) in pixel draw.text((0,0), "La temperatura:",font=font, fill=1) draw.text((0,10), temperatura,font=font2, fill=1) draw.text((0,20), temperatura,font=font3, fill=1) draw.text((0,30), temperatura,font=font4, fill=1) #Stampiamo sullo schermo l'immagine creata lcd.show_image(im)
Risultato:
Disegno
import subprocess, nokiaSPI from PIL import Image,ImageDraw, ImageFont from datetime import timedelta def getUptime(): with open('/proc/uptime', 'r') as f: uptime_seconds = float(f.readline().split()[0]) uptime_string = str(timedelta(seconds = uptime_seconds)) return ':'.join(str(uptime_string).split(':')[:2]) def getIp(): arg='ip route list' p=subprocess.Popen(arg,shell=True,stdout=subprocess.PIPE) data = p.communicate() sdata = data[0].split() ipaddr = sdata[ sdata.index('src')+1 ] return ipaddr lcd = nokiaSPI.NokiaSPI() lcd.led(300) im = Image.new('1', (84,48)) draw = ImageDraw.Draw(im) #####Inizio disegno smile##### #Contorno e occhi draw.ellipse((10,30,30,47), outline=1) draw.ellipse((15,35,17,37), outline=1) draw.ellipse((23,35,25,37), outline=1) #Bocca, punto per punto draw.point((17,41),fill='white') draw.point((18,42),fill='white') draw.point((19,42),fill='white') draw.point((20,42),fill='white') draw.point((21,42),fill='white') draw.point((22,42),fill='white') draw.point((23,41),fill='white') #####fine disegno smile##### font = ImageFont.truetype("/usr/share/fonts/truetype/freefont/FreeSans.ttf", 10) font2 = ImageFont.truetype("/usr/share/fonts/truetype/freefont/FreeMonoBold.ttf", 10) #Scriviamo del testo draw.text((15,0), "raspiInfo",font=font2, fill=1) draw.text((0,10), "Uptime: "+getUptime(),font=font, fill=1) draw.text((0,20), "Ip: "+getIp(),font=font, fill=1) draw.text((40,36), "by tavy", font=font2, fill=1) #Puliamo lo schermo e stampiamo l'immagine lcd.cls() lcd.show_image(im)
Risultato: