In questo articolo, viene proposta una guida in cui descriveremo passo-passo come realizzare il progetto di un sistema IoT di monitoraggio della qualità dell'aria. Nel progetto si prevede di utilizzare il microcontrollore ESP32, il sensore Nova PM SDS011, il sensore MQ-7 e il sensore DHT11. Viene inoltre previsto l’impiego di un display OLED per visualizzare i valori di qualità dell'aria PM2.5 e PM10. Il sistema di monitoraggio consente di misurare la concentrazione di PM2.5, PM10 e monossido di carbonio (CO), la temperatura e l’umidità ambientale. I valori dei suddetti parametri saranno utilizzati per calcolare il massimo valore dell'indice di qualità dell'aria (AQI). I sei parametri saranno pubblicati sul cloud mediante la piattaforma Adafruit IO, che consentirà il monitoraggio della qualità dell’aria da qualsiasi parte del mondo.
Introduzione
Il monitoraggio della qualità dell’aria consiste nell’attività di misurazione del livello di inquinamento dell’aria, quindi, considerando che viviamo grazie al fatto che respiriamo aria, è molto importante conoscere i rischi che corriamo se l’aria non è sicura. Si consideri che l’Italia, rispetto agli altri paesi europei, ha il più elevato tasso di mortalità relativamente all’inquinamento dell’aria. Ciò è da addebitare essenzialmente ad un’elevata circolazione di automobili e alle elevate emissioni gassose dei sistemi di riscaldamento e raffreddamento ambientale.
Il particolato PM2.5 e PM10
La maggior parte delle cause di mortalità da inquinamento dell’aria è causata dalla notevole presenza di polveri sottili: il particolato (in inglese: Particulate Matter-PM). Il particolato consiste in piccolissime particelle solide e liquide, classificabili in PM10 (da 2,5 a 10 micrometri) e in PM2.5 (inferiori a 2,5 micrometri). Il particolato è rilevabile grazie all’impiego di avanzati specifici sensori utilizzati nelle centraline di monitoraggio dell’inquinamento dell’aria, generalmente installate nelle città e nelle zone considerate di maggior rischio per la salute. I sensori nei sistemi di monitoraggio sono in grado di misurare in μg/m3 la concentrazione di particolato. La Figura 1 riporta una tabella con gli indicatori europei della qualità dell’aria CAQI (Common Air Quality Index) per fasce di colori ed i corrispondenti valori in μg/m3 delle concentrazioni di Ozono (O3), di biossido di azoto (NO2) e di particolato PM2.5 e PM10. Bassi valori del CAQI indicano buona qualità dell'aria, ossia, basso rischio per la salute.

Figura 1: Indicatori europei della qualità dell’aria (CAQI)
Il monossido di carbonio
Il monossido di carbonio è un gas incolore e inodore che si forma quando il carbonio non brucia completamente. La maggior parte dell'inquinamento da monossido di carbonio proviene dai veicoli, ma è causato anche dalla combustione industriale, dalle stufe a legna e dagli incendi boschivi. Livelli elevati di monossido di carbonio si verificano spesso con il freddo, poiché le basse temperature rendono la combustione meno completa e mantengono il gas più vicino al suolo. Poiché il monossido di carbonio riduce la quantità di ossigeno che raggiunge gli organi del corpo, può causare sintomi simili all’influenza e dolore toracico nelle persone con malattie cardiovascolari. Sebbene tutti siano suscettibili all'avvelenamento da monossido di carbonio, i nascituri, i neonati, gli anziani e le persone con malattie cardiache croniche, anemia o problemi respiratori, sono i più a rischio. Livelli elevati di monossido di carbonio possono provocare vertigini, visione offuscata e confusione; livelli molto elevati possono causare la morte.
Il progetto
Considerando quanto esposto nell’introduzione, la necessità di monitorare la qualità dell'aria in tempo reale è evidentemente molto importante per la salvaguardia della nostra salute, ed è per questo che teniamo particolarmente a condividere con voi questa guida al progetto!
Quindi, in questo articolo descriveremo passo-passo come realizzare un sistema di monitoraggio della qualità dell'aria per misurare la concentrazione di PM2.5, PM10 e monossido di carbonio. I risultati delle misure saranno resi pubblici attraverso la piattaforma Adafruit IO in modo da poterli monitorare ovunque ci si trovi. La Figura 2 mostra lo schema elettrico del sistema IoT di monitoraggio della qualità dell’aria.

Figura 2: Schema elettrico del sistema di monitoraggio della qualità dell’aria
Il sensore SDS011
Il sensore SDS011 (S3) della Nova Fitness misura la concentrazione di particelle PM2.5 e PM10 presenti nell’aria da 0,3 a 10 μm. Questo sensore è costituito da una piccola ventola, una valvola di ingresso dell'aria, un diodo laser e un fotodiodo. L'aria entra attraverso la presa d'aria dove una sorgente luminosa (laser) illumina le particelle; l’intensità della luce diffusa dalle particelle viene rilevata e trasformata in un segnale elettrico da un fotodiodo. Il segnale viene quindi amplificato ed elaborato per ottenere il livello di concentrazione di particelle PM2.5 e PM10. I dati del livello di concentrazione vengono trasmessi all'ESP32 (U1) mediante comunicazione seriale. In Figura 3 è mostrato il sensore SDS011 con l’indicazione dei pin.

Figura 3: Sensore SDS011
Il sensore MQ-7
Il sensore MQ-7 (S1) rileva le concentrazioni di monossido di carbonio (CO) nell'aria da 10 a 10.000 ppm di CO. Il livello di concentrazione di CO viene trasformato in un segnale analogico e inviato ad una porta analogica-digitale (ADC) dell’ESP32 per la conversione in digitale e la successiva elaborazione. La Figura 4 riporta un’immagine del sensore MQ-7.

Figura 4: Sensore MQ-7
Il resistore di carico RL del sensore integrato nel PCB del modulo svolge un ruolo fondamentale nel funzionamento del sensore. Il valore di resistenza RL deve essere scelto in base alla concentrazione di gas. Nei PCB del sensore MQ-7 è inserito un resistore di carico da 1 kΩ. E’ stato sperimentato che questo valore di resistenza rende imprecise le letture del sensore. Pertanto, per misurare i valori corretti di concentrazione di CO, è necessario sostituire la resistenza da 1 kΩ con una da 10 kΩ. La posizione della resistenza da 1 kΩ da sostituire è indicata nell’immagine della scheda in Figura 5.

Figura 5: Resistenza da 1 kΩ da sostituire
Il sensore DHT11
Il modulo DHT11 (S2) integra due sensori: un sensore di temperatura e un sensore di umidità. Dalla sua uscita digitale calibrata, invia i dati delle letture dei due sensori all’ESP32 tramite comunicazione 1-wire. La Figura 6 riporta le due versioni del sensore DHT11 a 3 e a 4 pin.

Figura 6: Sensore DHT11 a 3 e a 4 pin
La differenza principale fra la versione a 3 pin e quella a 4 pin consiste nel fatto che la versione a 4 pin (scelta per il progetto) integra nel modulo un condensatore di filtraggio e un resistore di pull-up sull’uscita “data”.
Il display OLED
In questo progetto viene previsto l’utilizzo del display OLED SSD1306 (OLED1) monocromatico blu a 7 pin da 0,96" per visualizzare direttamente sul dispositivo di monitoraggio i valori di PM2.5 e PM10. Supporta il protocollo SPI, quindi comunica con l’ESP32 mediante comunicazione seriale SPI. La Figura 7 mostra un display OLED SSD1306 a 7 pin.

Figura 7: Display OLED SSD1306
Alimentazione del sistema di monitoraggio
Il sensore SDS011, il DHT11 e il sensore MQ-7 sono alimentati a 5 V, mentre il display OLED è alimentato a 3,3 V. La scheda di sviluppo ESP32 può essere alimentata via USB da un computer o da un alimentatore esterno o power bank a 5 V, 1 A da collegare alla scheda ESP32; in tutti e due i casi viene alimentato anche il resto del circuito.
Realizzazione pratica
Per il montaggio dei componenti potete usare una breadboard sperimentale e fare i collegamenti con dei jumper, ma è consigliabile utilizzare una scheda ramata millefori. Quindi, nel secondo caso, i componenti del circuito si dovranno inserire in questa scheda forata eseguendo i collegamenti saldando dei conduttori ai pin dei componenti seguendo lo schema di Figura 2. Nel disporre i componenti conviene lasciare spazio sufficiente per montare l'OLED, i sensori e la scheda ESP32. Dal montaggio della scheda millefori sono esclusi il sensore SDS011 e il sensore MQ-7, che andranno collegati al circuito esternamente.
La piattaforma Adafruit IO
Adafruit IO è una piattaforma dati open source che consente di aggregare, visualizzare e analizzare dati in tempo reale sul cloud. Utilizzando Adafruit IO, è possibile caricare, visualizzare e monitorare i dati tramite Internet e rendere il progetto compatibile con l'IoT. È possibile controllare dispositivi, leggere i dati dei sensori e creare interessanti applicazioni IoT.
Creazione di una chiave API Adafruit IO
Per utilizzare Adafruit IO, è necessario innanzitutto creare un account su Adafruit IO visitando il sito web “https://io.adafruit.com/”. Entrati nel sito, cliccate su “Get started for Free” per utilizzare gratuitamente Adafruit IO. Si aprirà la pagina per creare l’account. Dopo aver completato la procedura di creazione dell'account, accedete all'account e cliccate su “IO”, poi cliccate sul pulsante in alto a destra in cui è riportata l’immagine di una chiave, che mostra la scritta “API Key” passandoci sopra col mouse (Figura 8).

