WeMos D1 mini DHT22 Blynk

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.

WeMos D1 mini DHT22 Blynk data

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:

WeMos D1 mini DHT22 Blynk device settings

collegata in modalità WiFi, ottieni il token che dovrai inserire nello sketch per inviare i dati alla tua app.

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:

WeMos D1 mini DHT22 Blynk select widget

dal valore di 300 punti energia.

Configura l’elemento inserendo la label “Temp”

WeMos D1 mini DHT22 Blynk Gauge V0

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:

WeMos D1 mini DHT22 Blynk Gauges

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:

WeMos D1 mini DHT22 Blynk data

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:

WeMos D1 mini DHT22 Blynk sketch

Ringrazio l’amico catoplepa per un utilissimo tutorial sul sensore e l’app da cui sono partito per realizzare questo tutorial.

  • Questo sito ed i suoi contenuti è fornito "così com'è" e Mauro Alfieri non rilascia alcuna dichiarazione o garanzia di alcun tipo, esplicita o implicita, riguardo alla completezza, accuratezza, affidabilità, idoneità o disponibilità del sito o delle informazioni, prodotti, servizi o grafiche correlate contenute sul sito per qualsiasi scopo.
  • Ti chiedo di leggere e rispettare il regolamento del sito prima di utilizzarlo
  • Ti chiedo di leggere i Termini e Condizioni d'uso del sito prima di utilizzarlo
  • In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei qualora siano presenti link al suddetto sito.

Permalink link a questo articolo: https://www.mauroalfieri.it/elettronica/wemos-d1-mini-dht22-blynk.html

13 commenti

Vai al modulo dei commenti

    • Salvatore il 6 Febbraio 2018 alle 15:05
    • Rispondi

    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

    1. Ciao Salvatore,
      sembra un problema di connessione.
      Ho cercato nel sito Blynk trovando un’ottima documentazione: http://docs.blynk.cc/

    • Sandro il 22 Febbraio 2018 alle 11:55
    • Rispondi

    @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.

    • Fabio il 14 Giugno 2018 alle 16:20
    • Rispondi

    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

    1. 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 +

    • Pasqualino il 27 Giugno 2018 alle 16:12
    • Rispondi

    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

    1. Ciao Pasqualino,
      nella versione gratuita è permessa solo una connessione tra un device ed un app, se non ricordo male.
      Mauro

    • Michelone il 8 Marzo 2019 alle 08:02
    • Rispondi

    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

    1. Ciao Michelone,
      qual’è l’errore ?

    • Michelone il 8 Marzo 2019 alle 08:06
    • Rispondi

    mi ha cancellato il file che non trova e la libreria…si tratta di ‘versione.h’ nella libreria ‘BlynkSimpleEsp8266.h’ scusa ancora il disguido

    1. Ottimo Michelone

    • Piero il 18 Dicembre 2019 alle 23:30
    • Rispondi

    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

    1. 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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.