Internet of Things e Raspberry PI

0

Di Emanuele Paiano

Connettere ad internet un dispositivo non smart, interfacciarlo con il proprio smartphone, e condividere dati con altri dispositivi, fino a qualche tempo fa era un’impresa inarrivabile per i più. Con l’evolversi della tecnologia, delle piattaforme dedicate e la diminuzione dei prezzi, tutto ciò è diventato un traguardo facilmente raggiungibile e accessibile a tutti.

Negli ultimi anni si sente spesso parlare di Smart World, Internet of Things e oggetti interconnessi. Dopo aver esposto alcuni concetti teorici, in questo articolo vedremo come connettere ad internet un mini ventilatore economico, al fine di gestirlo da remoto tramite applicazione Android. Ciò deve essere fatto indipendentemente se il nostro dispositivo è dietro ad un router o meno: basta disporre di una connessione ad Internet e la possibilità di connettersi ad un server remoto, su una specifica porta. Verranno utilizzati un server MQTT, un Raspberry Pi Zero W e un relè in grado di supportare fino a 10 Ampere di corrente, anche se nel nostro progetto lavoreremo con basse tensioni: si possono utilizzare gli stessi principi per accendere da remoto una lampada a 220V (ovviamente con le dovute precauzioni).

IoT e Smart World

Il concetto di Internet of Things (o IoT) consiste nella realizzazione di una rete globale di oggetti smart interconnessi, come possono essere smartphone, tv, lavatrici, auto, edifici o intere città intelligenti, le quali permettono di semplificare la vita della popolazione.
Tali oggetti sono dotati di sensori, i quali generano, raccolgono e condividono dati, per poi modificare lo stato dell’ambiente tramite gli attuatori, in base alle decisioni prese da uno o più sistemi di elaborazione. In un mondo smart, non è difficile immaginare il nostro frigo che ci manda un promemoria con la lista degli alimenti esauriti, non appena rileva (magari tramite il gps del nostro smartphone) che siamo nei pressi di un supermercato. Possiamo anche immaginare la nostra sveglia che posticipa (o anticipa) l’allarme in base alle condizioni del traffico stradale, così come la nostra pianta in giardino che attiva l’elettrovalvola per innaffiarsi da sola, non appena scarseggia l’umidità del terreno. Una rete di oggetti interconnessi e intelligenti è il principio su cui si basa l’Internet of Things, i cui dati vengono inviati all’ingresso di sistemi di Intelligenza Artificiale e Deep learning, rendendo possibile l’evoluzione e l’apprendimento autonomo. Un singolo dispositivo IoT prende il nome di Thing (oggetto). Alcuni di questi nodi possono essere realizzati in casa con un approccio DIY (Do It by Yourself), senza avere a disposizione competenze ingegneristiche, né grosse figure professionali al proprio servizio: possiamo far uso di una scheda di sviluppo (come possono essere Arduino o Raspberry Pi) oltre a dei sensori e attuatori (un sensore di temperatura, un relè, un’elettrovalvola o un semplice led). Prima di passare alla realizzazione di un semplice prototipo IoT, vediamo su quali tecnologie e protocolli si basa una comunicazione tra “things”.

Il protocollo MQTT

MQTT è un protocollo applicativo che permette lo scambio di informazioni tra più processi applicativi situati su dispositivi remoti ed interconnessi tra loro tramite un server centrale (noto come broker MQTT), che si occupa di inoltrare i messaggi (payload) tra i vari client. Tale protocollo è alla base dello scambio dati tra dispositivi IoT e consiste in un’approccio di tipo publish-subscribe.
Il publisher è il processo client che invia (o “pubblica”) dei dati su un canale condiviso tra più client riceventi (detti subscriber) messi in attesa di ricevere un messaggio.
I payload dei messaggi pubblicati possono contenere dati provenienti da sensori o comandi da inviare ai nodi riceventi, come può essere il comando di accensione di una lampada o l’attivazione di un relè. I canali su cui vengono scritti i messaggi, consistono in appositi path detti topic, la cui struttura è simile a quella di un url HTTP o a percorsi di directory di tipo Unix. Un topic ha un formato del tipo /percorso/dispositivo/comando oppure /posizione/dispositivo/riscontro: quest’ultimo non è obbligatorio, ma è buona norma inviare dei riscontri al mittente, per notificare la corretta ricezione del messaggio. Un esempio può essere:

This content has been restricted to logged-in users only. Please login to view this content.