

The DHT22 is a digital temperature and humidity sensor that provides accurate readings of temperature in Celsius and humidity in percentage. It features a single-wire digital interface, making it easy to connect to microcontrollers like Arduino and Raspberry Pi. The DHT22 is widely used in weather stations, environmental monitoring systems, and HVAC applications due to its reliability and ease of use.








The DHT22 sensor is designed for precision and ease of integration. Below are its key technical details:
| Parameter | Value |
|---|---|
| Supply Voltage | 3.3V to 6V |
| Operating Current | 0.3mA (measuring), 60µA (standby) |
| Temperature Range | -40°C to +80°C |
| Temperature Accuracy | ±0.5°C |
| Humidity Range | 0% to 100% RH |
| Humidity Accuracy | ±2% RH |
| Sampling Period | 2 seconds |
| Communication Protocol | Single-wire digital interface |
The DHT22 has four pins, but only three are typically used in most applications. Below is the pinout:
| Pin | Name | Description |
|---|---|---|
| 1 | VCC | Power supply (3.3V to 6V) |
| 2 | DATA | Digital data output (connect to microcontroller pin) |
| 3 | NC (Not Connected) | No connection (leave unconnected) |
| 4 | GND | Ground |
Note: A pull-up resistor (typically 10kΩ) is required between the DATA pin and VCC for proper communication.
Below is an example of how to use the DHT22 sensor with an Arduino UNO. This code reads temperature and humidity values and displays them on the Serial Monitor.
#include "DHT.h"
// Define the DHT sensor type and pin
#define DHTPIN 2 // Pin connected to the DATA pin of DHT22
#define DHTTYPE DHT22 // Specify the sensor type (DHT22)
DHT dht(DHTPIN, DHTTYPE); // Initialize the DHT sensor
void setup() {
Serial.begin(9600); // Start serial communication at 9600 baud
dht.begin(); // Initialize the DHT sensor
Serial.println("DHT22 Sensor Initialized");
}
void loop() {
delay(2000); // Wait 2 seconds between readings
// Read temperature and humidity
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Check if the readings are valid
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Print the results to the Serial Monitor
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
}
No Data or Erratic Readings:
"Failed to read from DHT sensor!" Error:
Inaccurate Readings:
Sensor Not Responding:
Q: Can the DHT22 be used outdoors?
A: Yes, but it should be housed in a protective enclosure to shield it from direct sunlight, rain, and dust.
Q: What is the maximum cable length for the DHT22?
A: The maximum cable length depends on the pull-up resistor value and the environment. Typically, it works reliably up to 20 meters with a 10kΩ resistor.
Q: Can I use the DHT22 with a 3.3V microcontroller?
A: Yes, the DHT22 operates within a voltage range of 3.3V to 6V, making it compatible with 3.3V microcontrollers.
Q: How do I improve accuracy in my readings?
A: Place the sensor in a stable environment, avoid rapid temperature changes, and ensure proper ventilation around the sensor.
By following this documentation, you can effectively integrate the DHT22 sensor into your projects and troubleshoot common issues with ease.