Internet of Things (IoT) con il Raspberry Pi 3

L’Internet delle Cose, o IoT, immagina uno scenario in cui una moltitudine di sensori, attuatori, e in generale dispositivi elettronici, sono connessi alla rete, interagendo e scambiando dati tra di loro. La board Raspberry Pi 3 possiede tutte le caratteristiche tecniche necessarie per implementare in modo soddisfacente anche le più stringenti applicazioni di IoT, soprattutto se supportato da un ambiente di sviluppo integrato specifico per questo tipo di applicazioni, come l’IDE Wyliodrin STUDIO

Introduzione

Il mondo dell’Internet of Things ha subito recentemente una crescita considerevole, cominciando a diffondersi sempre di più tra le applicazioni del mondo reale e industriale. Il fenomeno dell’Industry 4.0 ha sicuramente contribuito significativamente alla diffusione delle applicazioni IoT, i cui benefici, in termini di riduzione dei costi, maggiore flessibilità produttiva, e migliore gestione del flusso della produzione, sono diventati tangibili.

Perchè allora non pensare di utilizzare una normale scheda Raspberry Pi 3 per implementare un’applicazione IoT? L’idea è valida e praticabile, anche se comporterà un certo sforzo soprattutto a livello di programmazione e sviluppo software. Uno dei linguaggi più comunemente utilizzati sul Raspberry Pi è il Python, ma questo richiede una certa esperienza e background programmativo prima di portare dei risultati concreti.

Il tool di sviluppo Wyliodrin

Tuttavia, esiste una valida alternativa a Python, rappresentata da un ambiente di sviluppo di semplice e facile utilizzo, anche per i principianti: Wyliodrin. Si tratta di una piattaforma di sviluppo open source, interamente basata sul web (viene eseguita all’interno del browser internet Chrome), espressamente progettata per la programmazione e il monitoraggio di dispositivi embedded come Raspberry Pi, Arduino, e altri ancora. In Figura 1 possiamo osservare una screenshot relativa a una fase di configurazione della board Raspberry Pi eseguita tramite lo strumento di sviluppo Wyliodrin. Prima di iniziare a scrivere il codice, infatti, occorre collegare il dispositivo embedded al proprio account Wyliodrin.

Figura 1: una screenshot relativa all’IDE Wyliodrin

Wyliodrin è uno strumento di sviluppo molto semplice da utilizzare, basato su un linguaggio di programmazione visuale di tipo “drag & drop” molto simile all’ambiente Scratch. Nel corso dell’articolo vedremo come configurare Wyliodrin per la scheda Raspberry Pi, e come programmare il dispositivo sia in modo “visuale”, utilizzando l’IDE Wyliodrin, che attraverso Python. In precedenza abbiamo detto che Wyliodrin è uno strumento open source, ma come sappiamo ciò non implica necessariamente che il suo utilizzo sia completamente gratuito. Più precisamente, esistono più livelli (o profili) di utilizzo dello strumento, con funzionalità (e minor numero di restrizioni) via via crescenti. L’account free (completamente gratuito) limita l’utilizzo del tool a massimo due dispositivi hardware e massimo tre progetti creati attraverso l’interfaccia web. Tuttavia, se si utilizza l’applicazione basata su Chrome (Wyliodrin STUDIO), non esiste più alcuna limitazione sul numero di progetti che possono essere creati offline.

Setup dell’ambiente

Anzitutto, occorre creare sul vostro PC utilizzato per lo sviluppo un account di tipo free a Wyliodrin (le istruzioni seguenti si riferiscono al sistema operativo Ubuntu 16.04). Se non è già presente sul PC, occorre anzitutto installare il browser Chromium, lanciarlo, andare alla pagina www.wyliodrin.com, e cliccare su “Sign up/in". Ci si può anche registrare utilizzando gli account Facebook, Google, oppure GitHub, premendo l’apposito tasto.

