Proteggi la tua casa: costruisci un sistema rilevatore di gas con Arduino Cloud, MicroWakeupper e Wemos D1 Mini

Introduzione

Benvenuto nel mondo della sicurezza domestica con questo articolo tramite il quale realizzerai un rilevatore di gas intelligente tramite l’utilizzo di Arduino Cloud, insieme al MicroWakeupper e al versatile Wemos D1 Mini.

Il cuore di questo progetto è il sensore di gas MQ-135, che fornisce letture precise della presenza di gas nell’aria. Grazie alla sua doppia uscita, sia analogica che digitale, avremo la possibilità di monitorare costantemente il livello di gas quando supera una soglia preimpostata.

Scopriremo come collegare il sensore di gas al MicroWakeupper, il quale fungerà da risvegliatore per il nostro Wemos D1 Mini, consentendogli di trasmettere in tempo reale i dati di gas sulla piattaforma Arduino Cloud. Qui, potrai visualizzare comodamente le letture attraverso una dashboard intuitiva in tempo reale.

Se la sicurezza della tua casa è la tua priorità, unisci le forze di Arduino Cloud, il MicroWakeupper e il Wemos D1 Mini per creare un sistema rilevatore di gas intelligente, personalizzato e altamente efficiente. Esplora passo dopo passo questo avvincente progetto e garantisci un ambiente domestico sicuro per te e la tua famiglia.

Useremo per questo progetto, come al solito, l’ottimo IDE PlatformIO.

Di che componenti abbiamo bisogno per il rilevatore di gas?

La lista dei componenti non è particolarmente lunga:

  • una breadboard per connettere il Wemos D1 Mini (o un suo clone) agli altri componenti
  • alcuni fili DuPont (maschio – maschio, maschio – femmina, femmina – femmina)
  • un sensore di gas MQ-135
  • un transistor 2N2222
  • un resistore da 3.3kΩ
  • un resistore da 27kΩ
  • un portabatterie per 4 batterie AA oppure AAA (in modo da avere 6V)
  • un MicroWakeupper
  • e, ovviamente, un Wemos D1 Mini (o un suo clone) !

Io ho usato un clone del Wemos D1 Mini realizzato dall’azienda AZ-Delivery.

Vediamo ora più in dettaglio questi nuovi componenti.

Il Wemos D1 Mini


Il Wemos D1 Mini è una scheda di sviluppo IoT compatta e potente basata su ESP8266, progettata per semplificare il processo di creazione di progetti connessi alla rete. Questa piccola ma versatile scheda offre un processore ESP8266 a 32 bit, connettività Wi-Fi integrata, e una vasta gamma di periferiche di input/output, il tutto in un formato compatto. Dotato di 11 pin di I/O digitali e una singola porta analogica, il Wemos D1 Mini consente di connettere facilmente sensori, attuatori e altri dispositivi per creare progetti personalizzati e interattivi. La sua facilità di utilizzo e la compatibilità con l’IDE di Arduino e con PlatformIO rendono questa scheda una scelta ideale per gli appassionati di elettronica e gli sviluppatori che desiderano esplorare le potenzialità dell’Internet delle cose (IoT) con un dispositivo affidabile e accessibile. Il modello da me acquistato è un clone della ditta AZ-Delivery e si presenta così:

Il dispositivo Wemos D1 Mini utilizzato nel progetto
Il dispositivo Wemos D1 Mini utilizzato nel progetto

Per poterlo connettere alla breadboard e per poterci connettere sopra il MicroWakeupper ho usato degli header femmina con i terminali abbastanza lunghi, come nella foto seguente:

Il dispositivo Wemos D1 Mini con i connettori femmina dotati di terminali lunghi
Il dispositivo Wemos D1 Mini con i connettori femmina dotati di terminali lunghi

