Il WeMos D1 mini DHT22 Blynk riprende il precedente articolo dedicato al progetto di lettura di un sensore di tipo DHT22 da parte di un ESP8266 e lo estende all’utilizzo con l’App Blynk.
In passato hai letto alcuni articoli dedicati a Blynk l’app con cui puoi realizzare delle interfacce grafiche per i tuoi progetti in modo semplice ed intuitivo:
Partendo dalla realizzazione di una interfaccia per la MKR1000 con cui inviare i dati di controllo di 4 relay allo stato solido hai visto come configurare l’app e lo sketch lato IDE Arduino.
In questo articolo cambi micro controllore passando ad un ESP8266 nella sua versione WeMos D1 mini DHT22 Blynk ossia con la lettura di un sensore di temperatura ed umidità e l’app per la visualizzazione del dato.
Configurazione del WeMos D1 mini DHT22 Blynk
Il primo passo consiste nella configurazione dell’app Blynk per lavorare con l’ESP8266 e più nel dettaglio con la WeMos D1 mini:
collegata in modalità WiFi, ottieni il token che dovrai inserire nello sketch per inviare i dati alla tua app.
Warning!
ATTEZIONE: dovrai utilizzare il tuo tocken pena la scrittura dei dati sulla mia applicazione e di conseguenza la mancata ricezione dei dati inviati dalla tua WeMos D1 mini DHT22 Blynk
Puoi farti inviare il token via email all’indirizzo di posta che hai inserito quando ti sei registrato all’app Blynk.
Dopo la configurazione del device puoi creare l’interfaccia, inizia dalla scelta del componente Gauge:
dal valore di 300 punti energia.
Configura l’elemento inserendo la label “Temp”
ed il range di valori entro cui potrà ricevere i dati.
Siccome il valore di temperatura che il sensore DHT22 è in grado di rilevare varia da -40 a +80°C inserisci tali limiti nei valori possibili in arrivo dal sensore e pubblicati come V0 dall’app.
Come Label lascia il capo di default per visualizzare il valore di temperatura istantaneo che la WeMos D1 mini DHT22 Blynk invia all’app.
Aggiungi un secondo elemento di tipo Gauge per l’umidità i cui valori andranno da 0 a 100 essendo la misura del sensore valida all’interno di tale range:
il tag virtuale su cui invierai il valore di umidità è V1.
Ed infine aggiungi un grafico storico dei valori inviati, questa funzionalità è gestita automaticamente dal server Blynk a cui invii i dati che provvede a collezionarli e renderteli disponibili in forma grafica:
Lo sketch WeMos D1 mini DHT22 Blynk
Lo sketch di raccolta dati WeMos D1 mini DHT22 Blynk riprende lo sketch del precedente e lo estende con le funzionalità di connessione WiFi e Libreria Blynk per ESP8266 di connessione al cloud:
#define BLYNK_PRINT Serial #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> #include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT22 char auth[] = "IL TUO TOKEN BLYNK"; char ssid[] = "IL TUO SSID"; char pass[] = "LA TUA PASSWORD WIFI"; float h; float t; BlynkTimer timer; DHT dht(DHTPIN, DHTTYPE); void myTimerEvent() { getData(); Blynk.virtualWrite(V0, t); Blynk.virtualWrite(V1, h); } void getData() { h = dht.readHumidity(); t = (dht.readTemperature()-7.3); if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; } Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.println(" *C "); } void setup() { Serial.begin(9600); Blynk.begin(auth, ssid, pass); timer.setInterval(1000L, myTimerEvent); dht.begin(); Serial.println("DHT22 Blynk ready !!!"); } void loop() { Blynk.run(); timer.run(); // Initiates BlynkTimer }
Descrizione dello sketch
iniziando dalla linea 01: definisci la costante BLYNK_PRINT come Serial;
linee 03-05: includi le librerie WiFi,Blynk per ESP8266 e DHT per leggere il sensore di temperatura ed umidità DHT22;
linee 07-08: definisci il pin a cui è collegato il sensore ed il tipo di sensore;
linee 10-12: definisci le tre variabili contenenti il Token Blynk, l’SSID e la password corrispondente;
linee 14-15: imposta due variabili globali di tipo float che userai per immagazzinare i dati relativi alla temperatura ed all’umidità;
linea 17: crea l’istanza timer per l’oggetto BlynkTimer con cui scandisci il tempo all’interno dello sketch e l’aggiornamento dei dati;
linea 18: inizializza l’istanza del DHT;
linea 20; definisci la funzione myTimerEvent() che imposterai come callback della liberia Blynk a timer definiti;
linea 21: all’interno della funzione myTimerEvent() richiama la funzione getData() con cui andrai a reperire le informazioni relative ai valori misurati dal sensore;
linee 23-24: invia i valori rilevati di Temperatura ( t ) e Umidità ( h ) ai rispettivi V0 e V1 deginiti sull’App;
linee 27-43: la funzione getData() è la semplificazione della funzione loop() del precedente articolo in cui WeMos legge dal dht22 la temperatura e l’umidità e li colleziona nelle rispettive variabili;
linea 48: usa il metodo begin della libreria BlynkSimpleESP8266 passandole i tre valori: tocken, ssid e password;
linea 49: imposta il timer per la funzione di callback usando il metodo setInterval con un timer di 1000 millisecondi = 1 secondo e richiami la funzione myTimerEvent();
linea 50: inizializza la comunicazione con il sensore dht usando il solito begin come già descritto nei precedenti articoli dedicati a questo sensore;
linee 56-57: usando i metodi run delle due istanze Blynk e Timer ad ogni ciclo di loop esegui lo sketch e richiami tutte le funzioni di callback.
Al termine dell’Upload dello sketch potrai aprire il monitor seriale e visualizzerai una schermata simile alla seguente:
Ringrazio l’amico catoplepa per un utilissimo tutorial sul sensore e l’app da cui sono partito per realizzare questo tutorial.
13 commenti
Vai al modulo dei commenti
Salve. Lo sketch funziona, ma ogni tanto blynk segnala Herthbeat timeout e mi arriva il messaggio su smartphone. Ho cambiato diversi sketch ma l’errore si ripresenta. come posso risolvere? Grazie per la risposta.
Se mi indichi una e-mail ti posso inviare la schermata del serial monitor di Arduino Ide.
Grazie.
Salvatore Ferraro
Autore
Ciao Salvatore,
sembra un problema di connessione.
Ho cercato nel sito Blynk trovando un’ottima documentazione: http://docs.blynk.cc/
@Salvatore
Ciao ,prova ad aumentare il tempo nella riga 49 portalo da 1000 a 3000 ms (3 secondi) molte volte il device non riesce a processare un invio dati cosí veloce e si disconnette,mi è capitato più volte.
Salve Sig. Alfieri, complimenti per le sue lezioni sempre molto dettagliate.
Le chiedo un chiarimento in particolare la riga 29, in particolare il -7.3 cosa è ?
Nel mio progetto ho portato quel dato numerico a -0.5 e il sensore DHT22 mi segnala una temperatura più congrua rispetto al valore originario ( Temperatura reale 27°C – Temperatura prima della modifica al codice18°C – Temperatura dopo la modifica al codice 25°C )
Se inserisco un numero positivo ( tipo 1.5 ) l’IDE mi da errore.
Ringrazio anticipatamente
Fabio
Autore
Ciao Fabio,
il valore -7.3 è l’offset tra la temperatura rilevata dal mio DHT22 e quella reale misurata con un termometro al momento della realizzazione del progetto.
Se vuoi inserire un valore positivo devi cambiare il segno da – a +
Salve.
Innanzitutto complimenti per il portale che ormai è diventato, per me (come per tamti altri), punto di riferimento per tutto ciò che circonda Arduino.
Non ho mai usato la scheda wemos D1 mini e la relativa App blynk…. mi chiedevo se è possibile connettere alla stessa App più wemos D1 mini. Ad esempio visualizzare sul cellulare la temperatura/umidità di 5 stanze (5 diversi wemos) su unica App.
grazie, saluti.
Pasqualino
Autore
Ciao Pasqualino,
nella versione gratuita è permessa solo una connessione tra un device ed un app, se non ricordo male.
Mauro
Buongiorno Mauro, sto impazzendo da diversi giorni con la compilazione del codice, ogni volta mi restituisce un errore che riassumendo dice che non trova nella libreria , ho letto quasi ogni articolo del web ma non ne sono venuto a capo, tu magari, che sicuramente hai più esperienza di me, hai qualche dritta da darmi? se uso la libreria LAN di Blynk non ho problemi, ma data l’assenza di prese LAN nella zona dove devo usare la scheda ho necessità di usare il WiFi.
Spero tu, o qualcuno sul tuo forum, riesca ad aiutarmi
Grazie
Mickj
Autore
Ciao Michelone,
qual’è l’errore ?
mi ha cancellato il file che non trova e la libreria…si tratta di ‘versione.h’ nella libreria ‘BlynkSimpleEsp8266.h’ scusa ancora il disguido
Autore
Ottimo Michelone
Buonasera Mauro, anzitutto complimenti per il tuo lavoro su questo blog sempre chiaro ed esaustivo, volevo porti un quesito da neofina, avendo a disposizione un arduino mega ed una scheda ESP01, sarebbe possibile ottenere lo stesso risultato, se, come immagino sia possibile, mi daresti qualche indicazione?
Grazie in anticipo
Autore
Ciao Piero,
non ho mai provato a usare l’ESP01 con il DHT22, potresti provare, dovrebbe essere tutto disponibile come documentazione sul sito dell’App Blynk.