Cảm biến DHT11 cho phép đọc cả nhiệt độ và độ ẩm. Với giá thành rẻ, đây là một lựa chọn phù hợp cho những dự án nhỏ không cần độ chính xác cao. Phiên bản DHT22 có độ chính xác cao hơn nhưng đắt tiền hơn.
Điện áp nguồn nuôi 3V –> 5V. Chân dữ liệu sử dụng tối đa 2.5mA.
Độ chính xác:
- 20-80% độ ẩm với sai số 5%
- 0-50°C nhiệt độ với sai số ±2°C
Tuy nhiên, tốc độ đọc từ cảm biến chỉ đạt 1 Hz (mỗi giây đọc 1 lần).
Khi kết nối với vi xử lý cần treo trở cao lên chân Data.
Chú ý chân 3 bỏ trống
Đối với cảm biến có gắn sẵn bo hỗ trợ thì không cần treo thêm trở:
Sơ đồ kết nối:
Chương trình có sử dụng thư viện ngoài:
Tải thư viện:
1/ DHT
2/ AdafruitSensor
/*************************************************************/ // Thư viện #include <DHT.h> #include <LiquidCrystal.h> /**************************************************************/ #define DHTPIN 10 // Chân 10 trên bo Uno #define DHTTYPE DHT11 DHT dht11(DHTPIN, DHTTYPE); /**************************************************************/ // LCD display const int rs = 12, en = 11, d4 = 2, d5 = 3, d6 = 4, d7 = 5; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); // unsigned long CurrentTime = 0; unsigned long LastRead = 0; unsigned long ReadInterval = 2100; // int h = 0; int t = 0; // void setup(void) { // Serial.begin(9600); Serial.println("Checking DHT11"); // // LCD 16x2 lcd.begin(16, 2); lcd.setCursor(0, 0); lcd.print("Nhiet do: "); lcd.setCursor(0, 1); lcd.print("Do am: "); // // Khởi động cảm biến dht11.begin(); } void loop(void) { CurrentTime = millis(); // //Cách khoảng thời gian để đọc if (CurrentTime - LastRead > ReadInterval) { /**********************************************************/ h = dht11.readHumidity(); // Độ ẩm t = dht11.readTemperature(); // Nhiệt độ /**************************************************************/ Serial.print("Temperature: "); Serial.println(t); // Serial.print("Humidity: "); Serial.println(h); // lcd.setCursor(11, 0); lcd.print(t); lcd.print("C"); // lcd.setCursor(11, 1); lcd.print(h); lcd.print("%"); // LastRead = millis(); } }