Differenze tra le versioni di "Nokia 5110 LCD 84x48 px"

Da raspibo.
Jump to navigation Jump to search
(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...')
 
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]]

Versione delle 03:45, 28 mar 2013

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

Display nokia 5110 fronte Display nokia 5110 retro

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.

Collegamento Nokia LCD e 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:

Hello RaspiBo

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:

RasPiBO Wiki


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:

Temperatura

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:

Uptime, ip e disegno