Per prepararlo inserisci i terminali del connettore nei fori fino in fondo e saldali dal lato posteriore del modulo. Se non sei pratico di saldature ti consiglio la lettura dell’articolo Un altro tutorial su come saldare per imparare a farle correttamente. I due connettori sono di tipo femmina per consentirci di inserire sopra (come un qualunque shield di Arduino) il modulo MicroWakeupper.

Il MicroWakeupper


Il MicroWakeupper è un dispositivo ingegnoso progettato da Tobias Stöger per semplificare la gestione del “deep sleep” nei microcontroller, focalizzandosi soprattutto sul Wemos D1 Mini e cloni basati su ESP8266. Il “deep sleep” è uno stato di basso consumo energetico, utilizzato per prolungare la durata della batteria nei dispositivi alimentati a batteria. Durante questo stato, il microcontroller entra in uno stato di sonno profondo, riducendo drasticamente il consumo energetico. In questo contesto, il MicroWakeupper funge da ponte tra il sensore di gas, come il MQ-135, e il microcontroller. Quando il sensore rileva livelli di gas superiori a una soglia prestabilita, il MicroWakeupper risveglia il microcontroller dallo stato di “deep sleep”, consentendo così la trasmissione immediata dei dati verso Arduino Cloud. Questo approccio intelligente bilancia efficacemente il monitoraggio ambientale con la necessità di preservare l’energia della batteria, rendendo il MicroWakeupper una soluzione versatile per progetti IoT che richiedono una gestione efficiente dell’alimentazione.

Risorse sul MicroWakeupper:

Il dispositivo MicroWakeupper si presenta così, visto da sopra:

Il modulo MicroWakeupper visto da sopra
Il modulo MicroWakeupper visto da sopra

Ad esso dovrai saldare due connettori header maschi ad 8 pin come questo:

Header maschio 8 pin
Header maschio 8 pin

AVVERTENZA: Il MicroWakeupper, di default, collega la batteria (filo rosso) al suo terminale A0 che, di norma, è collegato al terminale A0 (che è l’ingresso analogico) del Wemos D1 Mini tramite il connettore. Questo perché nell’uso normale il MicroWakeupper fa monitorare il livello della batteria al Wemos D1 Mini. Nel nostro caso, invece, il terminale A0 del Wemos D1 Mini dovrà essere collegato all’uscita analogica del sensore di gas in modo da poterla misurare. Quindi l’operazione da fare è tagliare il terminale A0 del connettore saldato sul MicroWakeupper (oppure non saldarlo proprio sfilandolo dalla plastica prima di saldare il connettore) in modo che non possa essere inserito nel corrispondente connettore femmina del Wemos D1 Mini.

Come puoi vedere da questa foto e dalle serigrafie dei due dispositivi:

Insieme del MicroWakeupper (a sx) e del Wemos D1 Mini (a dx)
Insieme del MicroWakeupper (a sx) e del Wemos D1 Mini (a dx)

i terminali del MicroWakeupper sono disposti in modo da combaciare con quelli del Wemos D1 Mini mediante sovrapposizione del primo sul secondo.

Una volta saldati i connettori, dovresti avere una situazione di questo genere:

A sinistra il Wemos D1 Mini con i connettori femmina pronti per accogliere i terminali del MicroWakeupper (a destra)
A sinistra il Wemos D1 Mini con i connettori femmina pronti per accogliere i terminali del MicroWakeupper (a destra)

Dovrai anche saldare un connettore femmina a 3 posizioni sul lato superiore del MicroWakeupper dove la serigrafia riporta OUT, IN, GND come nella foto seguente:

Il MicroWakeupper con il connettore femmina a 3 posizioni sul lato superiore
Il MicroWakeupper con il connettore femmina a 3 posizioni sul lato superiore

La foto seguente riprende i dispositivi visti di lato:

I dispositivi visti di lato con i connettori saldati
I dispositivi visti di lato con i connettori saldati

Come noterai, il piedino corrispondente al terminale A0 sul MicroWakeupper è stato tagliato.

Nella prossima foto vediamo il MicroWakeupper inserito sul Wemos D1 Mini (visti di lato):

