β Back to Course
DHT22 Temperature and Humidity Sensor
π‘οΈ DHT22 Temperature and Humidity Sensor for ESP8266
π‘οΈ What You'll Learn:
- π Wire DHT22 to ESP8266 (3 wires + pull-up resistor)
- π Read temperature (-40 to 80Β°C) and humidity (0-100%)
- β οΈ Get alerts for heat waves and high humidity
- π» Complete code with error handling
π Wiring Diagram
DHT22 Sensor ESP8266 (NodeMCU)
ββββββββββββββ ββββββββββββββββ
VCC (Pin 1) ββββββΊ 3.3V
GND (Pin 4) ββββββΊ GND
DATA (Pin 2) ββββββΊ GPIO4 (D2)
β οΈ CRITICAL: Add 10kΞ© pull-up resistor between DATA and 3.3V!
3.3V βββ¬ββ 10kΞ© βββ¬ββ DHT22 DATA
β β
ββββββββββββ΄ββ ESP8266 GPIO4
DHT22 pins (front view, pins facing you):
βββββββββββββββ
β (1) VCC β
β (2) DATA β
β (3) NC β
β (4) GND β
βββββββββββββββ
π‘ Library Installation:
- Open Arduino IDE β Sketch β Include Library β Manage Libraries
- Search for "DHT sensor library" by Adafruit
- Click Install
- Also install "Adafruit Unified Sensor Library"
π Complete Code
#include <DHT.h>
#define DHTPIN 4 // GPIO4 (D2 on NodeMCU)
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
Serial.println("π‘οΈ DHT22 Weather Monitor Started");
}
void loop() {
delay(2000); // DHT22 needs 2 seconds between readings!
float temp = dht.readTemperature();
float hum = dht.readHumidity();
if (isnan(temp) || isnan(hum)) {
Serial.println("β Sensor read failed! Check wiring.");
return;
}
Serial.println("ββββββββββββββββββββββββββββββββββ");
Serial.printf("π‘οΈ Temperature: %.1fΒ°C | %.1fΒ°F\n", temp, temp * 9/5 + 32);
Serial.printf("π§ Humidity: %.0f%%\n", hum);
// Crop recommendations
if (temp > 35) {
Serial.println("β οΈ HEAT WARNING! Increase irrigation, open vents");
} else if (temp > 30) {
Serial.println("βοΈ Warm - Monitor moisture levels");
} else if (temp < 10 && temp > 0) {
Serial.println("βοΈ Cool - Delay planting warm-season crops");
} else if (temp < 0) {
Serial.println("π¨ FROST WARNING! Protect crops immediately!");
}
if (hum > 85) {
Serial.println("β οΈ HIGH HUMIDITY! Risk of fungal disease");
Serial.println(" β Increase ventilation, reduce watering");
} else if (hum < 30) {
Serial.println("β οΈ LOW HUMIDITY! Plants stressed");
Serial.println(" β Misting recommended");
}
Serial.println("ββββββββββββββββββββββββββββββββββ\n");
}
β οΈ Troubleshooting:
- β "Sensor read failed": Add delay(2000) between readings (DHT22 needs 2 seconds!)
- β Constant 0% humidity: Missing 10kΞ© pull-up resistor
- β Temperature stuck at -40Β°C: Bad connection on DATA pin
- β ESP8266 resets: Add 100ΞΌF capacitor across VCC and GND
π― Quick Reference:
- π Pins: VCCβ3.3V, GNDβGND, DATAβGPIO4
- π§ 10kΞ© pull-up resistor REQUIRED between DATA and 3.3V
- β±οΈ Delay 2000ms between readings (critical!)
- π‘οΈ Temp >35Β°C = heat stress, <10Β°C = frost risk
- π§ Humidity >85% = fungus risk
π‘ Key Takeaways:
- Apply these concepts directly to your farm or project.
- Take notes on important details for the quiz.
- Use the button below to track your progress.
×