ESP32 Với Cảm Biến Nhiệt Độ Và Độ Ẩm DHT11 Sử Dụng Arduino IDE

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

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ả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ách nối dây cảm biến nhiệt độ và độ ẩm DHT11 với Node Wifi 32

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

Cài đặt thư viện cho cảm biến DHT11

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ó.

Cài đặt thư việ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:

Kết quả nhận được

Trường hợp không nhận được tín hiệu từ DHT11:

Khi 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!

Tags: cảm biến DHT, cảm biến nhiệt độ và độ ẩm, cảm biến nhiệt độ và độ ẩm DHT11, ESP32 và DHT11

Những bài liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Fill out this field
Fill out this field
Vui lòng nhập địa chỉ email hợp lệ.
You need to agree with the terms to proceed