Quando appare la schermata principale, cliccare su “Add a device” per iniziare. Successivamente, occorre selezionare il Raspberry Pi come Gadget type, assegnarli una descrizione adatta, e premere su “Next”. Se il collegamento di rete avviene via cavo, premere “Submit”, altrimenti selezionare “Use Wireless” per inserire l’SSID di rete e la password, prima di continuare. A questo punto è possibile scaricare l’immagine (in formato ZIP) di Wyliodrin cliccando sull’apposito link. Mentre si attende il completamento del download, scrollare leggermente verso il basso la pagina, e cliccare sul link “following file” per scaricare il file wyliodrin.json. Entrambi i file scaricati andranno salvati in una stessa cartella (ad esempio “Downloads”). Terminato il download, estrarre il contenuto del file ZIP copiandolo su una scheda microSD già formattata. Prendere nota del nome del device (ad esempio /dev/sdb) associato alla scheda microSD. Aprire poi una finestra terminale e inserire i seguenti comandi:


$ cd Downloads
$ sudo dd if=wyliodrin_raspberry_pi_2016_03_24.img of=/dev/sdb

prestando cura di sostituire “wyliodrin_raspberry_pi_2016_03_24” con il nome effettivo dell’immagine, se differente, e /dev/sdb con il nome del vostro dispositivo. Terminata la copia, aprire Nautilus nella cartella Downloads, e copiare il file wyliodrin.json nel disco di boot, visibile sul lato sinistro. Cliccare quindi sul tasto “Eject” in modo da espellare la scheda microSD in sicurezza.

A questo punto possiamo inserire la scheda nel Raspberry Pi, e accendere la board. Attendere per un paio di minuti, e controllare quindi l’account in Chromium: se tutto è andato per il verso giusto, il Raspberry Pi comparirà come dispositivo online. Occorrerà ora aggiungere alcune librerie al Raspberry Pi, operazione che può essere eseguita da remoto tramite il browser. Cliccate sul tasto “Settings”, e selezionate “Local Shell”. Comparirà un tasto con l’indicazione eth0 (192.168.x.y), dove 192.168.x.y rappresenta l’indirizzo IP del Pi. Cliccando su questo tasto comparirà una nuova finestra, dove può essere eseguito il login usando le credenziali del Pi.

Per aggiungere ad esempio la libreria Sense HAT è sufficiente dare i comandi:


$ sudo apt-get update
$ sudo apt-get install sense-hat
$ sudo reboot

Terminato il reboot, possiamo tornare ad occuparci nuovamente del PC. Potremo creare ed eseguire i progetti direttamente dal browser internet: cliccate su “tour” per familiarizzare velocemente con la nuova interfaccia. Per gli scopi della nostra applicazione, tuttavia, ci concentreremo sull’applicazione Wyliodrin STUDIO, un’estensione di Chromium che consente di gestire i progetti offline, e che dovrete installare tramite il Chrome store. Un’icona apparirà sotto chrome://apps: cliccate su di essa per lanciare Wyliodrin. Comparirà una splash screen: cliccate su “Exit” e poi sul tasto “Connect” nell’angolo in alto a destra della finestra di Wyliodrin. Verrà visualizzato a questo punto, tra le opzioni, il Raspberry Pi: cliccate su di esso per instaurare la connessione. Inserite la username (pi) e password (raspberry): si aprirà una finestra che mostra il layout del connettore di 40 pin presente sulla board. La schermata è suddivisa in cinque tab (Figura 2): Application, Dashboard, Schematics, Pin Layout e Shell.

Figura 2: l’interfaccia di Wyliodrin STUDIO

Il tab Shell consente di accedere al Raspberry Pi da remoto, il tab Application permette di visualizzare e modificare il codice del progetto, mentre il tab Dashboard contiene delle funzionalità utilizzabili per monitorare il Raspberry Pi da remoto. Il tab Schematics opera congiuntamente all’applicazione Fritzing, utilizzabile per disegnare lo schema elettrico del progetto. Si può osservare il tool in azione caricando uno degli script di esempio, come il classico LED Blink.

Sopra i tab sono visibili alcuni tasti: il tasto play/stop permette di eseguire lo script sul Pi, mentre il tasto File Explorer permette di esaminare il contenuto della memoria del Raspberry Pi da remoto (Figura 3). Package Manager elenca invece tutti i moduli JavaScript e Python installati, e fornisce un facile accesso a una selezione di altre librerie non ancora installate, come ad esempio Django, MySQLdb e NTLK (Natural Language Toolkit). Task Manager consente di terminare i processi da remoto, visualizzare le impostazioni relative alla connessione di rete, e disconnettere il dispositivo.

Figura 3: la funzionalità File Explorer consente di trasferire file tra il dispositivo e il PC remoto

