Monitoraggio dell’inquinamento atmosferico

La qualità dell'aria che respiriamo dovrebbe essere un fattore di primaria importanza per tutti. E' ben noto che le particelle di polvere nell'aria non fanno dormire chi soffre d'asma, ma i livelli di alcuni gas sono ugualmente dannosi. Questo progetto misura il livello dei gas inquinanti dell'aria ed emette un suono di allarme quando la loro concentrazione supera un certo livello come, ad esempio, quando qualcuno accende una sigaretta.

Il sensore

Il sensore utilizzato in questo progetto, il TGS2600 dell'azienda giapponese Figaro, specializzata  in sensori di gas, risponde a basse concentrazioni di vari gas incluso il metano, il monossido di carbonio, l'etanolo, l'idrogeno e l'isobutano. Quest'ultimo è spesso usato come propellente nelle bombolette per aerosol. Si noti che il sensore non fa distinzione tra questi gas. Il TGS2600 non è un sensore di gas in sé, ma piuttosto un sensore di gas nell'aria, il che significa che non funziona correttamente se il livello di ossigeno è troppo basso. Poiché esso reagisce a cambiamenti della qualità dell'aria, eccelle nel rilevare il fumo di sigaretta, per esempio. Sebbene il TGS2600 rilevi tutti i tipi di gas, ce ne sono alcuni che non riesce a percepire. Ad esempio i vapori di silicone, altamente corrosivi. Il TGS2600, alloggiato in un piccolo contenitore di metallo (vedi figura 1), è basato su un elemento resistivo composto da biossido di stagno (SnO2). Per reagire alle variazioni delle concentrazioni di gas ha bisogno di essere riscaldato.

Figura 1: il sensore TGS2600 di Figaro rileva gas come metano, monossido di carbonio, etanolo, idrogeno e isobutano

Figura 1: il sensore TGS2600 di Figaro rileva gas come metano, monossido di carbonio, etanolo, idrogeno e isobutano

Nel suo interno è inglobato un elemento riscaldatore. Per questo motivo il sensore ha bisogno di alcuni secondi per risultare pronto all'uso, dopo l'accensione. Quando viene alimentato per la prima volta, o dopo un periodo d'inattività di diverse settimane o più, il tempo di avvio ammonta a circa  15-20 minuti. L'elemento resistivo (RGAS o RS) all'interno forma la parte "superiore" di un partitore di tensione. Poiché la sua resistenza è controllata dalla composizione dell'aria ambientale, il segnale di uscita è disponibile nella parte "inferiore" del partitore di tensione, RL, che deve essere collegata esternamente. La resistenza del sensore in aria pulita è detta RO ed è il valore di riferimento. Di conseguenza RS è inversamente proporzionale all'inquinamento atmosferico. I livelli della temperatura d'ambiente e dell'umidità relativa influenzano la sensibilità del dispositivo, ma se il sensore è utilizzato nell'intervallo compreso tra 10°C e 50°C, non è necessaria la sua compensazione.

Il circuito di monitoraggio dell'inquinamento atmosferico

L'utilizzo del TGS2600 nel circuito è semplice: un microcontrollore con un ADC è tutto quello che serve (vedi schema elettrico di cui in figura 2). Dal momento che si desidera che i dati siano disponibili in rete, si è utilizzato un microcontrollore basato su ESP32.

Figura 2: poiché tutto il lavoro è svolto dal sensore TGS2600, lo schema elettrico del rilevatore della qualità dell'aria risulta molto semplice

Figura 2: poiché tutto il lavoro è svolto dal sensore TGS2600, lo schema elettrico del rilevatore della qualità dell'aria risulta molto semplice

I prototipi realizzati sono di due tipi: il primo è costruito su una scheda sperimentale, il secondo su un apposito circuito stampato (PCB). La prima versione consiste in un modulo Pico Kit ESP32, un display OLED da 0.96", un pulsante, un cicalino e, naturalmente, il sensore. La versione su PCB è quasi identica tranne il display OLED, in quanto utilizza una pagina web per visualizzare i dati. In più, sono stati aggiunti tre diodi LED per mostrare lo stato della connessione di rete wireless (vedi figura 3).

Figura 3: alcuni componenti sono nascosti sotto il modulo ESP32. Il sensore TGS2600 è il cilindro metallico nell'angolo in alto a destra del circuito

Figura 3: alcuni componenti sono nascosti sotto il modulo ESP32. Il sensore TGS2600 è il cilindro metallico nell'angolo in alto a destra del circuito

Il Firmware

Fondamentalmente, tutto ciò che il software deve fare è misurare la tensione su R2, che è legata a RL di cui abbiamo parlato prima. Con il valore di R2 noto (10 kΩ come da schema elettrico) il valore di RS può essere facilmente calcolato. Quindi, una volta che RO è noto, con il rapporto RS/RO si può calcolare il valore dell'inquinamento atmosferico. Il problema è che il valore di RO è sconosciuto. Per ricavarlo occorre effettuare una calibrazione in ambiente ideale, con "aria pulita". Il valore dell'inquinamento atmosferico calcolato è mostrato su un grafico a linee sul piccolo display OLED oppure caricato sulla piattaforma ThingSpeak Internet of things (IoT), dove le misure possono essere visualizzate con un grafico a linee su un periodo di tempo molto lungo. Il display OLED mostra solo le ultime 20 misurazioni. Queste vengono confrontate con un valore di soglia. Quando l'inquinamento atmosferico scende sotto questa soglia, si attiva il cicalino. Secondo la scheda tecnica del sensore, un rapporto RS/RO di 0.85 è un valore di soglia di allarme abbastanza ragionevole. Esso è visibile sul display sotto forma di una linea orizzontale tratteggiata. Premendo il pulsante, l'allarme si arresta. Sono visibili anche alcune informazioni sulla connessione Wi-Fi corrente, insieme al valore della soglia.

