Progettiamo una Sensor Network per i parametri ambientali – Parte 2

Nell’ultimo decennio si sono sviluppate moltissime piattaforme hardware orientate all’Internet of Things in tutte le sue forme ed applicazioni: domotica, monitoraggio, applicazioni industriali, automotive e tanto altro ancora. Infatti, grazie all’utilizzo di schede come Arduino, ESP32, Raspberry Pi o le tante altre soluzioni dei diversi produttori, è diventato estremamente semplice ed immediato realizzare degli oggetti connessi efficienti, mantenendo comunque un costo ridottissimo, e adatti a qualsiasi applicazione sia essa indoor che all’aperto. La possibilità di integrare i più svariati sensori e protocolli di comunicazione ha permesso di poter realizzare qualsiasi Sensor Network, sia cablata che wireless. In questa serie di quattro articoli andremo a progettare una WSN (Wireless Sensor Network) per il monitoraggio dei principali parametri ambientali all’interno della propria casa. In questo articolo affronteremo la seconda parte: lo sviluppo dei sensori che andranno a realizzare i nodi di acquisizione della nostra Wireless Sensor Network.

Introduzione

Nella prima parte di questo progetto abbiamo esaminato le giuste cause e le diverse sfaccettature che spingono al monitoraggio dei parametri ambientali. Successivamente, abbiamo introdotto i concetti fondamentali della realizzazione di una generica rete di sensori (Sensor Network) in particolar modo quando connessa in modalità Wireless (WSN). Inoltre, abbiamo definito un’architettura di principio per il progetto che stiamo realizzando (schematizzata in Figura 1). Come largamente discusso nella prima parte, il nostro progetto sarà realizzato attraverso 3 nodi sensoristici ed un nodo di aggregazione dei dati (data-aggregate). In questa seconda parte affronteremo lo sviluppo dei nodi sensoristici per il nostro progetto.

Figura 1: Architettura di progetto

In questo articolo, seconda parte del progetto “Sensor Network per i parametri ambientali” affronteremo dunque i seguenti argomenti:

  • La piattaforma hardware dei sensori
  • Tutorial di start-up
  • Struttura del progetto Firmware
  • Codice dello sketch
  • Considerazioni finali

La piattaforma hardware dei sensori

Come già introdotto nel primo articolo, i nodi sensoristici del nostro progetto sono basati sulla scheda di sviluppo AZ-Envy, prodotta da Az-delivery e rappresentata in Figura 2. Questa piattaforma hardware è stata ideata con un particolare focus alla realizzazione di dispositivi IoT (Internet of Things) da parte dei makers in ambito di diagnostica e monitoraggio. Queste schede di sviluppo, che tra l’altro sono facilmente reperibili in commercio sui molti cataloghi ed e-commerce, presentano un costo veramente irrisorio (circa 10€ a scheda). Nonostante il costo contenuto, queste piattaforme risultano essere molto flessibili e sposano alla perfezione le esigenze funzionali del nostro progetto.

Figura 2: Scheda AZ-Envy

La scheda di sviluppo AZ-Envy è stata progettata intorno ad un modulo integrato ESP8266-12MODF che unisce la versatilità e la connettività wireless ad un consumo ridotto e un costo contenuto. In particolar modo, il modulo integrato ESP8266MOD-12F è sviluppato da Ai-Thinker Technology utilizzando i SoC (System on Chip) ESP8266 della Espressif. Le caratteristiche di questi moduli sono:

  • CPU a 32 bit a risparmio energetico (standby 0,02mA) basate su architettura Tensilica L106
  • Wi-Fi 802.11 b /g / n con frequenza di clock fino a 160MHz
  • Disponibilità interfacce di comunicazione e periferiche UART/GPIO/IIC/PWM/ADC
  • ADC integrato ad alta precisione a 10 bit
  • Supporto alle funzionalità di upgrade firmware da remoto (FOTA)
  • Antenna integrata su PCB per comunicazioni Wi-Fi

Per concludere la panoramica, le altre caratteristiche tecniche della scheda Az-Envy sono:

  • Alimentazione variabile da 3V a 11V tramite Micro USB
  • Interfaccia I2C (collegata a SDA e SCL)
  • Sensore MQ-2
  • Sensore di temperatura e umidità HDC1080