Il primo progetto

In questo progetto utilizzeremo Sense HAT e il camera module del Raspberry Pi per creare uno script che scatta delle immagini ogni volta che si muove il joystick del Sense HAT. Non si tratta sicuramente dell’utilizzo più pratico sia dell’HAT che del camera module, ma è un progetto istruttivo per capire cosa si possa fare con questo strumento. In precedenza abbiamo già aggiunto le librerie Sense HAT, ma ora dovremo aprire una shell in Wyliodrin STUDIO per installare le librerie Python relative al camera module del Raspberry Pi, e abilitare il modulo stesso:


$ sudo apt-get update
$ sudo apt-get install python-picamera
$ sudo raspi-config

Scrollate verso il basso e selezionate la voce “6. Enable camera”. Selezionate poi Enable seguito da Finish, ed eseguite un reboot non appena vi verrà richiesto di farlo. Il codice di questo progetto sarà interamente in Python, in quanto Visual Programming non supporta direttamente Sense HAT. Cliccate dunque sul tasto “Create new Application”, assegnate al progetto un nome significativo, lasciate selezionato “Python” come linguaggio, e cliccate su “Create”. Il progetto apparirà nella finestra Projects: cliccate su di esso e apritelo. Verrà visualizzato uno script di esempio: cliccate sul tasto “play” e vedrete apparire le seguenti righe nella console:


python.main.py
Hello
Project exit with error 0

Selezionate tutto il contenuto della finestra e cliccate su “Delete” per rimuoverlo.

Inserite ora il vostro codice, partendo dall’elenco delle librerie utilizzate:


from sense_hat import SenseHat
from time import sleep
import picamera

Procedendo poi con le variabili:


sense = SenseHat()
event = sense.stick.wait_for_event()
camera = picamera.PiCamera()

L’istruzione seguente attende sino a quando viene rilevato un movimento del joystick:


event = sense.stick.wait_for_event()

Mentre queste istruzioni permettono di scattare una foto:


camera.start_preview()
sleep(2)
camera.capture('/home/pi/test.jpg')

Durante l’inserimento del codice, potrete notare come Wyliodrin sia dotato di una funzionalità di autocompletamento, attivabile tramite il tasto Tab. Completato l’inserimento del codice, verificate che il Raspberry Pi sia connesso, e premete quindi il tasto play. Se ora premete o muovete il joystick posto sul retro del Sense HAT, la fotocamera verrà attivata. Se il Raspberry Pi è collegato a uno schermo, sarà possibile osservare la preview della fotocamera, e dopo due secondi la foto verrà scattata. A questo punto nella console Wyliodrin dovrebbe comparire l’indicazione “Project exit with error 0”, indicando che lo script è stato correttamente completato. Potete verificarlo navigando con il File Manager nella cartella home/pi, dove troverete il file test.jpg. Cliccando su questo file, sarà possibile trasferirlo sul PC per ulteriori analisi. Complimenti, avete completato il vostro primo progetto!

Programmazione Visuale

Oltre alla programmazione diretta in Python, Wyliodrin permette di creare il codice tramite un ambiente di programmazione visuale,  semplicemente trascinando e combinando opportunamente alcuni blocchi di codice. Ciò è possibile anche con poche o minime conoscenze di programmazione. Purtroppo, il supporto per il Raspberry Pi è limitato all’interazione diretta con i pin di GPIO e a comandi di base per la fotocamera.

Per iniziare, cliccate su “Create new application”, assegnate un nome al progetto, e cliccate quindi sul menu a tendina Language. Scrollate verso l’alto sino a far comparire la voce Visual. Selezionatela per utilizzare la programmazione visuale nel vostro progetto, e cliccate su “Create”. Aprite quindi il progetto selezionando la relativa icona nel tab Application di Wyliodrin STUDIO. Potrete subito osservare come un paio di blocchi siano già presenti: cliccate sul tasto “Show code”, e vi verrà mostrato il codice Python associato ai blocchi visualizzati. Cliccate poi su ciascun blocco e premete “Delete” per cancellarli. Lo schermo è ora ripulito del codice di default (Figura 4): non ci resta altro da fare che aggiungere i blocchi che compongono la nostra applicazione, seguendo la guida passo-passo che ora illustreremo.

