DHT11 + ThingSpeak (NodeMCU)

Z2M Part: EDT-00005-A

Read temperature and humidity from DHT11 and send data to ThingSpeak cloud via WiFi.

Circuit Diagram
Circuit diagram for DHT11 + ThingSpeak (NodeMCU)
Wire Connections & Pin Configuration

Wire Color Connections:

Yellow → NodeMCU D7 to DHT11 Data (Pin 2)
Red → 3.3V to DHT11 VCC (Pin 1)
Black → GND to DHT11 GND (Pin 4)

Pin Configuration:

NodeMCU D7 (GPIO13) → DHT11 Data (Pin 2)
NodeMCU 3.3V → DHT11 VCC (Pin 1)
NodeMCU GND → DHT11 GND (Pin 4)
10kΩ resistor → Between DHT11 Data and 3.3V (pull-up)
Arduino Code
Edit
// DHT11 Temperature & Humidity to ThingSpeak
// Install: DHT sensor library, ThingSpeak library

#include <ESP8266WiFi.h>
#include <DHT.h>
#include <ThingSpeak.h>

#define DHTPIN D7      // DHT11 data pin (GPIO13)
#define DHTTYPE DHT11

// WiFi credentials
const char* ssid = \"YOUR_WIFI_SSID\";
const char* password = \"YOUR_WIFI_PASSWORD\";

// ThingSpeak credentials
unsigned long channelID = 1234567;        // Your channel ID
const char* writeAPIKey = \"YOUR_API_KEY\";

DHT dht(DHTPIN, DHTTYPE);
WiFiClient client;

void setup() {
  Serial.begin(9600);
  dht.begin();

  Serial.println(\"Connecting to WiFi...\");
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(\".\");
  }
  Serial.println(\"\");
  Serial.println(\"WiFi connected\");

  ThingSpeak.begin(client);
}

void loop() {
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();

  if (isnan(humidity) || isnan(temperature)) {
    Serial.println(\"Failed to read DHT11!\");
    delay(2000);
    return;
  }

  Serial.print(\"Temp: \");
  Serial.print(temperature);
  Serial.print(\" C, Humidity: \");
  Serial.println(humidity);

  ThingSpeak.setField(1, temperature);
  ThingSpeak.setField(2, humidity);
  int status = ThingSpeak.writeFields(channelID, writeAPIKey);

  if (status == 200) {
    Serial.println(\"Data sent to ThingSpeak\");
  } else {
    Serial.print(\"ThingSpeak error: \");
    Serial.println(status);
  }

  delay(20000);  // ThingSpeak allows 1 update per 15 seconds
}

Instruction Details

Wiring: Connect DHT11 VCC to 3.3V, GND to GND, Data to NodeMCU D7. Add 10kΩ pull-up between Data and 3.3V.
Library: Sketch → Include Library → Manage Libraries → search "DHT sensor library" and "ThingSpeak" → Install both.
Upload Code: Tools → Board → NodeMCU 1.0. Tools → Port → select COM port. Set WiFi SSID, password, channel ID, and API key in code. Click Upload button.
View Output: Open Serial Monitor for temp/humidity. Create ThingSpeak channel with 2 fields. Data logs to cloud every 20 seconds.

How to Use

  1. Connect the required components as per the Pin Configuration above
  2. Open Arduino IDE and create a new sketch
  3. Copy and paste the code above
  4. Select your Arduino board and COM port from Tools menu
  5. Click the Upload button to upload the code to your Arduino
  6. Open Serial Monitor (if applicable) to see the output

Components Required

  • NodeMCU/ESP8266
  • DHT11 Temperature & Humidity Sensor
  • 10kΩ Resistor (pull-up)
  • Micro USB Cable
  • Breadboard
  • Jumper Wires

Category: IoT Projects