Figura 8: Chiave API AIO
Si aprirà una finestra (Figura 9) con il nome utente dell'account e la chiave AIO di Adafruit IO. Annotate i caratteri alfanumerici della chiave e il nome utente, che dovranno essere poi inseriti nel codice del progetto.

Figura 9: Creazione chiave API AIO
Creazione dei feed
Ora, dopo aver ottenuto la chiave AIO valida per le applicazioni elencate in Figura 9, dovete creare alcuni “feed”, ossia delle zone in cui memorizzare i dati dei sensori. Per creare un feed, cliccate su "Feeds". Quindi, nella pagina che si aprirà, cliccate su "New Feed" per aprire la finestra delle impostazioni del feed. Dopo aver dato un nome al feed, ad esempio PM10 e, se volete, anche una descrizione del feed, cliccate su “Create” (Figura 10).

Figura 10: Creazione di un feed
Per questo progetto avete bisogno di creare sei feed per contenere i valori di PM10, PM2.5, CO, temperatura, umidità e AQI. Quindi, ripeteremo la stessa procedura descritta sopra per creare i cinque feed rimanenti, dato che avete già creato il primo feed.
Creazione di una Dashboard per la visualizzazione dei feed
Dopo aver creato i sei feed, creeremo una dashboard Adafruit IO per visualizzare i dati dei sensori e AQI in un'unica pagina. Per farlo, prima creerete la dashboard e poi aggiungerete tutti i feed in essa contenuti. Per creare una dashboard, cliccate sull'opzione Dashboard, poi su "New Dashboard". Aperta la finestra di creazione dashboard, nominatela e inserite una descrizione, se volete, quindi cliccate su "Create” (Figura 11).

Figura 11: Creazione di una dashboard
Creazione di un blocco indicatore
Una volta creata la dashboard, potete scegliere i blocchi IO di Adafruit come Indicatori delle misure per visualizzare i dati. Per aggiungere un blocco, nell’elenco delle dashboard in fondo alla pagina ancora in Figura 10, cliccate sul nome della dashboard che avete creato. Si aprirà la pagina delle impostazioni. Cliccando sull’icona a forma di rotellina in alto a destra, nel menù a discesa cliccate su “+ Create New Block”. Apparirà una finestra in cui sono mostrati i blocchi che è possibile scegliere, quindi, ad esempio, selezionate il blocco Indicatore evidenziato in Figura 12.

Figura 12: Creazione di un blocco Indicatore della dashboard
Nella finestra successiva che si aprirà cliccando sul blocco indicatore stesso, selezionate uno dei sei feed di cui intendete visualizzare i dati mediante l’indicatore che avete scelto, ad esempio, selezionate il feed Temperatura e poi cliccate su “Next step” in fondo alla pagina (Figura 13).

Figura 13: Connessione del feed temperatura all’indicatore
Infine, si va a modificare le impostazioni del blocco temperatura per personalizzarlo. Terminata l’impostazione del blocco, cliccate su “Create block” (Figura 14).

Figura 14: Impostazioni del blocco temperatura
Ora, eseguite la stessa procedura di cui sopra per aggiungere i blocchi di visualizzazione per i restanti feed. Creati tutti i blocchi, disponeteli come volete semplicemente trascinando ogni blocco nella posizione desiderata, come il layout di esempio della dashboard mostrato in Figura 15.

Figura 15: Disposizione dei blocchi della dashboard
Se avete la necessità di modificare le impostazioni di un blocco, cliccate su “Edit Layout” del menù a discesa mostrato in Figura 11; apparirà l’icona della rotellina delle impostazioni all’interno di ogni blocco cliccando sulla quale si aprirà la pagina delle impostazioni del blocco interessato. Terminate le modifiche, dovete poi cliccare su “Save Layout”.
Programmazione della scheda di sviluppo ESP32
Il codice del progetto necessita delle librerie SDS011, Adafruit_GFX, Adafruit_SSD1306, Adafruit_MQTT e DHT.h. Le librerie SDS011, Adafruit_GFX e Adafruit_SSD1306 possono essere scaricate dal Gestore Librerie e installate nell'IDE Arduino. Se non avete l’IDE Arduino scaricatelo dal sito ufficiale www.arduino.cc e installatelo nel computer. Quindi, aprite l'IDE Arduino e cliccate su Sketch > #Includi Libreria > Gestione Librerie. Digitate SDS011 nella barra di ricerca e installate la libreria “SDS Sensor library” di R. Zschiegner (Figura 16).

Figura 16: Libreria del sensore SDS011
Con la stessa procedura, installate le librerie Adafruit GFX e Adafruit SSD1306 di Adafruit. I file ZIP delle librerie Adafruit_MQTT.h e DHT11.h possono essere scaricati dai seguenti rispettivi link:
“https://github.com/adafruit/Adafruit_MQTT_Library”
“https://github.com/adafruit/DHT-sensor-library”.
Chiudete ora l’IDE Arduino. Per programmare l’ESP32 con il codice del progetto, riaprite l’IDE Arduino e in un nuovo sketch copiate il seguente codice:
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 3997 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.






