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.

Cortesemente, prima di inserire i commenti leggi il regolamento

Permanent link to this article: http://www.mauroalfieri.it/elettronica/wemos-d1-mini-dht22-blynk.html

7 comments

Skip to comment form

    • Salvatore on 6 febbraio 2018 at 15:05
    • Reply

    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 on 22 febbraio 2018 at 11:55
    • Reply

    @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 on 14 giugno 2018 at 16:20
    • Reply

    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 on 27 giugno 2018 at 16:12
    • Reply

    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

Lascia un commento

Your email address will not be published.

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