Il MicroWakeupper inserito sul Wemos D1 Mini (visti di lato)
Il MicroWakeupper inserito sul Wemos D1 Mini (visti di lato)

Ovviamente i due terminali A0 del Wemos D1 Mini e del MicroWakeupper non sono in contatto dato che quello del MicroWakeupper è stato tagliato.

Nota come ho lasciato lunghi i terminali del connettore femmina del Wemos D1 Mini per poterlo inserire nella breadboard.

Nella immagine seguente puoi vedere una foto del porta batterie utilizzato in questo progetto:

Il porta batterie
Il porta batterie

Il rilevatore di gas completo, una volta programmato tramite PC verrà alimentato a batteria.

Il sensore MQ-135

Il sensore MQ-135 è un componente elettronico che appartiene alla famiglia dei sensori di gas. È ampiamente utilizzato per il rilevamento e la quantificazione di vari tipi di gas, in particolare gas tossici e inquinanti atmosferici. Questo sensore è una scelta popolare per progetti che richiedono il monitoraggio della qualità dell’aria in ambienti domestici, industriali o all’aperto.

Può rilevare gas come: ammoniaca, solfuri, GPL, propano, metano, idrogeno, alcool, fumo e monossido di carbonio e altri gas nocivi. Sebbene possa rilevare tali gas, non è in grado di distinguere la differenza tra loro.

Quello utilizzato in questo articolo è prodotto dall’azienda AZDelivery. Ecco una descrizione dettagliata del sensore MQ-135:

Principio di funzionamento

Il sensore MQ-135 opera sul principio della variazione della resistenza elettrica in risposta alla presenza di determinati gas nell’aria. Il cuore del sensore è un elemento sensibile costituito da un sottile film semiconduttore organico che reagisce chimicamente ai gas con cui viene a contatto. Per ottenere i migliori risultati di rilevamento, il sensore del gas deve essere preriscaldato. Il migliore tempo di preriscaldamento per il sensore è superiore a 48 ore.

NOTA BENE: il preriscaldamento/riscaldamento del sensore avviene alimentandolo normalmente. NON devi assolutamente avvicinarci fiamme libere!!

Rilevamento di gas specifici

Il sensore MQ-135 è noto per il suo rilevamento di vari tipi di gas, tra cui:

  1. Monossido di Carbonio (CO): il sensore MQ-135 è particolarmente sensibile al monossido di carbonio, un gas tossico inodore e insapore prodotto dalla combustione incompleta di carbonio, spesso presente nei gas di scarico dei veicoli e nelle situazioni di incendio.
  2. Ammoniaca (NH3): questo gas è spesso presente nell’agricoltura e nell’industria chimica ed è tossico per l’inalazione in elevate concentrazioni.
  3. Metano (CH4): il metano è il principale costituente del gas naturale ed è infiammabile ed esplosivo in specifiche proporzioni aria/gas.
  4. Benzene (C6H6): il benzene è un volatile chimico che può essere presente in vari ambienti industriali ed è noto per essere cancerogeno.
  5. Vapori Organici Volatili (VOCs): questi gas includono una vasta gamma di composti chimici volatili che possono essere rilasciati da prodotti chimici, solventi e materiali da costruzione.

Costruzione

Il sensore è racchiuso all’interno di due strati di sottile rete di acciaio inossidabile chiamata rete antiesplosione. Di conseguenza, è in grado di rilevare sostanze infiammabili senza incidenti. Allo stesso modo, fornisce protezione per il sensore e filtra le particelle sospese. In questo modo possono passare solo i gas all’interno della camera di rilevamento. Il modulo ha un chip comparatore LM393 integrato che converte le letture in segnali digitali e analogici.

Soglia regolabile

