|
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 e DHT11 |
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). Ho inserito nel programma anche il "solito" DHT11. In questo modo, oltre alle caratteristiche dell'aria, otterremo anche la temperatura e l'umidità dell'aria, così da avere delle informazioni complete sulla qualità dell'aria. Naturalmente al posto di DHT11 si può utilizzare un DHT21 o DHT22, selezionando nel programma le righe adeguate di configurazione del sensore. |
![]() ![]() DHT11 |
Attenzione:
SGP30 è venduto con due
piedinature diverse. Il modello "1" va inserito sullo zoccolo I2C3; il modello "2" va inserito sullo zoccolo I2C1. Se si inseriscono sullo zoccolo sbagliato, il sensore non viene danneggiato, perchè i piedini di alimentazione sono nello stesso ordine, però non funzionerà il rilevamento dei dati. |
![]() 1 |
![]() 2 |
Lo
schema elettrico |
![]() |
Il
sensore temperatura/umidità DHT11 va collegato sulla porta
GPIO0; mentre SGP30 segue il protocollo I2C, per cui SCL si
connette su GPIO5 e SDA su GPIO4 |
|
![]() Il rendering della basetta sperimentale in scala 1:1. DHT11 si connette sullo zoccolo DG1, mentre SGP30 si connette sullo zoccolo I2C2. Vedi nota iniziale. Fare attenzione a connetterlo sui pin corretti. |
|
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; DHT.h serve per gestire DHT11; 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. Nota: per quanto possibile, scaricare sempre le librerie più aggiornate. Solo in caso non le trovaste, utilizzare quelle proposte nel sito. |
ESP8266WiFi.h ThingSpeak.h DHT.h Adafruit_Sensor.h Wire.h Adafruit_SGP30.h |
![]() |
Queste
linee di programma servono per stabilire il tipo di sensore
che si sta utilizzando: DHT11, DHT21 o DHT22, e inserire i
giusti parametri, altrimenti si leggeranno dei valori
incoerenti. Nota: ho acquistato sia da Amazon che Aliexpress dei sensori come DHT11, ma in realtà erano DHT22! Sostituiti i paramentri, tutto ha funzionato regolarmente. |
![]() |
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. |
![]() |
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) |
I valori
inseriti nel programma...![]() |
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 ESP8266, 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!
|
![]() L'immagine
della BDS in scala 1:1.
Si noti che il sensore SGP30 è posto sullo zoccolo I2C1. DHT11 è inserito su DG1. |
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 DHT11 e 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 |
![]() |
Schema elettrico del collegamento tra il sensore ed ESP8266. Si è utilizzato il collegamento con il protocollo I2S, che utilizza solo quattro cavi: Vcc (+3,3 v) GND SCL - Clock (GPIO5) SDA - Data (GPIO4) |
|
![]() Il sensore BME680 sulla basetta sperimentale in scala 1:1 Attenzione a inserire il sensore sullo zoccolo I2C2 con la corretta disposizione dei pin. |
|
Il
programma |
Le
librerie necessarie: Nota: per quanto possibile, scaricare sempre le librerie più aggiornate. Solo in caso non le trovaste, utilizzare quelle proposte nel sito. |
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) |
![]() |
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 |
In
questo programma si assommano le informazioni registrate dai
due sensori, ovvero BME680 e SGP30, utilizzando tutte le
finestre dati messe a disposizione da ThingSpeak! 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. |
![]() |
Lo
schema elettrico |
![]() |
Schema elettrico del collegamento tra i sensori, collegati in parallelo, ed ESP8266. Si è utilizzato il collegamento con il protocollo I2S, che utilizza solo quattro cavi: Vcc (+3,3 v) GND SCL - Clock (GPIO5) SDA - Data (GPIO4) |
![]() La basetta sperimentale in scala 1:1. SGP30 è alloggiato su I2C1 e BMP680 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. |
|