Raspberry Pi SenseHat IP riprende alcuni articoli dedicati a questa shield per RPi.
In questo articolo imparerai come visualizzare sulla matrice di led della shield SenseHat l’indirizzo Ip ricevuto in fase di negoziazione DHCP.
Ho realizzato un piccolo video demo in cui vedi apparire l’indirizzo ip come scritta scorrevole:
Nel video l’indirizzo mostrato sulla matrice di led è quello della mia rete dedicata agli esperimenti con Arduino e Raspberry Pi.
Il programma python
come hai letto nei precedenti articoli dedicati a questa stessa shield:
per ingaggiare l’uso della matrice di led è necessario python per cui potrai scrivere un semplice programma in python che recupera l’indirizzo IP assegnato alla scheda di rete e lo trasforma in testo scorrevole:
il file ipText.py fa uso sia della libreria socket sia della sense_hat.
La prima libreria importata “socket” ti permette di interagire con la parte network del sistema operativo, mentre la seconda “sense_hat” la hai già incrociata negli scorsi articoli per il controllo della shield.
Descrizione del codice python
Sebbene il codice scritto per raspberry Pi SenseHat IP non sia particolarmente complesso lo riporto di seguito per aggiungervi una breve descrizione:
import socket from sense_hat import SenseHat sense = SenseHat() sense.clear() s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(("8.8.8.8", 80)) #print(s.getsockname()[0]) sense.show_message(s.getsockname()[0],text_colour=[0,0,255]) s.close()
le prime due linee 01-02: ti permettono di importare le due librerie che ti serviranno per la realizzazione del progetto.
Come hai letto nel paragrafo precedente la loro funzione è legata al recupero dell’indirizzo IP assegnato e la sua visualizzazione.
linee 04-05: inizializzi l’istanza sense della libreria sense_hat;
linea 07: creai il socket TCp usando il metodo omonimo “socket()” della libreria socket, so che potrebbe sembrare un gioco di parole ma è il modo in cui puoi istanziare “s”. Il metodo socket() prevede due parametri:
- address family
- socket type
specificando rispettivamente: socket.AF_INET e socket.SOCK_STREAM stai indicando come famiglia di indirizzi l’IP4 e come tipo di socket TCP;
linea 08: il metodo connect permette di eseguire una connessione, nell’esempio ho scelto di eseguire la connessione ad un indirizzo sicuramente attivo “8.8.8.8” che è uno dei dns di Google.
Una volta eseguita la connessione “s” può essere interrogata per chiedere tutte le informazioni che desideri, nel progetto raspberry pi sensehat IP ti basta l’indirizzo IP ricevuto dal DHCP della tua rete e per ottenerlo puoi usare il metodo getsockname()[0] ossia l’indica “0” dell’array di risposta che otterresti con tale metodo.
linea 10: usando il metodo show_message() a cui passi come primo valore il risultato della getsockname() e come secondo il colore del testo “blue” con cui desideri scrivere sul display a matrice di led,
linea 12: chiudi la connessione in quanto non ti serve resti aperta.
Lista dei programmi python
nella directory su raspberry in cui ho inserito i programmi e gli esempi python adesso compare anche questo:
e sto realizzando un repository sul mio gitHub in cui inserirò tutti i files python che sto sviluppando per questa serie di tutorial.
Esegui il programma python
L’esecuzione del programma appena visto è molto semplice, come per i precedenti esempi, puoi semplicemente lanciare:
ed il tuoi raspberry Pi sensehat IP sarà visualizzato sulla matrice di led.