Il modulo offre due tipi di uscita: una digitale e l’altra analogica. Il valore in uscita da quella analogica va da 0 a 1023 ed è proporzionale alla concentrazione totale di gas rilevata. L’uscita digitale invece passa a 0 quando la concentrazione totale di gas supera una certa soglia. Il sensore MQ-135, infatti, offre la possibilità di regolare, tramite un trimmer integrato, la soglia oltre la quale la sua uscita digitale scatta (passando da 1 a 0) segnalando che la concentrazione totale di gas corrispondente alla soglia impostata è stata superata. Il sensore dispone di due LED: uno rosso e uno verde. Quello rosso indica il normale funzionamento del modulo e si accende quando questo è alimentato. Il LED verde si accende quando è stata superata la soglia regolata tramite il trimmer.

Temperatura e umidità

La precisione del sensore MQ-135 è influenzata dalla temperatura e dall’umidità ambientale. Pertanto, è importante tenere conto di queste variabili quando si utilizza il sensore in applicazioni critiche e calibrarlo di conseguenza.

Applicazioni comuni

Il sensore MQ-135 trova applicazione in una vasta gamma di settori e progetti, tra cui:

  1. Monitoraggio della qualità dell’aria: viene utilizzato per misurare la concentrazione di gas tossici o inquinanti nell’aria in ambienti interni ed esterni.
  2. Sistemi di allarme gas: può essere integrato in sistemi di allarme per rilevare fughe di gas pericolosi come il monossido di carbonio o il gas metano.
  3. Rilevamento dell’ammoniaca in agricoltura: è utilizzato per monitorare i livelli di ammoniaca in ambienti di allevamento per la salute degli animali.
  4. Progetti di automazione domestica: può essere incorporato in sistemi di automazione domestica per attivare dispositivi di ventilazione o avvisi in caso di concentrazioni di gas pericolose.
  5. Progetti didattici: il sensore MQ-135 è spesso utilizzato in progetti didattici per insegnare ai giovani studenti i concetti di rilevamento dei gas e della qualità dell’aria.

Limiti e precauzioni

Va notato che il sensore MQ-135 ha una sensibilità variabile e può essere influenzato da gas diversi dalla sostanza specifica che si intende rilevare. Pertanto, è importante calibrare accuratamente il sensore e tenere conto delle condizioni ambientali.

NOTA BENE: questo progetto ha un intento puramente didattico e non ha la pretesa di realizzare un dispositivo di monitoraggio gas preciso ed accurato come uno commerciale. Pertanto, non deve essere utilizzato per scopi di monitoraggio in ambienti potenzialmente pericolosi.

In conclusione, il sensore MQ-135 è un dispositivo versatile e affidabile per il rilevamento dei gas, ampiamente utilizzato in applicazioni che richiedono il monitoraggio della qualità dell’aria e la sicurezza ambientale. Tuttavia, è essenziale comprendere le sue caratteristiche e le sue limitazioni prima di utilizzarlo in un progetto specifico.

Arduino Cloud


Arduino Cloud rappresenta una potente piattaforma online progettata per semplificare e centralizzare la gestione di progetti basati su Arduino e dispositivi IoT. Offrendo un’ampia gamma di funzionalità, Arduino Cloud consente agli sviluppatori di monitorare e controllare i loro dispositivi remotamente in modo efficace. La piattaforma offre un’interfaccia utente intuitiva che consente di configurare facilmente dispositivi, dashboard e connessioni tra componenti. Uno degli aspetti distintivi di Arduino Cloud è la possibilità di creare dashboard personalizzate, visualizzando in tempo reale i dati provenienti dai sensori. Inoltre, la piattaforma offre un meccanismo di controllo remoto, consentendo agli utenti di attivare o disattivare dispositivi a distanza. Con la capacità di archiviare dati storici e fornire notifiche in tempo reale, Arduino Cloud si presta perfettamente per progetti di monitoraggio ambientale, come il sistema rilevatore di gas proposto. La sua flessibilità e scalabilità lo rendono ideale per una vasta gamma di applicazioni, offrendo un ambiente affidabile e sicuro per gestire progetti IoT in modo efficiente e intuitivo.

