ESP32 Đo nhiệt độ- Độ ẩm DHT11-DHT22
Phần 1: Giới Thiệu phần cứng.
Chúng ta có hai phiên bản của dòng cảm biến DHTxx. Chúng trông hơi giống nhau và có cùng sơ đồ chân, nhưng có các đặc điểm khác nhau. Đây là những thông tin chi tiết:
Mặc dù DHT22 chính xác hơn, chính xác hơn và hoạt động trong phạm vi nhiệt độ & độ ẩm lớn hơn; Có ba điều mà DHT11 đánh bại DHT22. Nó ít tốn kém hơn, kích thước nhỏ hơn và có tỷ lệ lấy mẫu cao hơn. Tốc độ lấy mẫu của DHT11 là 1Hz, tức là một lần đọc mỗi giây, trong khi tốc độ lấy mẫu của DHT22 là 0,5Hz, tức là một lần đọc cứ sau hai giây.
Tuy nhiên, điện áp hoạt động của cả hai cảm biến là từ 3 đến 5 vôn, trong khi dòng điện tối đa được sử dụng trong quá trình chuyển đổi (trong khi yêu cầu dữ liệu) là 2,5mA. Và điều tốt nhất là cảm biến DHT11 và DHT22 là 'có thể hoán đổi' - có nghĩa là, nếu bạn xây dựng dự án của mình với một cảm biến, bạn có thể rút phích cắm và sử dụng một cảm biến khác. Mã của bạn có thể phải điều chỉnh một chút nhưng ít nhất hệ thống dây điện vẫn như cũ!
PHẦN 2: THƯ VIỆN VÀ CODE CHƯƠNG TRÌNH.
THƯ HIỆN DOWLOAD DHT: DOWLOAD TẠI ĐÂY.
Cách Add Library : Sketch > Include Library > Add .ZIP Library
Code Chương trình :
#include <dht.h>
#define dataPin 8 //Chân số 8 kết nối cảm biến DHT.
dht DHT; // Thư viện DHT.
void setup()
{
Serial.begin(9600); // Tốc độ truyền lên máy tính.
}
void loop()
{
//Uncomment whatever type you're using!
int readData = DHT.read22(dataPin); // DHT22/AM2302 bạn sử dụng cái này.
//int readData = DHT.read11(dataPin); // DHT11 bạn sử dụng cái này.
float t = DHT.temperature; // đọc nhiệt độ lưu vào t.
float h = DHT.humidity; // đọc độ ẩm lưu vào h.
// in ra màn hình .
Serial.print("Temperature = ");
Serial.print(t);
Serial.print(" ");
Serial.print((char)176);//KÍ TỰ NHIỆT ĐỘ
Serial.print("C | ");
Serial.print((t * 9.0) / 5.0 + 32.0);//NHIỆT ĐỘ, Độ F (Fahrenheit).
Serial.print(" ");
Serial.print((char)176);//KÍ TỰ NHIỆT ĐỘ.
Serial.println("F ");
Serial.print("Humidity = ");
Serial.print(h);
Serial.println(" % ");
Serial.println("");
delay(2000); // Delays 2 secods
}
Kết quả ta được như sau: