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 control 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 |
Communication Protocol | Single-wire digital interface |
Sampling Rate | 0.5 Hz (1 reading every 2 seconds) |
Dimensions | 15.1mm x 25mm x 7.7mm |
The DHT22 has four pins, as described in the table below:
Pin Number | Name | Description |
---|---|---|
1 | VCC | Power supply (3.3V to 6V) |
2 | DATA | Digital data output (connect to microcontroller) |
3 | NC | Not connected (leave unconnected) |
4 | GND | Ground (0V reference) |
Note: A 10kΩ pull-up resistor is required between the DATA pin and VCC for proper communication.
Below is an example of how to use the DHT22 with an Arduino UNO. This code uses the popular DHT
library.
#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 (required for DHT22)
// 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 readings to the Serial Monitor
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
}
Note: Install the
DHT
library in the Arduino IDE by navigating to Sketch > Include Library > Manage Libraries, then search for "DHT" and install the library by Adafruit.
No Data or Incorrect Readings
Frequent Communication Errors
Sensor Not Responding
Slow Response Time
Q: Can the DHT22 measure negative temperatures?
A: Yes, the DHT22 can measure temperatures as low as -40°C.
Q: Is the DHT22 waterproof?
A: No, the DHT22 is not waterproof. For outdoor or high-humidity environments, consider using a waterproof enclosure.
Q: Can I use the DHT22 with a 3.3V microcontroller?
A: Yes, the DHT22 operates with a supply voltage range of 3.3V to 6V, making it compatible with 3.3V microcontrollers.
Q: What is the difference between the DHT11 and DHT22?
A: The DHT22 offers higher accuracy, a wider temperature range, and better humidity resolution compared to the DHT11. However, it is slightly more expensive.