Non ci sono prodotti a carrello.
Rileva i parametri ambientali e ne pubblica i dati su Cloud. Puรฒ funzionare per anni alimentato con due semplici batterie stilo, senza la necessitร di prese di corrente.
Puรฒ capitare che sorga lโesigenza di monitorare i principali dati ambientali di una stanza o di un luogo della propria casa o di qualsiasi altro genere di edificio.
Ad esempio, volete sapere se lโambiente dove stoccate il pellet per la vostra stufa rispetta le caratteristiche richieste di temperatura e umiditร , oppure se il ripostiglio dove mettete alcuni prodotti alimentari รจ veramente un โluogo fresco e asciuttoโ oppure, ancora, se la cantina dei vostri vini ha la giusta temperatura e umiditร .
Ebbene in tutti questi casi potrebbe farvi comodo visualizzare sullo smartphone tutti i parametri necessari, anche quando siete fuori casa.
Il circuito proposto in questo articolo serve proprio a monitorare i principali parametri ambientali, lโunica necessitร รจ quella di disporre di un segnale WiFi con accesso a Internet, infatti i dati raccolti sul campo saranno inviati ad un cloud on-line in modo wireless.
Il cloud ha lo scopo di raccogliere e memorizzare i dati inviati e di rappresentarli in un formato facilmente analizzabile, come ad esempio un grafico.
Se il segnale della vostra rete WiFi รจ sufficientemente potente, potete collocare il circuito appena fuori casa ed utilizzarlo come una vera e propria stazione meteo.
Particolare attenzione รจ stata posta nel sistema di alimentazione del nostro circuito, perchรฉ consci del fatto che unโaltra apparecchiatura alimentata dalla rete domestica sarebbe stata poco gradita, abbiamo preferito una piรน conveniente alimentazione a batteria, come la gran parte dei dispositivi commerciali simili.
Questโultimo punto รจ stato il piรน gravoso dal punto di vista progettuale, perchรฉ serviva un circuito che consumasse cosรฌ poco da poter funzionare per anni con delle economiche batterie e ci ha fatto scartare le classiche schede di prototipazione disponibili in commercio.
La scelta invece del microcontrollore per la gestione del progetto รจ stata immediata anche perchรฉ occorre sempre tenere in considerazione i costi di realizzazione, pertanto un economico modulo ESP8266 รจ la scelta ideale.
Ricordiamo brevemente che questo dispositivo contiene un MCU (MicroController Unit) a 32 bit ed un modulo WiFi ad alte prestazioni, ma soprattutto รจ stato pensato per un uso a batterie, pertanto dispone di alcune funzionalitร atte a ridurre il consumo di corrente.
Sfortunatamente questo modulo viene spesso commercializzato su schede di prototipazione che integrano altri componenti, con il risultato di peggiorare sensibilmente il consumo in corrente, tanto da dover pensare da zero una nuova scheda elettronica.
Invece di progettare una specifica scheda per questo progetto abbiamo pensato di realizzare una generica scheda basata su ESP8266 con i soli componenti essenziali, riutilizzabile in tutti i progetti di IoT che prevedano unโalimentazione a batteria.
Chiameremo questa nuova scheda ESP-minimal, perchรฉ contiene solo il minimo numero di componenti per utilizzare agevolmente il modulo basato sullโESP8266.
SCHEMA ELETTRICO DELL’ESP MINIMAL
Dallโanalisi dello schema elettrico emerge la semplicitร del circuito, essenzialmente alcune resistenze per disporre i vari pin al livello logico adeguato, ed alcuni condensatori di disaccoppiamento, nessun convertitore USB/Seriale che dovrร necessariamente essere esterno.
Il resistore R1 รจ posto sulla linea del reset (pin CH-PD), che viene azionata manualmente dal pulsante S2 quando si desidera resettare il modulo ESP.
Il condensatore C3 รจ necessario per utilizzare la funzione Wake on from sleep, dettaglio che spiegheremo piรน oltre nellโarticolo. Il resistore R2 รจ connesso alla linea di programmazione (pin GPIO_0) che viene azionata dal pulsante S1 quando si desidera programmare il modulo ESP.
I resistori R3 e R4 sono necessari per porre rispettivamente il pin GPIO_2 a livello alto ed il pin GPIO_15 a livello basso in modo che il modulo ESP esegua allโavvio il corretto boot con lโesecuzione del programma in memoria.
Non abbiamo previsto neppure il classico stabilizzatore di tensione, assolutamente non necessario in quanto il circuito sarร alimentato da due pile formato AA oppure AAA che forniranno giร la corretta tensione di alimentazione di 3 volt, ovviando al problema della quiescent current (corrente assorbita dallo stabilizzatore in assenza di carico applicato).
Il modulo ESP accetta tensioni di alimentazione comprese tra 2,5V e 3,6V pertanto non รจ compatibile con una singola cella Li-Po che a piena carica che raggiunge i 4,2V.
REALIZZAZIONE PRATICA DELL’ESP MINIMAL
Per permettere a tutti una facile realizzazione lo stampato รจ a doppia faccia e non abbiamo usato componenti SMD, tranne il modulo ESP. Visto il loro numero esiguo questo non crea eccessivi problemi; potete vedere il circuito completato in Fig. 1.
ร possibile aggiungere la serigrafia sui pin dei due connettori J1 e J2 ed eventualmente due streep maschio in modo da poter utilizzare il circuito su di una breadboard per eventuali esperimenti, il formato รจ compatibile con le schede Arduino MKR.
Per la programmazione serve un convertitore USB-Seriale esterno pertanto abbiamo previsto un apposito connettore (J3) che risulta pin to pin compatibile con i prodotti commerciali Sparkfun FTDI e Cytron USB to UART converter, questโultimo รจ distribuito dalla Futura Elettronica (www.futurashop.it) con il codice 1686-USBTOUART.
In alternativa qualsiasi altro USB to UART converter (anche quelli a quattro pin) potrร andare bene in quanto i pin DTR e CTS non vengono utilizzati.
Quando si desidera programmare il modulo utilizzando lโIDE di Arduino รจ necessario abilitare il modulo alla programmazione tramite la seguente sequenza: premere e mantenere premuto il pulsante PRG, premere per un istante il pulsante RST, quindi rilasciare il pulsante PRG.
Questa procedura deve essere eseguita prima di caricare lo sketch per predisporre il modulo ESP alla ricezione del programma.
Se avviate la programmazione senza aver eseguito la procedura, il debug dellโIDE di Arduino lo segnalerร scrivendo una serie di puntini e lineette, ma รจ sufficiente predisporre il modulo ESP alla programmazione affinchรฉ questโultima venga avviata (Fig. 2).
Al termine basta premere brevemente il pulsante di reset. J3 รจ un connettore strip passo 2,54 mm, mentre i connettori J1 e J2 possono essere omessi se si pensa di saldare direttamente eventuali componenti aggiuntivi.
UTILIZZO DELL’ESP8266 CON SENSORE BME280
Inizialmente il progetto prevedeva lโutilizzo di un semplice sensore DHT11 ma ben presto ci siamo resi conto dei sui limiti, primo fra tutti quello di non poter misurare temperature negative.
Ulteriori limiti sono dovuti alla minima tensione di alimentazione di 3V decisamente troppo elevata se si vuole sfruttare appieno la capacitร di due pile alcaline poste in serie, inoltre ha una corrente in stand-by di ben 100 ฮผA decisamente troppo elevata.
Certo, avremmo potuto prevedere un circuito che togliesse alimentazione al sensore quando non utilizzato, ma in tal caso avremmo dovuto fare i conti con il tempo necessario al sensore per rilevare correttamente le grandezze dopo aver fornito alimentazione (warm-up).
Decisamente piรน performante รจ, invece, il sensore BME280 che oltre a misurare temperatura e umiditร rileva anche la pressione atmosferica.
Viste le dimensioni davvero minuscole questo sensore viene normalmente commercializzato giร saldato su di una breakout board, decisamente piรน facile da usare; a noi interessa la versione senza stabilizzatore di tensione e senza traslatori di livello.
Il collegamento con la scheda รจ davvero semplicissimo ed รจ riportato in Fig. 3.
Per pura comoditร lโalimentazione positiva รจ stata prelevata dal vicino pad del condensatore C1 e lโalimentazione negativa dal pin 14, posizionato in stato di LOW via software.
Per questa applicazione รจ necessario cortocircuitare il pin 16 con il pin RST.
In un uso reale di questo circuito ipotizziamo di aggiornare i dati ad intervalli di unโora in quanto ventiquattro misure al giorno risultano essere piรน che sufficienti.
Visto che il circuito rimane inutilizzato per la maggior parte del tempo potremmo sfruttare la modalitร deep sleep del microcontrollore ESP con wake up automatico dopo un certo tempo prefissato.
Lโistruzione messa a disposizione nellโIDE di Arduino si chiama ESP.deepSleep(TimeToSleep).
Durante la modalitร di deep sleep tutti i circuiti interni sono disattivati tranne il modulo RTC, che rimane in funzione aggiornando un contatore interno ad intervalli regolari di 1ฮผsec, lโassorbimento in corrente scende drasticamente a pochi microampere.
Il modulo RTC, allo scadere del tempo impostato dalla variabile TimeToSleep, porta il pin 16 a livello basso, che essendo connesso al pin RST del MCU, consente il reset del modulo ed il riavvio programma dallโinizio. Il condensatore C3 ha lo scopo di prolungare la durata dellโimpulso di reset per il microcontrollore.
Una volta risvegliato, il modulo legge i valori forniti dal sensore BME280, attiva il WiFi e si connette alla rete per inviare i dati al cloud, operazione che impiega circa 6 secondi.
Siccome questa operazione verrร compiuta ad intervalli di unโora avremmo un circuito che rimane attivo per 6 secondi ogni 3.600 secondi (ogni ora…) con una rilevante diminuzione dellโenergia assorbita. Il protocollo utilizzato per trasferire i dati dal modulo ESP al cloud รจ MQTT particolarmente apprezzato per la sua efficienza (vedere riquadro a parte).
Nel nostro primo prototipo, alimentato con due stilo formato AA di buona marca, siamo giunti a 15 mesi di funzionamento ininterrotto e anche se la tensione รจ scesa fino a 2,41V, sta ancora funzionando nel momento in cui scriviamo questo articolo.
Nella versione proposta abbiamo optato per due pile formato mini stilo ed il tutto risulta particolarmente compatto tanto da rientrare in una scatola di 9x5x1,5cm, come visibile in Fig. 4, ipotizziamo comunque una durata del sistema di quasi un anno.
Lโeffettiva durata dipende da diversi fattori, tra cui lโintensitร del segnale WiFi, la velocitร del vostro router a negoziare la connessione del dispositivo e la qualitร dellโaccesso ad Internet, fattori difficilmente valutabili a priori.
Vista la semplicitร del circuito non sarร possibile alimentare contemporaneamente la scheda da batteria e convertitore USB/Seriale pertanto dovrร essere presente lโuna o lโaltra.
CONFIGURAZIONE DEL CLOUD THINGSPEAK
Tra i vari cloud a disposizione abbiamo deciso di utilizzare Thingspeak perchรฉ, come vedremo, รจ quello che permette una maggiore personalizzazione dei dati raccolti offrendo la possibilitร di una post analisi dei dati tramite appositi script.
Accediamo alla pagina principale e clicchiamo su Get start for free per accedere alla pagina di registrazione che, come dice il nome stesso, รจ del tutto gratuita.
La pagina iniziale รจ fatta veramente bene e comprende una serie di aiuti visualizzati sulla destra, compresi degli esempi specifici suddivisi per board di sviluppo.
A noi interessa creare un nuovo canale (New Channel) come visibile in Fig. 5.
Cliccando su setting avremo la possibilitร di configurare il nostro cloud inserendo i nomi del progetto e dei campi che conterranno i dati inviati dal nostro circuito; prendete spunto dalla Fig. 6.
Da questo tab dovete trascrivervi il valore ID Canale che servirร ad identificare questโarea dati.
Successivamente cliccate sul tab Chiavi API e trascrivetevi il valore della Chiave API di scrittura (Fig. 7), che sarร la password per accedere al cloud da parte della nostra scheda.
Cliccando sulla tab Private View vedrete una preview dellโaspetto finale della dashboard con inseriti per default i grafici relativi ai campi specificati, cliccando sullโicona a forma di matita potrete anche configurare la relativa visualizzazione, come visibile in Fig. 8 e Fig. 9. Con gli ultimi aggiornamenti apportati al sito avrete la possibilitร di inserire anche indicatori numerici ed a lancetta (gauge).
A questo punto il cloud รจ pronto a ricevere i vostri dati e a visualizzarli. Sul tab Sharing potete impostare la condivisione in tre modalitร : solo visualizzazione privata, pubblica (visibile a tutti) oppure visibile alle sole persone indicate.
Decisamente semplice ed immediato anche se graficamente non molto accattivante rispetto ad altri cloud, ma la vera forza di thingspeak รจ la completa integrazione con Matlab, che permette di aggiungere degli script per personalizzare lโanalisi dei dati raccolti, aprendo diverse ed interessanti possibilitร che scopriremo piรน avanti nellโarticolo.
PROGRAMMAZIONE DELL’ESP MINIMAL
Per la programmazione occorre tenere in considerazioni i consumi del modulo ESP nelle varie fasi di funzionamento; in Fig. 10 viene rappresentato un grafico temporale semplificato (non in scala) con i principali stati di funzionamento ed i relativi assorbimenti in corrente.
Dopo ogni risveglio il modulo ESP interroga il sensore BME280 acquisendo i valori di temperatura, umiditร e pressione.
Il sensore รจ configurato per rimanere sempre in uno stato a basso consumo (ma non spento) per cui รจ in grado di fornire i valori dei parametri ambientali in modo molto veloce senza la necessitร di un warm-up.
Questa modalitร รจ chiamata weather monitoring e la lettura avviene forzatamente da parte del modulo ESP, terminata la quale il modulo รจ di nuovo in stand-by.
In questa fase la sezione WiFi del modulo ESP รจ spenta e lโassorbimento รจ di pochi milliampere, il sensore BME280 assorbe solo una manciata di microampere e solo nel momento in cui avviene la lettura dei dati.
Successivamente viene accesa la sezione radio e si provvede alla connessione alla rete WiFi operazione che nel nostro caso si conclude in pochi secondi; nel caso la connessione non avvenisse nellโarco di un tempo massimo di 10 secondi il modulo ritornerebbe in deep sleep e riproverebbe la connessione al prossimo risveglio.
Appena connessa alla rete la scheda contatta il broker MQTT di Thingspeak per inviargli tutti i dati, compresi quello della tensione ai capi della batteria, dopodichรฉ spegne il WiFi ed entra nuovamente nello stato di deep sleep.
Come potete osservare il massimo assorbimento, che si aggira intorno agli 80 mA, dura solo per pochissimi secondi, a tutto vantaggio del risparmio energetico.
Lo sketch si appoggia alla libreria PubSubClient reperibile allโindirizzo https://github.com/knolleary/pubsubclient che fornisce la funzionalitร di client per pubblicare messaggi verso un server che supporta il protocollo MQTT.
Prima di caricare lo sketch รจ necessario configurare alcune righe di programma in quanto alcune funzionalitร sono ad accesso protetto.
Nel listato principale la variabile DEBUG se impostata su true permette di abilitare i messaggi su Serial Monitor di Arduino, utile nei primi test per verificare che tutto funzioni correttamente come evidenziato in Fig. 11.
Se su Serial Monitor attivate la funzione โvisualizza orarioโ avrete la possibilitร di analizzare con estrema attenzione i tempi delle varie operazioni.
Le credenziali di accesso sono tutte raccolte nel file secrets.h (Listato 1) esse dovranno essere modificate con le credenziali di accesso alla vostra rete WiFi e con i codici di accesso forniti da Thingspeak, come indicato precedentemente.
Listato 1
#define SECRET_SSID โMySSIDโ // replace MySSID with your WiFi network name #define SECRET_PASS โMyPasswordโ // replace MyPassword with your WiFi password #define channelID 123456 // Thingspeak channel number #define writeAPIKey โABCDEFGHILMNOPQRโ // Thingspeak API Key
Per evitare di dover attendere tempi troppo lunghi, in fase di debug potete modificare anche il parametro UPDATE_INTERVAL_SECONDS per ridurre il tempo di invio a solo un minuto.
Completata la programmazione il circuito รจ giร operativo ed inizia lโinvio dei dati che saranno disponibili sul portale di Thingspeak, ad esempio il grafico della pressione apparirร come quello visibile in Fig. 12.
Concludiamo la trattazione descrivendo alcune feature messe a disposizione da Matlab e che sono integrate con il portale di Thingspeak e permettono di aggiungere delle analisi dei dati personalizzate, anche molto sofisticate; in alto a destra sono disponibili due opzioni: una denominata MATLAB Analysis e lโaltra MATLAB Visualization.
La prima permette di elaborare ulteriormente i dati ricevuti, mentre la seconda permette di visualizzare sulla dashboard nuovi dati ricavati analizzando i dati ricevuti, in entrambi i casi sono disponibili svariati esempi da cui partire.
Per la nostra applicazione abbiamo sfruttato la seconda opzione per visualizzare i dati attuali (gli ultimi ricevuti) ed anche il valore minimo e massimo rilevato nella giornata (Fig. 13).
Cliccando sullโicona a forma di ovale in alto a destra di un grafico (Field Chart IFrame) potete vedere il relativo codice html che puรฒ essere copiato ed inserito in una pagina web qualora la si volesse integrare con la visualizzazione del grafico.
Sul nostro sito web potrete trovare i file gerber per realizzare il PCB (anche in formato PDF) ed il software di programmazione; รจ disponibile anche una versione adatta al sensore DHT11.
Download
Gerber ESP Minimal
1 file(s) 26.89 KB
Per il download di questo file รจ necessario essere registrati al sito
MeteoNET con ESP Minimal
1 file(s) 4.18 KB
Per il download di questo file รจ necessario essere registrati al sito
5 Commenti