
Cảm biến DHT11 và DHT22 là hai loại cảm biến đo nhiệt độ, độ ẩm phổ biến nhất trong các dự án Arduino, ESP8266, ESP32 nhờ giá thành rẻ, dễ sử dụng và chỉ cần một dây tín hiệu duy nhất. Bài viết này hướng dẫn bạn cách đấu nối và lập trình đọc dữ liệu từ hai loại cảm biến này.
1. Phân biệt DHT11 và DHT22
- DHT11: đo nhiệt độ 0–50°C (sai số ±2°C), độ ẩm 20–90% (sai số ±5%), tốc độ lấy mẫu khoảng 1 giây/lần. Giá rẻ, phù hợp ứng dụng không đòi hỏi độ chính xác cao.
- DHT22 (còn gọi AM2302): đo nhiệt độ -40–80°C (sai số ±0.5°C), độ ẩm 0–100% (sai số ±2%), tốc độ lấy mẫu khoảng 2 giây/lần. Độ chính xác cao hơn, phù hợp ứng dụng đo lường nghiêm túc hơn như trạm thời tiết, giám sát kho lạnh.
Cả hai đều có 4 chân (hoặc 3 chân với bản module đã tích hợp điện trở kéo lên): VCC, DATA (tín hiệu), NC (không dùng, chỉ có ở bản 4 chân), GND.
2. Sơ đồ đấu nối với Arduino Uno
- Chân VCC của cảm biến nối vào 5V trên Arduino.
- Chân GND của cảm biến nối vào GND trên Arduino.
- Chân DATA nối vào một chân digital bất kỳ, ví dụ D2.
- Nếu dùng module dạng linh kiện trần (không phải module đã tích hợp sẵn điện trở), cần thêm một điện trở kéo lên (pull-up) khoảng 10kΩ giữa chân DATA và VCC để tín hiệu ổn định.
Các module DHT11/DHT22 bán sẵn dạng 3 chân (PCB xanh) thường đã tích hợp sẵn điện trở kéo lên và tụ lọc nguồn, cắm là chạy được ngay, không cần thêm linh kiện phụ.
3. Cài đặt thư viện
Mở Arduino IDE, vào Sketch → Include Library → Manage Libraries, tìm và cài hai thư viện: DHT sensor library (của Adafruit) và Adafruit Unified Sensor (thư viện phụ thuộc bắt buộc).
4. Code mẫu đọc nhiệt độ, độ ẩm
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11 // đổi thành DHT22 nếu dùng DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Không đọc được cảm biến!");
return;
}
Serial.print("Độ ẩm: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Nhiệt độ: ");
Serial.print(t);
Serial.println(" *C");
}
5. Một số lưu ý khi sử dụng
- Không đọc cảm biến liên tục quá nhanh: DHT11 cần tối thiểu khoảng 1 giây, DHT22 cần khoảng 2 giây giữa hai lần đọc, nếu không sẽ trả về giá trị lỗi (NaN).
- Dây tín hiệu không nên đi quá dài (khuyến nghị dưới 20m), nếu đi dây dài nên dùng dây có chống nhiễu và giảm giá trị điện trở pull-up.
- Đặt cảm biến tránh ánh nắng trực tiếp và nguồn nhiệt (như gần động cơ, nguồn xung) để tránh sai lệch kết quả đo.
- Nếu cần độ chính xác cao và dải đo rộng hơn, nên chọn DHT22 thay vì DHT11.
Trên đây là hướng dẫn cơ bản để bắt đầu với cảm biến DHT11/DHT22. Bạn có thể tìm mua cảm biến DHT11, DHT22 chính hãng cùng các loại module cảm biến khác tại danh mục Cảm biến của Linh Kiện Điện Tử Hưng Yên.
