

The DHT11 is a digital temperature and humidity sensor manufactured by KeyeStudio. It provides accurate readings of temperature in Celsius and relative humidity in percentage. The sensor is compact, easy to use, and widely adopted in applications requiring environmental monitoring. Its digital output makes it ideal for integration with microcontrollers and development boards like the Arduino UNO.








The DHT11 sensor is designed for low-cost and low-power applications. Below are its key technical details:
| Parameter | Value |
|---|---|
| Operating Voltage | 3.3V to 5.5V |
| Operating Current | 0.3mA (measuring), 60µA (standby) |
| Temperature Range | 0°C to 50°C |
| Temperature Accuracy | ±2°C |
| Humidity Range | 20% to 90% RH |
| Humidity Accuracy | ±5% RH |
| Sampling Period | 1 second |
| Communication Protocol | Single-wire digital signal |
The DHT11 sensor typically has four pins, but some modules may have only three pins. Below is the pinout for the standard DHT11 module:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VCC | Power supply pin (3.3V to 5.5V) |
| 2 | DATA | Digital signal output for temperature and humidity |
| 3 | NC (or GND) | Not connected (or Ground in some modules) |
| 4 | GND | Ground pin |
Note: For modules with only three pins, the NC pin is omitted, and the pinout is VCC, DATA, and GND.
Below is an example of how to use the DHT11 sensor with an Arduino UNO. This code uses the popular DHT library.
#include <DHT.h>
// Define the pin where the DHT11 is connected
#define DHTPIN 2 // Connect the DATA pin of DHT11 to digital pin 2
// Define the type of DHT sensor
#define DHTTYPE DHT11 // DHT11 sensor
// Initialize the DHT sensor
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600); // Start serial communication at 9600 baud
Serial.println("DHT11 Sensor Initialization");
dht.begin(); // Initialize the DHT sensor
}
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");
}
Note: Install the
DHTlibrary 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
Sensor Not Responding
Frequent Communication Errors
Inconsistent Readings
Q: Can the DHT11 measure negative temperatures?
A: No, the DHT11 can only measure temperatures in the range of 0°C to 50°C.
Q: Can I use the DHT11 with a 3.3V microcontroller?
A: Yes, the DHT11 operates within a voltage range of 3.3V to 5.5V, making it compatible with 3.3V systems.
Q: How do I extend the sensor's cable length?
A: Use shielded cables and keep the length as short as possible to minimize signal degradation. Adding a capacitor near the sensor may also help stabilize the signal.
Q: Is the DHT11 waterproof?
A: No, the DHT11 is not waterproof. For outdoor or high-humidity applications, consider using a waterproof sensor like the DHT22 or AM2301.
By following this documentation, you can effectively integrate the DHT11 sensor into your projects for reliable temperature and humidity monitoring.