Purtroppo, c’è da notare che per la corretta programmazione della scheda di sviluppo è necessario utilizzare un adattatore da USB a seriale. Per chi ha a disposizione si può utilizzare il modulo FT232RL, oppure in alternativa è possibile usare una scheda Arduino UNO, una breadboard e rispettare i collegamenti corretti riportati in figura. Come già detto, la scheda AZ-Envy ospita a bordo un sensore di GAS MQ-2. Questo è un piccolo modulo che consente di rilevare le perdite di gas infiammabile in casa o la presenza di fumo. Con esso infatti è possibile rilevare l’andamento della concentrazione di gas nei range del sensore (300~10000ppm di gas infiammabile). Purtroppo, non è possibile definire a priori l’esatta concentrazione di gas che può essere fatta con oggetti molto più costosi. La famiglia di sensori MQ-x è formata da diversi componenti, di cui il sensore MQ-2 fa parte. Gli altri sensori riescono a rilevare i vapori di alcool, i gas naturali (come il GPL) o il monossido di carbonio. Il sensore è basato sull'SnO2 che presenta una bassa conducibilità nell’aria pura. Inoltre, con la scheda AZ-Envy abbiamo a disposizione un sensore di misura della temperatura e dell’umidità relativa che presenta le seguenti caratteristiche:

  • Precisione dell'umidità relativa ±2
  • Precisione della temperatura ±0,2°C

Tutorial Start-up

Prima di addentrarci nella realizzazione del firmware dei nodi di acquisizione, credo che sia doveroso prendere confidenza con la piattaforma hardware a nostra disposizione. Andiamo dunque a realizzare una semplice prova utilizzando gli esempi per gli ESP8266. Come ricordiamo, abbiamo bisogno di un convertitore per poter programmare le nostre schede AZ-Envy. Io ho usato una scheda Arduino Uno rev03 con lo schema riportato in Figura 3.

Figura 3: Schema di collegamento per programmare la scheda AZ-Envy da Arduino UNO

All’interno dell’IDE Arduino è necessario configurare correttamente le impostazioni per poter lavorare con i moduli ESP8266. Per farlo è necessario aggiungere il pacchetto ESP8266 nella finestra Strumenti - Schede - Gestore Schede e selezionare la scheda “Generic ESP8266 Module” lasciando invariate tutte le impostazioni. Inoltre, consiglio di aggiungere la libreria Adafruit ESP8266. Dal menu File -> Esempi -> ESP8266 Wi-Fi andiamo a selezionare lo sketch di esempio UDP con cui potremo verificare sia il caricamento del firmware sulla scheda, che il corretto interfacciamento UDP all’interno della propria rete Wi-Fi domestica. Il file di esempio ha una struttura molto semplice e di immediato utilizzo. La funzione di setup prevede la configurazione del modulo Wi-Fi e della serial di debug per il monitor seriale dell’IDE. Al termine della funzione viene avviato il protocollo UDP con le relative funzionalità. All’interno della funzione loop vi è la lettura di un generico pacchetto UDP. Quando questo è presente, dunque, la dimensione del pacchetto è diversa da zero, il costrutto if gestisce il messaggio attraverso le seguenti azioni:

  • Stampa la sorgente del messaggio sul monitor seriale
  • Stampa il contenuto del messaggio sul monitor seriale
  • Invia un pacchetto di avvenuta ricezione al mittente

Il messaggio che invierà è scolpito nel software attraverso questa definizione/dichiarazione:

char ReplyBuffer[] = "acknowledged\r\n"; // a string to send back

Durante la fase di caricamento del software vi ricordo che la scheda Arduino UNO deve rimanere in reset (attraverso il ponticello tra il pin Reset e GND), mentre sulla scheda AZ-Envy, opportunamente alimentata tramite un cavo micro-USB, bisogna mantenere premuti contemporaneamente i due pushbutton Reset e Flash. Quando all'interno dell'IDE di Arduino esce la dicitura "connessione alla porta COM.." allora bisogna rilasciare i due pushbutton ed attendere il completamento della procedura di caricamento. Per il corretto funzionamento dello sketch andranno semplicemente inseriti SSID e password della propria rete Wi-Fi, e caricato il software sulla scheda a nostra disposizione. Una volta caricato il software sulla scheda AZ-Envy, possiamo stimolarla con un semplice tool per PC che ci consenta di inviare messaggi UDP. Io utilizzo di solito PacketSender, disponibile gratuitamente al sito www.packetsender.com. In Figura 4 è riportato l'utilizzo di questo semplice tool durante la stimolazione del nodo. Si può osservare come avviene lo scambio dei pacchetti UDP tra il PC e il nodo osservando sia il monitor seriale lato scheda che il campo dei messaggi lato PacketSender.

[...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2347 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

2 Commenti

  1. Vito.Chieppa 13 Luglio 2022
    • Giordana Francesca Brescia 13 Luglio 2022

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend