Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
DTH Sensor Programming
DHT11 and DHT22 sensors are digital sensors that can measure temperature and humidity. The DHT22 is more expensive but offers better accuracy and wider temperature ranges compared to DHT11. These sensors communicate with microcontrollers like ESP32 using a singlewire digital protocol.
Syntax
#include "DHT.h" #define DHT_PIN pin_number #define DHT_TYPE DHT11 // or DHT22 DHT sensor_object(DHT_PIN, DHT_TYPE);
DHT11 Specifications
| Parameter | DHT11 | DHT22 |
|---|---|---|
| Temperature Range | 0°C to 50°C | 40°C to 80°C |
| Humidity Range | 20% to 80% | 0% to 100% |
| Temperature Accuracy | ±2°C | ±0.5°C |
| Humidity Accuracy | ±5% | ±25% |
Pin Connections
Example 1: DHT11 Temperature and Humidity Reading
This example demonstrates reading temperature and humidity values from a DHT11 sensor connected to ESP32 pin 15
Installation Required: Install the DHT sensor library in Arduino IDE: Sketch ? Include Library ? Manage Libraries ? Search "DHT sensor library" ? Install
#include "DHT.h"
#define DHT_PIN 15
#define DHT_TYPE DHT11
DHT dht(DHT_PIN, DHT_TYPE);
void setup() {
Serial.begin(9600);
Serial.println("DHT11 Sensor Reading");
dht.begin();
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print("°C, Humidity: ");
Serial.print(humidity);
Serial.println("%");
delay(2000);
}
Example 2: DHT22 with LCD Display
This example shows DHT22 readings on an I2C LCD display using the Wokwi simulator
Libraries Required: DHT sensor library and LiquidCrystal_I2C library
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#define DHT_PIN 15
#define DHT_TYPE DHT22
DHT dht(DHT_PIN, DHT_TYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
dht.begin();
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("DHT22 Sensor");
delay(1000);
}
void loop() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
if (isnan(temperature) || isnan(humidity)) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sensor Error!");
return;
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
lcd.print(humidity);
lcd.print("%");
delay(2000);
}
Key Functions
- dht.readTemperature() Returns temperature in Celsius
- dht.readHumidity() Returns relative humidity percentage
- isnan() Checks if reading is valid (not NaN)
- dht.begin() Initializes the DHT sensor
Conclusion
DHT11 and DHT22 sensors provide an easy way to measure temperature and humidity with microcontrollers. The DHT22 offers better accuracy and range, while DHT11 is more costeffective for basic applications.