Figura 4: programmazione visuale in Wyliodrin STUDIO

Step 1: aggiunta di un blocco camera

I blocchi disponibili per la Programmazione Visuale sono organizzati in sezioni collocate sul lato sinistro dello schermo: cliccate, nell’ordine, sulle voci di menu “Embedded”, seguito da “Raspberry Pi” e da “Pi Camera” (Figura 4). Apparirà un menu con tre blocchi disponibili: ci serve il primo blocco, quindi dovrete trascinarlo al centro dello schermo. Cliccate poi sul tab “Show code” per visualizzare il codice Python associato al modulo in oggetto (Figura 5).

Figura 5: nel riquadro a destra compare il codice Python associato al blocco selezionato

Step 2: modifica del codice del blocco

Come si può osservare, ogni blocco è composto da due elementi: il comando (command), e una parte in formato testo. Saremmo tentati di premere play, ma il codice non funzionerebbe, almeno nella sua forma attuale. Occorre infatti cliccare all’interno della stringa “photo” e modificarla assegnandole un path valido, come ad esempio /home/pi/photo (Figura 6). A questo punto possiamo cliccare sull’icona play, e utilizzare poi File Explorer per verificare che la foto sia stata effettivamente scattata.

Figura 6: modifica della stringa “photo”

Step 3: aggiunta di un loop

Vogliamo ora aggiungere allo script un loop, in modo tale che vengano scattate quattro foto (photo1.jpg, photo2.jpg e così via), a distanza di cinque secondi l’una dall’altra. Cominciate selezionando Program>Loops, e trascinate il blocco “Repeat 10 times” sopra al blocco già presente, in modo tale da includerlo al suo interno. Modificate poi il numero 10 selezionando il numero desiderato di iterazioni per il ciclo. Selezionate poi Programs>Variables, e trascinate il blocco “set item to” sopra al blocco Repeat (Figura 7).

Figura 7: aggiunta di un loop allo script

Step 4: impostazione delle variabili

Cliccate su “item” e selezionate “Rename variable”. Cambiate il suo nome in “pic”. Selezionate ora Programs>Numbers e poi Maths, e trascinate il numero in modo tale che si incastri alla destra di “set pic to”. Modificate il valore in 1. Trascinate ora un altro blocco variabile “set item to” in modo tale da posizionarlo sopra il blocco “Pi Camera takes snapshot” all’interno della variabile di iterazione del loop. Rinominate la variabile in “photo” (Figura 8).

Figura 8: come assegnare i nomi alle variabili

Step 5: completamento dei nomi delle variabili

Espandete la voce di menu Program>Text, e trascinate il blocco “create text with” in modo tale da collegarlo al blocco “set photo to”. Questo ha due ingressi: trascinate la stringa “Pi Camera takes snapshot” nel blocco in alto, selezionate poi Program>Variables e trascinate la variabile “pic” al di sotto della variabile stringa. Infine, trascinate la variabile “photo” da Program>Variables a “Pi Camera takes snapshot” (Figura 9).

Figura 9: ultime modifiche ai nomi delle variabili

Step 6: le ultime rifiniture

Utilizzate Program>Screen e poi Keyboard per aggiungere qualche feedback quando viene scattata una foto, inserite poi un ritardo di cinque secondi tramite Program>Timing. Aggiungete ora “set photo to” da Program>Variables, e collegate il blocco “+” da Program>Numbers e Maths. Trascinate la variabile pic nell’ingresso di sinistra, e trascinate il blocco numeric nell’altro ingresso, impostandone il valore a 1.

Questo era l’ultimo step necessario per realizzare l’applicazione. Potete a questo punto lanciare l’applicazione e mettervi in posa per una foto! Ricordatevi che potete utilizzare la funzionalità File Explorer di Wyliodrin STUDIO per scaricare le immagini scattate dalla memoria del Raspberry Pi al vostro PC.

Riferimenti

[1] Articolo originale pubblicato su techradar

[2] Wyliodrin STUDIO

 

 

 

Scarica subito una copia gratis

5 Commenti

  1. Avatar photo Giovanni Di Maria 11 Aprile 2017
  2. Avatar photo Marco 25 Agosto 2017
    • Avatar photo Emanuele Bonanni 28 Agosto 2017
  3. Avatar photo Mariangela.Mone 1 Aprile 2020

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend