Bài viết này sẽ hướng dẫn các bạn cách đọc thông tin từ cảm biến nhiệt độ và độ ẩm DHT11 với ESP32 sử dụng board Node Wifi32 và phần mềm Arduino IDE.
Hi vọng qua bài viết này, mọi người sẽ hiểu hơn về cách đọc cảm biến DHT11 bằng Node wifi32.
>> Xem thêm: [PDF] Lập trình Arduino là gì? Tài liệu học Arduino miễn phí 2021
Mục lục
Các Thiết Bị Cần Có:
Đối với hướng dẫn này, chúng tôi sẽ sử dụng:
- Board Node Wifi32
- Cảm biến DHT11
- Dây cắm
Cảm Biến Nhiệt Độ Và Độ Ẩm DHT11:
Cảm biến nhiệt độ và độ ẩm DHT11 đã được tích hợp trong một mạch duy nhất gồm 3 ngõ ra: GND, VCC, và dây tín hiệu (SIG)
Thông số kỹ thuật:
- Điện áp hoạt động: 3-5.5V DC
- Ngưỡng độ ẩm: 20 – 90%
- Sai số độ ẩm: ± 5%
- Ngưỡng nhiệt độ: 0 – 55°C
- Sai số nhiệt độ: ± 2°C
Kết nối cảm biến nhiệt độ và độ ẩm DHT11 với Node WiFi 32 như sau:
DHT11 | Node WiFi32 |
GND | GND |
VCC | VCC |
Dây tín hiệu (SIG) | Bất kỳ chân digital GPIO nào |
Sơ Đồ Nối Dây:
Cài Đặt Thư Viện:
Để đọc dữ liệu từ DHT11, chúng tôi sử dụng thư viện DHT sensor library của Adafruit.
Mở Arduino IDE vào Sketch > Include Library > Manage Libraries.
Sau khi cài đặt nhập “adafruit unified sensor” vào ô tìm kiếm. Cuộn xuống để tìm thư viện và cài đặt nó.
CODE:
Ở đây chúng tôi sử dụng chân 32 của Node WiFi:
#include "DHT.h" #define DHTPIN 32 // what digital pin the DHT sensor is connected to #define DHTTYPE DHT11 // there are multiple kinds of DHT sensors DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("DHTxx test!"); dht.begin(); } void loop() { // Wait a few seconds between measurements. delay(2000); float h = dht.readHumidity(); // Read temperature as Celsius (the default) float t = dht.readTemperature(); // Read temperature as Fahrenheit (isFahrenheit = true) float f = dht.readTemperature(true); // Check if any reads failed and exit early (to try again). if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Failed to read from DHT sensor!"); return; } // Compute heat index in Fahrenheit (the default) float hif = dht.computeHeatIndex(f, h); // Compute heat index in Celsius (Fahrenheit = false) float hic = dht.computeHeatIndex(t, h, false); Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.print(" *C "); Serial.print(f); Serial.print(" *F\t"); Serial.print(" Heat index: "); Serial.print(hic); Serial.print(" *C "); Serial.print(hif); Serial.println(" *F"); }
Giải thích code:
Đầu tiên phải khai báo thư viện DHT11:
#include "DHT.h"
Cấu hình chân DHT và chọn loại DHT là DHT11:
#define DHTPIN 32 // what digital pin the DHT sensor is connected to #define DHTTYPE DHT11 // there are multiple kinds of DHT sensors DHT dht(DHTPIN, DHTTYPE);
Hàm setup() khởi tạo serial với tốc độ baud là 9600 và gọi hàm dht.begin() để bắt đầu đọc dữ liệu
void setup() { Serial.begin(9600); Serial.println("DHTxx test!"); dht.begin(); }
Chờ một vài giây giữa các lần đo:
delay(2000);
Đọc dữ liệu trả về vào 3 biến:
float h = dht.readHumidity(); // Read temperature as Celsius (the default) float t = dht.readTemperature(); // Read temperature as Fahrenheit (isFahrenheit = true) float f = dht.readTemperature(true);
Kiểm tra dữ liệu trả về, nếu dữ liệu đọc được là nan thì in ra màn hình: Failed to read from DHT sensor!
if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Failed to read from DHT sensor!"); return; }
Nhiệt độ trả về ° C hay ° F dùng 2 câu lệnh như sau:
float hif = dht.computeHeatIndex(f, h); float hic = dht.computeHeatIndex(t, h, false);
In dữ liệu nhận được ra terminal:
Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.print(" *C "); Serial.print(f); Serial.print(" *F\t"); Serial.print(" Heat index: "); Serial.print(hic); Serial.print(" *C "); Serial.print(hif); Serial.println(" *F");
Kết quả nhận được:
Trường hợp không nhận được tín hiệu từ DHT11:
Tổng kết,
Trên đây là cách đọc thông tin từ cảm biến nhiệt độ và độ ẩm DHT11 với ESP32 sử dụng board Node Wifi32 và phần mềm Arduino IDE.
Để xem tất cả các bài hướng dẫn về lập trình Arduino, bạn truy cập vào đây nhé: Tổng hợp các bài hướng dẫn về Arduino. Nếu bạn có bất kỳ ý kiến đóng góp hoặc thắc mắc gì, bạn có thể để lại comment phía dưới hoặc liên hệ với OhStem qua Fanpage để được hỗ trợ. Chúc các bạn thành công!