In
questa pagina potrai trovare:
|
ThingSpeak |
ThingSpeak
è un servizio di piattaforma di analisi IoT che consente di
aggregare, visualizzare e analizzare flussi di dati live nel
cloud. È possibile inviare dati a ThingSpeak da vari
dispositivi, creare visualizzazioni istantanee di dati live
e inviare avvisi. Le informazioni inviate a ThingSpeak possono essere visualizzate in ogni parte del mondo, collegandosi al Web. E, dulcis in fundus, ci si può iscrivere gratuitamente! |
Per
iniziare.
Andare alla pagina iniziale di ThingSpeak e cliccare su "Inizia gratuitamente". Se ci si è già registrati, inserire la propria mail e la password che si è selezionata; altrimenti cliccare su "Create one!" Quando si sceglie di creare un nuovo acconto, inserire:
Completate queste informazioni, si riceverà una mail di conferma. Ricevuta
la e-mail, cliccare su "Verifica email".
|
![]() ______________________________
![]() _____________________________ ![]() |
Creare
un nuovo canale. Per prima cosa, è necessario creare un nuovo canale. Selezionare "Channels", "My Channels" e infine "New Channel". Si apre una nuova finestra, in cui si può inserire:
Ci sono poi altri campi in cui si possono inserire tutta una serie di interessanti informazioni (tuttavia non indispensabili), comprese longitudine, latitudine, altezza, ecc. |
![]() --------------------------------------------------------------------- ![]() |
La
visualizzazione dei dati. Se si è selezionato di mantenere privati i dati, in "Private View" si potranno visualizzare i dati sottoforma di tabelle; naturalmente se si è deciso di rendere pubblico il canale, i dati si troveranno in "Pubblic View". Ecco uno stralcio delle possibili visualizzazioni sotto forma di grafici: ![]() |
|
Monitorare
la qualità dell'aria con SGP30 |
SGP30
è un sensore molto interessante, perchè rileva alcune
qualità dell'aria che difficilmente misurano altri sensori
del genere. Ecco infatti le sue specifiche di misurazione: - concentrazione di anidride carbonica (CO2); - concentrazione di idrogeno (H2); - concentrazione di Etanolo; - concentrazione di TVOC (componenti organici volatili totali). |
![]() |
Lo schema elettrico |
![]() |
Il
sensore SGP30 segue il protocollo I2C, per cui SCL si connette su GPIO2 e SDA su GPIO0 |
Attenzione:
SGP30 è prodotto in due versioni, in cui i piedini "SDA" e
"SCL" sono invertiti! Fare attenzione sia al collegamento diretto che il posizionamento sulla basetta sperimentale: La versione "1" va collegata sullo zoccolo "I2C2", mentre la versione "2" deve essere connessa su I2C1. Fortunatamente se si inseriranno su uno zoccolo invece che sull'altro, il sensore non verrà danneggiato, ma non verrà riconosciuto dal programma. In questo caso è sufficinte posizionarlo sullo zoccolo corretto. In questa realizzazione è stata usata la versione che alloggia su I2C2. |
![]() |
|
![]() Il rendering della basetta sperimentale in scala 1:1. SGP30 si connette sullo zoccolo I2C2. Fare attenzione a connetterlo correttamente. |
Il progetto |
Come
sempre, per prima cosa, è necessario essere certi di aver
installato le librerie necessarie. Sulla destra si legge l'elenco. Il loro utilizzo è piuttosto intuitivo: ESP8266WiFi.h è relativo alla connessione WiFi; ThingSpeak.h è relativo al programma ThingSpeak; Adafruit_Sensor gestisce la connessione con le periferiche Adafruit; Wire.h serve a connettere al protocollo I2C; Adafruit_SGP30.h è relativo a SGP30. |
ESP8266WiFi.h ThingSpeak.h Adafruit_Sensor.h Wire.h Adafruit_SGP30.h |
![]() |
Come
sempre un progetto WiFi, è necessario inserire il nome della
propria rete (SSID) e la password relativa (riquadro rosso). In "myChannelNumber" è necessario inserire il codice del proprio canale; mentre in "myWriteAPIKey" il codice di scrittura per questo specifico progetto. |
![]() |
Nella
routine "void setup" è necessario inserire
l'istruzione "Wire.begin(0,
2)", perchè le porte che gestiscono SDA e SCL, utilizzate
dal protocollo I2C, sono diverse tra ESP01 ed ESP8266;
questa istruzione indica al programma come instradare queste
informazioni. |
![]() |
La
linea "timeDelay" stabilisce ogni quanto tempo
aggiornare la lettura dai sensori. Poichè la misura è in millisecondi, il refresh avverr ogni 30 secondi (30.000/1.000) |
![]() |
Queste linee sono del tutto cruciali, perchè collegano i valori registrati nel programma da SGP30 +DHT11 e quanto visualizzato da ThingSpeak, per cui è fondamentale che la corrispondenza tra i numeri progressivi (in questo caso tra 1 e 6) e il nome dei campi che si sono attribuiti in "Channel setting" di ThingSpeak (vedi immagine a sinistra) siano coerenti, altrimenti le letture non corrisponderanno a quanto rilevato dai sensori. |
![]() |
In
questa immagine si vedono i dati inseriti in "Channel
settings" del mio progetto su ThingSpeak. Come si nota, i dati inseriti nello sketch di ESP8266 (immagine precedente) corrispondono a quanto inserito in ThingSpeak. |
E
dopo aver inserito il programma su ESP01, collegato i
sensori, aperta la pagina su ThingSpeak, se tutto è stato
fatto a regola d'arte....![]() ...
appariranno i nostri grafici in tutto il loro splendore,
aggiornati in base alle nostre richieste!
|
Clicca
qui per visualizzare il progetto Clicca qui per scaricare il programma in formato ".zip" Link di riferimento: https://randomnerdtutorials.com/esp8266-nodemcu-thingspeak-publish-arduino/ Ho utilizzato la struttura del programma da quanto presentato nella pagina indicata; ho modificato lo sketch per poter utilizzare SGP30 e può essere utilizzato di base per molti altri programmi. Ringrazio come sempre i curatori di "randomnerdstutorial" per il numero, e specialmente per la qualità, del loro lavoro. |
|
Una
stazione meteorologica con BME680 |
BME680
è un sensore molto interessante perchè rivela diverse
caratteristiche dell'aria: temperatura, umidità,
pressione (e questo lo rende simile a una
stazione barometrica) e in più indica la quantità di
componenti volatili nell’aria e può essere
utilizzato come mezzo indiretto per misurare la qualità
dell’aria. Il sensore fornirà solamente un valore di
resistenza, relativo al contenuto complessivo di VOC, ma non
può differenziare gas o alcoli. Si consiglia, per misure accurate di lasciare in funzione il sensore per almeno 48 ore quando lo si utilizza la prima volta per eliminare residui sul sensore. Per i successivi utilizzi, sempre che sia coinvolgano la lettura relativa ai gas il periodo di preriscaldo potrà essere limitata a 30 minuti. BME680 può essere alimentato con una tensione compresa tra 3,3 V cc e 5 V cc, mentre i dati in uscita sono disponibili sia su I2C sia su SPI. |
![]() Il
sensore ingrandito
|
Lo schema elettrico |
![]() |
Ed
ecco lo schema di collegamento del sensore BMP680 con ESP01,
nel caso non si utilizzi la basetta sperimentale. SDA va collegato su GPIO2, mentre SCL si collegherà GPIO0. |
![]() La basetta sperimentale in formato 1:1. Il sensore BME680 si connette sullo zoccolo I2C2. |
|
Il
programma |
Le librerie necessarie: | ESP8266WiFi.h ThingSpeak.h Adafruit_Sensor.h Wire.h Adafruit_BME680.h |
![]() |
Come
sempre un progetto WiFi, è necessario inserire il nome della
propria rete (SSID) e la password relativa (riquadro rosso). In "myChannelNumber" è necessario inserire il codice del proprio canale; in "myWriteAPIKey" il codice di scrittura per questo specifico progetto. |
![]() |
La
linea "timeDelay" stabilisce ogni quanto tempo
aggiornare la lettura dai sensori. Poichè la misura è in millisecondi, il refresh avverr ogni 30 secondi (30.000/1.000) |
![]() |
Nella routine "void setup" è necessario inserire l'istruzione "Wire.begin(0, 2)", perchè le porte che gestiscono SDA e SCL, utilizzate dal protocollo I2C, sono diverse tra ESP01 ed ESP8266; questa istruzione indica al programma come instradare queste informazioni. |
![]() |
Queste linee sono del tutto cruciali, perchè collegano i valori letti da BME680 dal programma e la rappresentazione grafica su ThingSpeak, per cui è fondamentale che la corrispondenza tra i numeri progressivi (in questo caso tra 1 e 4) e il nome dei campi che si sono attribuiti in "Channel setting" di ThingSpeak (vedi immagine a sinistra) siano coerenti, altrimenti le letture non corrisponderanno a quanto rilevato dai sensori. |
![]() |
In
questa immagine si vedono i dati inseriti in "Channel
settings" del mio progetto su ThingSpeak. Come si vede i dati inseriti nello sketch di ESP8266 (immagine precedente) corrispondono a quanto inserito in ThingSpeak. |
Ed ecco
il risultato dei nostri sforzi:![]() E li possiamo vedere gratuitamente, da ogni parte del mondo, collegandoci al web! |
Clicca qui
per visualizzare il programma. Clicca qui per scaricare il programma in formato ".zip" Link di riferimento: https://randomnerdtutorials.com/esp8266-nodemcu-thingspeak-publish-arduino/ Ho utilizzato la struttura del programma da quanto presentato nella pagina indicata; ho modificato lo sketch per poter utilizzare BME680 e può essere utilizzato di base per molti altri programmi. Ringrazio come sempre i curatori di "randomnerdstutorial" per il numero, e specialmente per la qualità, del loro lavoro. |
|
Una
stazione meteorologica + controllo della qualità
dell'aria |
ESP01
è piccolo e ha solo due porte digitali per l'utente, ma
nulla ci vieta di collegare in parallelo più sensori che
usino il protocollo I2C. Nulla ci impedisce perciò di
fondere insieme i due programmi precedenti, e utilizzando un
BME680 + un SGP30, ottenere un completo monitoraggio delle
consizioni e della qualità dell'aria? Monitoreremo ben otto
parametri, utilizzando quindi a fondo tutte le potenzialità
offerte da ThingSpeak, che ci mette a disposizione proprio
otto finestre di monitoraggio dei dati! Quanto esposto per i singoli programmi è valido per quest'ultimo, che semplicemente assomma le righe di programma indispensabili per gestire i singoli sensori, oltre naturalmente a quelli necessari per attivare i collegamenti con la rete WiFi e Thingspeak. Perciò verranno riportati in questo paragrafo solo le differenze rispetto a quanto già illustrato per i singoli programmi. |
![]() BME680
![]() |
Attenzione:
SGP30 è prodotto in due versioni, in cui i piedini "SDA" e
"SCL" sono invertiti! Fare attenzione sia al collegamento diretto che il posizionamento sulla basetta sperimentale: La versione "1" va collegata sullo zoccolo "I2C2", mentre la versione "2" deve essere connessa su I2C1. Fortunatamente se si inseriranno su uno zoccolo invece che sull'altro, il sensore non verrà danneggiato, ma non verrà riconosciuto dal programma. In questo caso è sufficinte posizionarlo sullo zoccolo corretto. In questa realizzazione è stata usata la versione che alloggia su I2C1. |
![]() |
![]() |
Ed
ecco lo schema di collegamento dei sensori BMP680, SGP30
(che sono collegati in parallelo) con ESP01, nel caso non si
utilizzi la basetta sperimentale. SDA va collegato su GPIO2, mentre SCL si collegherà GPIO0. |
|
![]() La basetta sperimentale in scala 1:1 Si è usata la versione2 di SGP30, per poterla inserire sullo zoccolo I2C1; mentre BME680 alloggia su I2C2. |
Il programma (differenze dai due sketch precedenti) |
![]() |
Queste linee sono del tutto cruciali, perchè collegano i valori letti da BME680 e da SGP30 all'interno del programma e la rappresentazione grafica su ThingSpeak, per cui è fondamentale che la corrispondenza tra i numeri progressivi (in questo caso tra 1 e 8) e il nome dei campi che si sono attribuiti in "Channel setting" di ThingSpeak (vedi immagine a sinistra) siano coerenti, altrimenti le letture non corrisponderanno a quanto rilevato dai sensori. |
![]() |
Ed
ecco come dovranno essere configurati i campi in ThingSpeak
affinchè i dati mostrati nelle varie finestre corrispondano
ai dati letti dai sensori. |
![]() |
I
dati rilevati dal programma potranno essere letti
puntualmente anche in locale, attivando il monitor seriale,
settato a 115200 bit/s |
Ed
ecco le misurazioni della nostra aria:![]() ![]() |
Clicca
qui per visualizzare il progetto Clicca qui per scaricare il programma in formato ".zip" Link di riferimento: https://randomnerdtutorials.com/esp8266-nodemcu-thingspeak-publish-arduino/ Ho utilizzato la struttura del programma da quanto presentato nella pagina indicata; ho modificato lo sketch per poter utilizzare SGP30 e può essere utilizzato di base per molti altri programmi. Ringrazio come sempre i curatori di "randomnerdstutorial" per il numero, e specialmente per la qualità, del loro lavoro. |