Realizzazione del progetto

Lo schema elettrico

Vediamo ora lo schema elettrico realizzato con Fritzing:

Schema elettrico completo del rilevatore di gas
Schema elettrico completo del rilevatore di gas

Sulla sinistra dello schema vediamo la parte superiore del MicroWakeupper anche se, in realtà, questo è un “sandwich” tra il MicroWakeupper (sopra) e il Wemos D1 mini (sotto). Sono i terminali del Wemos D1 mini ad essere inseriti della breadboard. Il terminale IN del MicroWakeupper (collegato tramite il filo celeste al Collettore del transistor) induce il MicroWakeupper a risvegliare il Wemos D1 mini se è in stato HIGH mentre lo porta allo stato “deep sleep” se è nello stato LOW. L’uscita analogica A0 del sensore di gas è direttamente collegata all’ingresso analogico del Wemos D1 mini (scollegato internamente dal terminale A0 del MicroWakeupper dato che lo abbiamo tagliato).

Come noterai, nello schema è presente un transistor di tipo 2N2222. Esso è usato come invertitore, cioè prende in ingresso (la sua Base tramite la resistenza da 27kΩ) l’uscita digitale del sensore di gas e la inverte. Perché facciamo questa operazione?

Facciamo una piccola premessa. L’uscita digitale D0 del sensore cambia stato a seconda che la concentrazione di gas superi o meno una determinata soglia stabilita regolando il trimmer presente sul sensore stesso. Questo segnale digitale (che può essere, quindi, solo alto o basso) lo usiamo per comandare il MicroWakeupper in modo che mandi il Wemos D1 Mini nello stato di “deep sleep” oppure lo risvegli. In particolare manderà in deep sleep il Wemos D1 Mini quando la concentrazione di gas è sotto la soglia mentre lo risveglierà quando la concentrazione di gas è sopra la soglia. In questo caso il Wemos D1 Mini si sveglia, inizia a leggere i valori di concentrazione di gas provenienti dall’uscita A0 del sensore e li manderà verso Arduino Cloud per essere rappresentati su un grafico sulla dashboard (considera che una volta risvegliato impiegherà qualche secondo per connettersi al WiFi e poi al Cloud).

Il MicroWakeupper ha bisogno di un segnale alto sull’ingresso IN per risvegliare il Wemos D1 Mini mentre quando riceve un segnale basso lo manda in deep sleep. Purtroppo il segnale digitale del sensore ha una logica opposta: è basso quando la concentrazione di gas supera la soglia mentre è alto quando la concentrazione di gas è sotto la soglia. Da qui la necessità di invertire i livelli di questo segnale per poter comandare correttamente il MicroWakeupper.

Creiamo ora gli oggetti e la dashboard sul cloud

Per prima cosa, se non lo hai già fatto, devi crearti un account su Arduino Cloud.

Una volta che hai fatto il login segui questo video col quale imparerai a:

  • creare il device che mapperà la board
  • creare l’oggetto (thing) con la variabile associata al device creato al passo precedente
  • creare la dashboard da associare alla variabile

In questo video abbiamo creato:

  • l’oggetto (thing) chiamato Thing_Gas con la sua variabile gasVal (sia come Name che come Declaration) di tipo intero, read only e con periodicità di 1 secondo;
  • il device di nome Device_Gas di tipo ESP8266 LOLIN(WEMOS) D1 mini Lite (ricordo che quello utilizzato in questo articolo è un clone distribuito dall’azienda AZ-Delivery);
  • la dashboard di nome Dashboard_Gas con un diagramma di tipo chart di nome Gas level che visualizza la variabile gasVal (variabile appartenente al Thing_Gas).

NOTA BENE: è importante notare che nel video, al minuto 1:46, ho scaricato un pdf che contiene i parametri di collegamento al device. Essi sono chiamati Device ID e Secret Key e ci serviranno in seguito. Quindi scarica anche tu questo pdf e conservalo da qualche parte.