Configurazione e calibrazione

Per rendere il sistema più performante è possibile aggiungere la funzionalità di webserver. Ciò consente di effettuare la configurazione attraverso una pagina web, ospitata nello stesso ESP32. In questa pagina, la soglia di allarme può essere impostata assieme alle impostazioni di ThingSpeak, ossia l'API necessaria a caricare i dati. La rete Wi-Fi del dispositivo può essere configurata anche in questo contesto. La parte più importante della pagina, tuttavia, è quella adibita alla calibrazione del sensore, con l'impostazione della resistenza di riferimento dell'aria pulita, RO. Per effettuare tale operazione, il sensore dovrebbe essere collocato in un ambiente pulito. La scheda tecnica del sensore consiglia un periodo di sette giorni. Alla scadenza si può premere il tasto "Calibra".

Modalità di funzionamento in modalità di access point

La prima installazione del dispositivo ESP32 richiede la modalità in Access Point (AP). Si deve attivare tale modalità alimentando il modulo e mantenendo il pulsante premuto; il LED2 "AP" dovrebbe accendersi. Tramite un computer, uno smartphone o un tablet si acceda all'indirizzo IP 192.168.4.1 per visualizzare la pagina Web di configurazione del sistema di rilevazione dell'inquinamento. Adesso è possibile configurare la rete Wi-Fi e gli altri parametri menzionati prima. La comunicazione tra la pagina web e il modulo ESP32 avviene tramite chiamate XMLHttpRequests asincrone. Quando la pagina è caricata, una richiesta HTTP è inviata all'ESP32. Alla ricezione di questa, il microcontrollore invia una risposta contenente la configurazione corrente.

ThingSpeak

Le misurazioni della qualità dell'aria si possono caricare sulla piattaforma IoT ThingSpeak. Occorre creare un canale con un campo dati, grazie alla chiave API "Write" che deve essere inserita
sulla configurazione della pagina web di ESP32 . Se impostate correttamente, le misurazioni vengono caricate a ogni intervallo. Inoltre, quello inviato è il valore medio calcolato sull'intero intervallo. Per mandare i dati a ThingSpeak, viene prima inviata al sito web una richiesta HTTP contenente il valore del sensore. ThingSpeak risponde, quindi, con il numero di voci del canale, o con zero (0) se la richiesta fallisce. Una delle ragioni per cui una richiesta non va a buon fine è perché la chiave API è stata inserita in modo errato o quando le richieste vengono inviate troppo velocemente (ThingSpeak limita l'intervallo a 15 secondi per un utilizzo gratuito). L'intervallo minimo di caricamento del sistema è di un minuto.

Unico sketch

Entrambe le versioni di questo progetto (breadboard o PCB) usano lo stesso sketch di Arduino. Per distinguere tra le versioni viene usata la definizione del preprocessore. Questa è la prima riga del codice:

#define USEDISPLAY

Occorre rimuoverla o commentarla per la versione PCB. Deve essere installata una libreria aggiuntiva chiamata U8g2lib (https://github.com/olikraus/u8g2) per le operazioni di visualizzazione. Serve per disegnare il testo e il grafico a linee sul display. Per caricare il software su ESP32 deve essere installato il core di Arduino ESP32 (https://github.com/espressif/arduino-esp32). Occorre anche installare lo strumento SPIFFS per caricare la pagina web sul file system di ESP32 (https://github.com/me-no-dev/arduino-esp32fs-plugin). Quando tutto è impostato correttamente, il Pico Kit ESP32 può essere selezionato dal menù "Schede". Si possono, dunque, caricare la pagina Web e lo sketch sul modulo ESP32.

Elenco componenti

  • Resistenze
    • R1, R2 = 10 Kohm;
    • R3, R4 = 1 Kohm;
    • R5, R6, R7 = 220 ohm;
  • Condensatori
    • C1 = 100nF;
  • Semiconduttori
    • D1 = BAT85;
    • IC1 = TGS2600;
    • LED1, LED2, LED3 = rosso, 3mm diametro;
    • T1 = BS170;
  • Varie
    • BUZ1 = PS1420P02CT;
    • K1, K2 = morsetto a 17 vie passo 0.1" per l'ESP Pico Kit;
    • S1 = pulsante tattile 6x6 mm, montaggio su PCB.

Weblinks

[1] U8g2lib graphics library: https://github.com/olikraus/u8g2

[2] ESP32 Arduino core: https://github.com/espressif/arduino-esp32

[3] SPIFFS upload tool: https://github.com/me-no-dev/arduino-esp32fs-plugin

Air Pollution Monitor, bare PCB: www.elektor.com/air-pollution-monitor-170182-1

ESP32 Pico Kit: www.elektor.com/esp32-pico4

TGS2600 Air Contaminants Sensor: www.elektor.com/tgs2600-air-sensor

0.96“ 128x64 OLED Display, 6-pin: www.elektor.com/oled-display-for-arduino

 

Elektor Post

6 Commenti

  1. SeggeTauli 25 giugno 2019
  2. spips77 spips77 25 giugno 2019
  3. Giordana Francesca Brescia Giordana Francesca Brescia 26 giugno 2019

Scrivi un commento