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

ESP32 3V3 GND D15 DHT11/22 VCC DATA GND 3V3 ? VCC GND ? GND D15 ? DATA

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.

Updated on: 2026-03-15T14:29:58+05:30

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements