Temperature and Humidity meter with NodeMCU and Blynk

Home made temperature and humidity meter

Posted by

Hello¬†Shippers! Once again, it’s time to create something awesome. How about a temperature and humidity sensor controlled with NodeMCU or ESP8266 which sends the temperature of your room and our very special Blynk app shows the data with values and graphs. That sounds cool!

Let’s sail.


The NodeMCU collects the temperature and humidity from DHT11 sensor and sends it to Blynk app every second. Wow!

Things we need:

  • Hardware:

    • NodeMCU
    • DHT11/DHT22 sensor
    • Jumper Wires
    • 4K7 resistor
    • 3V3 power source
  • Software:

    • Arduino IDE
    • Blynk app

Now that we have gathered all the stuff we need. Let’s connect them.

Temperature and humidity sensor circuit:


  • D4 pin of NodeMCU connects to pin 2 of DHT11.
  • 3V3 pin of NodeMCU connects to pin 1 of DHT11 & GND of NodeMCU to pin 4 of DHT11.
  • 4K7 ohm resistor connected between pin 1 and pin 2 of DHT11 sensor.
  • Connect power(3.3V) to NodeMCU to make it work without USB cable.

Before we dive into the code, let’s setup the Blynk app to receive the data from NodeMCU.

Blynk Setup:

  • Create a New Project in BLYNK app.
  • Write Project Name and Select NodeMCU from dropdown.
  • An AUTH token will be sent to your registered email, note this down.
  • Tap on the screen and add a 2 Gauges and 2 Graphs.
  • Tap on the Widget and select the respective Virtual pins for temperature and humidity data(V6 and V8 for temperature and V5 and V7 for humidity).

Note: Make sure to setup Reading rate as ‘1’ second for all Widgets. And add gauges and graphs for both Humidity and Temperature.

Let’s Code:

Make sure to download the below mentioned libraries, because missing out any of it will cause compilation issues, and we don’t want that.

  • SPI.h
  • ESP8266WiFi.h
  • BlynkSimpleEsp8266.h
  • SimpleTimer.h
  • DHT.h
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <DHT.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "YOUR_BLYNK_AUTH_KEY";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "WIFI_SSID";
char pass[] = "WIFI_PASSWORD";

#define DHTPIN 2 // What digital pin we're connected to

// Uncomment whatever type you're using!
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22, AM2302, AM2321
//#define DHTTYPE DHT21 // DHT 21, AM2301

SimpleTimer timer;

// This function sends Arduino's up time every second to Virtual Pin (5, 6, 7 &amp;amp;amp;amp;amp;amp;amp; 8).
// In the app, Widget's reading frequency should be set to PUSH. This means
// that you define how often to send data to Blynk App.
void sendSensor()
 float h = dht.readHumidity();
 float t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit

 if (isnan(h) || isnan(t)) {
 Serial.println("Failed to read from DHT sensor!");
 // You can send any value at any time.
 // Please don't send more that 10 values per second.
 Blynk.virtualWrite(V5, h); // Humidity for gauge
 Blynk.virtualWrite(V6, t); // Temperature for gauge
 Blynk.virtualWrite(V7, h); // Humidity for graph
 Blynk.virtualWrite(V8, t); // Temperature for graph

void setup()
 Serial.begin(115200); // See the connection status in Serial Monitor
 Blynk.begin(auth, ssid, pass);


 // Setup a function to be called every second
 timer.setInterval(1000L, sendSensor);

void loop()
 Blynk.run(); // Initiates Blynk
 timer.run(); // Initiates SimpleTimer

Update the Blynk AUTH ID, WIFI_PASSWORD and WIFI_SSID in the code.

Upload the code to NodeMCU:

Connect NodeMCU to computer using MicroUSB cable and upload the code.

Play the app:

Click play button on top of your app and see your room temperature(degree celcius) and humidity(percentage) updated every second. Oh yeah!

That’s it for now, Shippers. See you in the next awesome IOT project.

Keep breaking, keep making!

Leave a Reply

Your email address will not be published. Required fields are marked *