In questo breve articolo vedremo come è possibile pilotare un display da 16X2 caratteri attraverso la porta i2c bus del nostro Raspberry Pi

L’utilizzo di questo tipo di bus ci permette di controllare molteplici periferiche, anche del medesimo tipo (più display o più sensori di movimento) utilizzando un numero ridotto di pin (SLA e SLD), vediamo cosa è necessario fare.

Iniziamo con le connessioni elettriche secondo lo schema riportato di seguito:

Una volta connessa la periferica dalla command line di Rasprerry digitiamo

sudo raspi-config

e selezioniamo: Interfacing Options -> Select

P5 I2C-> Select

Selezionare <Si>

Selezionare <OK>

ora selezioniamo <Finish>

dopo di che riavviamo il Raspberry

sudo reboot

Al riavvio andiamo ad inserire in /etc/modules le stringhe necessarie per caricare il moduli di gestione del bus, digitiamo quindi:

sudo nano /etc/modules 

ed inseriamo, se non sono già presenti nel file, le righe 

i2c-bcm2708

i2c-dev

A questo punto possiamo procedere con l’installazione delle librerie utili alla gestione del bus

sudo apt-get update

sudo apt-get install python-smbus i2c-tools -y

sudo reboot

 Al riavvio controlliamo che i moduli siano stati caricati correttamente dal sistema operativo, digitiamo:

lsmod | grep i2c_

Ed il risultato dovrebbe essere qualcosa di simile

i2c-bcm2708

i2c-dev

se è presente i2c-bcm2708 significa che il modulo è stato caricato correttamente e quindi possiamo passare ad individuare l’indirizzo della la periferica che vogliamo controllare. A seconda del modello di Raspberry digitiamo

sudo i2cdetect -y 1


o


sudo i2cdetect -y 0


 

per ottenere un output simile

 

0 1  2  3  4  5  6  7  8  9  a  b  c  d  e  f

00: — — — — — — — — — — — — —

10: — — — — — — — — — — — — — — — —

20: — — — — — — — — — — — — — — — —

30: — — — — — — — — — — — — — — — 3f

40: — — — — — — — — — — — — — — — —

50: — — — — — — — — — — — — — — — —

60: — — — — — — — — — — — — — — — —

70: — — — — — — — —

 se non sono presenti numeri tra le righe ma sono presenti solo trattini “_ _” significa probabilmente che la periferica non è collegata correttamente o comunque non è raggiungibile tramite il bus se invece si vede uno o più numeri esadecimale ciò significa che quelli sono gli indirizzi di memoria da inserire negli script come indirizzo di memoria delle periferiche. Nel nostro caso 3f è l’indirizzo del display che intendiamo controllare.

Dal terminale digitiamo

wget https://www.mynetbrick.com/risorse/i2c_display_drive.py

sudo python i2c_display_drive.py

Se non sono stati commessi errori il tuo diplai dovrebbe mostrare il messaggio

  Hello World

 -***  **  ***-

 Tutorial by

mynetbrick.com


Se il tuo Raspberry Pi non mostra alcun errore di runtime, ma l'LCD non visualizza ancora alcun messaggio, è probabbile che debba essere regolata la vite di contrasto sul retro del display LCD, ruotala fino a far apparire il messaggio su display.

.