Ovviamente i parametri Device ID e Secret Key sono propri di ciascun device, quindi cambiano al variare del device.

Lo sketch

Creiamo il progetto PlatformIO

Abbiamo già visto la procedura di creazione di un progetto PlatformIO nell’articolo Come creare un progetto per NodeMCU ESP8266 con PlatformIO. In questo specifico progetto come piattaforma dovrai scegliere la WeMos D1 mini Lite (WEMOS)

Non installare le librerie indicate in quell’articolo ma installa , sempre seguendo la solita procedura, la libreria Arduino_ConnectionHandler:

Installazione della libreria Arduino_ConnectionHandler
Installazione della libreria Arduino_ConnectionHandler

e la libreria ArduinoIoTCloud:

Installazione della libreria ArduinoIoTCloud
Installazione della libreria ArduinoIoTCloud

Installa anche la libreria MicroWakeupper Wemos D1 Mini Battery Shield by Tobias:

Installazione della libreria MicroWakeupper Wemos D1 Mini Battery Shield by Tobias
Installazione della libreria MicroWakeupper Wemos D1 Mini Battery Shield by Tobias

Ora modifica il file platformio.ini per aggiungere queste due righe:

monitor_speed = 115200
upload_speed = 921600

in modo che abbia un aspetto del genere:

[env:d1_mini_lite]
platform = espressif8266
board = d1_mini_lite
monitor_speed = 115200
upload_speed = 921600
framework = arduino
lib_deps = 
	tstoegi/MicroWakeupper Wemos D1 Mini Battery Shield@^6.3.1
	arduino-libraries/ArduinoIoTCloud@^1.13.0
	arduino-libraries/Arduino_ConnectionHandler@^0.8.1

Ora scarica il progetto dal link qui sotto:

Decomprimi il progetto appena scaricato e sovrascrivi il file main.cpp nella cartella src del progetto creato prima.

Poi, dalla cartella include del progetto appena scaricato e decompresso, prendi il file thingProperties.h e copialo nella cartella include del progetto creato prima.

A questo punto dovrai editare questo file in modo da collegarlo al cloud:

const char DEVICE_LOGIN_NAME[]  = "YYYYYYYYYYYYYYYYYYYYYYYYYYYY";

const char SSID[]               = SECRET_SSID;    // Network SSID (name)
const char PASS[]               = SECRET_OPTIONAL_PASS;    // Network password (use for WPA, or use as key for WEP)
const char DEVICE_KEY[]  = SECRET_DEVICE_KEY;    // Secret device password

Come vedi, in questa sezione ci sono alcuni parametri da impostare.

Il primo parametro (DEVICE_LOGIN_NAME) lo trovi nel pdf che hai scaricato quando hai creato l’oggetto (trovi il riferimento nel video precedente). Nel pdf il parametro è chiamato Device ID.

I parametri SECRET_SSID e SECRET_OPTIONAL_PASS sono, rispettivamente, il nome e la password della tua rete WiFi. Quindi, al posto di SECRET_SSID metterai il nome della tua rete tra doppi apici (“) e al posto di SECRET_OPTIONAL_PASS metterai la password della tua rete (sempre fra doppi apici).

L’ultimo parametro, SECRET_DEVICE_KEY, lo trovi sempre nel pdf che hai scaricato dalla piattaforma col nome Secret Key.

Quindi la sezione in oggetto dovrebbe avere un aspetto del genere:

const char DEVICE_LOGIN_NAME[]  = "Device ID from the downloaded pdf";
const char SSID[]               = "my_wifi_ssid";    // Network SSID (name)
const char PASS[]               = "my_wifi_password";    // Network password (use for WPA, or use as key for WEP)
const char DEVICE_KEY[]  = "Secret Key from the downloaded pdf";    // Secret device password

Come puoi vedere, ho messo nel campo DEVICE_LOGIN_NAME il valore preso dal pdf alla voce Device ID (in questo caso Device ID from the downloaded pdf), nel campo SSID l’SSID della mia rete WiFi (in questo caso my_wifi_ssid), nel campo PASS la password della mia rete WiFi (in questo caso my_wifi_password) e nel campo DEVICE_KEY il valore preso dal pdf alla voce Secret Key.

Analizziamo ora lo sketch.

Si inizia, come al solito, con l’inclusione delle libreria necessaria e del file thingProperties.h che contiene i parametri di connessione alla rete WiFi e all’Arduino Cloud:

#include <MicroWakeupper.h>

#include "thingProperties.h"

Vengono poi definiti l’oggetto microWakeupper che gestisce il nostro MicroWakeupper, l’ingresso analogico sul pin A0 del Wemos D1 mini e due variabili (una intera e una Stringa) che raccolgono il valore rilevato dal sensore di gas:

//MicroWakeupper instance (only one is supported!)
MicroWakeupper microWakeupper;

#define ANALOGPIN0 A0  // ESP8266 Analog Pin ADC0 = A0

int analogGasSensorValue = 0;
String analogGasSensorValue_s = "";

Incontriamo poi la funzione setup.

Inizialmente viene inizializzata la porta seriale e inizializzato l’oggetto microWakeupper:

Serial.begin(115200);
// This delay gives the chance to wait for a Serial Monitor without blocking if none is found
delay(1500); 

microWakeupper.begin();     // For correct initialisation

La sezione successiva ha più una funzione di debug:

if (microWakeupper.resetedBySwitch()) {
Serial.println("\n\n\nLooks like ESP was reseted by reset/switch");
} else {
Serial.println("\n\n\nLooks like ESP woke up by internal timer");
}

stampa un messaggio a seconda che il Wemos D1 mini sia stato “svegliato” da un segnale esterno o da un timer interno.

Il resto della funzione setup gestisce la parte che si interfaccia con l’Arduino Cloud:

  // Defined in thingProperties.h
  initProperties();

  // Connect to Arduino IoT Cloud
  ArduinoCloud.begin(ArduinoIoTPreferredConnection);
  
  /*
     The following function allows you to obtain more information
     related to the state of network and IoT Cloud connection and errors
     the higher number the more granular information you’ll get.
     The default is 0 (only errors).
     Maximum is 4
 */
  setDebugMessageLevel(2);
  ArduinoCloud.printDebugInfo();

A questo punto inizia la funzione loop.

Inizialmente troviamo la funzione che tiene sempre in piedi il collegamento col Cloud e poi la funzione che riabilita l’oggetto microWakeupper per captare un nuovo trigger:

ArduinoCloud.update();

microWakeupper.reenable();                    // Re-enable MicroWakeupper for new triggering

La funzione si conclude con un blocco if:

if(microWakeupper.isActive()) {
    analogGasSensorValue = analogRead(ANALOGPIN0);
    gasVal = map(analogGasSensorValue, 0, 1023, 0, 100);
    String analogGasSensorValue_s = String(gasVal);
   //Serial.print("\nGas: " + analogGasSensorValue_s + "%"); 
} else {
  Serial.print("\nGoing to sleep...zzzzzzzz");    
  ESP.deepSleep(0);

}

delay(200);

Se il segnale all’ingresso IN del MicroWakeupper è HIGH significa che la percentuale di gas supera il valore di soglia. In questo caso, a livello hardware il Wemos D1 mini viene risvegliato dal MicroWakeupper, a livello software l’argomento dell’if è vero e allora viene fatta la lettura del livello del gas rilevata dal sensore. Se invece il segnale all’ingresso IN del MicroWakeupper è LOW significa che la percentuale di gas è minore del valore di soglia e quindi viene dato il comando per mandare il Wemos D1 mini in deep sleep (ESP.deepSleep(0);).

Come flashare il dispositivo

Per poter flashare lo sketch sul Wemos D1 mini con il MicroWakeupper inserito sopra, bisogna adottare un accorgimento.

Osserva questa foto:

I comandi del MicroWakeupper
I comandi del MicroWakeupper

Il pulsante in alto segnato in rosso serve per poter flashare lo sketch quando il MicroWakeupper è inserito sopra il Wemos D1 mini. Quindi, prima di dare a PlatformIO il comando del flashing tieni premuto questo pulsante e rilascialo solo quando il processo di flashing è terminato.

Lo switch in basso segnato in verde lo lasciamo così come appare in foto.

Come utilizzare il dispositivo

Appena il dispositivo viene collegato al connettore USB del PC si accende il led rosso sul sensore. Carica lo sketch come già descritto. Ruota il trimmer del sensore di gas in modo che si accenda il led verde. L’accensione del led verde indica il superamento della soglia del livello del gas. Sul Serial Monitor vedrai apparire i messaggi di connessione del dispositivo al WiFi e poi all’Arduino Cloud. In questo caso il dispositivo invia le misurazioni alla dashboard del Cloud. Se poi giri in senso opposto il trimmer in modo da spegnere il led verde vedrai il messaggio che indica che il Wemos D1 mini sta andando in deep sleep. In questo caso il dispositivo si addormenta e quindi si scollega dal Cloud e dal WiFi. Sulla dashboard non verranno più visualizzati nuovi dati in quanto non vengono più inviati.

Se poi giri nuovamente il trimmer per far accendere il led verde, vedrai sul Serial Monitor il risveglio del Wemos D1 mini, il collegamento al WiFi e il collegamento al Cloud. La dashboard dovrebbe ricominciare a visualizzare i nuovi dati.

Se tutto è andato come descritto (quindi col dispositivo collegato, e quindi alimentato, al PC) significa che il collaudo è andato bene.

Ma in realtà abbiamo detto che questo dispositivo viene alimentato a batteria. Quindi scollega il cavo USB e collega il tutto al porta batterie come nella immagine seguente:

Schema elettrico completo con porta batterie
Schema elettrico completo con porta batterie

In questo porta batterie ce ne stanno 4 da 1.5V per un totale di 6V (non importa che siano AA o AAA).

Il comportamento sarà ovviamente uguale a quello descritto sopra tranne la possibilità di visualizzare i messaggi del Serial Monitor dato che non siamo più collegati al PC. Regola quindi il trimmer per regolare della soglia di intervento. In condizioni normali la percentuale di gas dovrebbe essere inferiore a quella della soglia e il Wemos D1 mini dovrebbe essere in deep sleep. In questo caso la dasboard del Cloud non dovrebbe registrare nuovi valori. Se malauguratamente il livello di gas dovesse superare il livello della soglia, si accenderebbe il led verde, si risveglierebbe il Wemos D1 mini che, effettuate le necessarie operazioni di collegamento al WiFi e al Cloud, invierebbe i valori misurati alla dashboard di Arduino Cloud che verrebbe quindi aggiornata.

Video del flashing e del funzionamento del sistema collegato al PC

In questo video puoi vedere il dispositivo collegato al PC e la fase di flashing dello sketch. Dopo il flashing puoi vederne il funzionamento. Al variare della soglia (regolata tramite il trimmer) vedrai come il dispositivo entra in deep sleep oppure si risveglia per inviare i dati misurati versi Arduino Cloud:

Video del funzionamento del sistema alimentato da batterie

Supposto che il dispositivo sia stato già flashato, il video ne mostra il funzionamento al variare della soglia (regolata tramite il trimmer sul sensore). Ovviamente, non essendo collegato al PC e quindi al Serial Monitor, non sarà possibile vedere i messaggi come nel caso precedente:

Newsletter

Se vuoi essere aggiornato sui nuovi articoli, iscriviti alla newsletter. Prima dell’iscrizione alla newsletter leggi la pagina Privacy Policy (UE)

Se ti vuoi disiscrivere dalla newsletter clicca sul link che troverai nella mail della newsletter.

Inserisci il tuo nome
Inserisci la tua email
Torna in alto