ESP8266 DHT11

Hướng dẫn này sẽ chỉ cho bạn cách sử dụng ESP8266 để đọc nhiệt độ và độ ẩm từ cảm biến DHT11. Cụ thể, chúng ta sẽ tìm hiểu:

Phần cứng cần chuẩn bị

1×ESP8266 NodeMCU ESP-12E
1×Recommended: ESP8266 NodeMCU ESP-12E (Uno-form)
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (for USB-C PC)
1×DHT11 Temperature Humidity Sensor Module
1×10 kΩ Resistor
1×breadboard
1×dây jumper
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP8266
1×(Khuyến nghị) Power Splitter for ESP8266 Type-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Giới thiệu về Cảm biến Nhiệt độ và Độ ẩm DHT11

Bảng chân của cảm biến nhiệt độ và độ ẩm

DHT11 trên thị trường có hai dạng: cảm biến và module.

Các cảm biến DHT11 có bốn chân:

  • Chân GND: phải được nối với GND (0V)
  • Chân VCC: phải được nối với VCC (5V)
  • Chân DATA: được dùng để giao tiếp giữa cảm biến và ESP8266
  • Chân NC: Không được kết nối, chân này có thể bỏ qua
sơ đồ chân của cảm biến dht11 đo nhiệt độ và độ ẩm

Mô-đun DHT11 có ba chân:

  • Chân GND (-): phải được kết nối với GND (0V)
  • Chân VCC (+): phải được kết nối với VCC (5V)
  • Chân OUT: được sử dụng để giao tiếp giữa cảm biến và ESP8266

※ Lưu ý:

Việc bố trí các chân trên một module có thể khác nhau tùy thuộc vào nhà sản xuất. Việc sử dụng nhãn in trên module làm tham chiếu là bắt buộc. Hãy xem kỹ!

Sơ đồ đấu dây

ESP8266 - Dây kết nối cảm biến DHT11

Một điện trở có giá trị từ 5 kΩ đến 10 kΩ là cần thiết để duy trì đường dữ liệu ở mức cao, từ đó cho phép giao tiếp giữa cảm biến và ESP8266.

sơ đồ nối dây của cảm biến nhiệt độ và độ ẩm dht11 cho ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Xem thêm Sơ đồ chân ESP8266Cách cấp nguồn cho ESP8266.

ESP8266 - Đấu dây module DHT11

Hầu hết các mô-đun cảm biến DHT11 đều có điện trở tích hợp, do đó không cần thêm dây dẫn hoặc hàn.

sơ đồ nối dây của module ESP8266 NodeMCU dht11 đo nhiệt độ và độ ẩm

This image is created using Fritzing. Click to enlarge image

Cách Lập Trình Cho Cảm Biến Nhiệt Độ DHT11

  • Để bắt đầu, thư viện phải được bao gồm:
#include "DHT.h"
  • Xác định chân ESP8266 được kết nối với cảm biến DHT11.
#define DHT_PIN D7
  • Xác định loại cảm biến: DHT11
#define DHT_TYPE DHT11
  • Tạo một đối tượng DHT.
DHT dht11(DHT_PIN, DHT_TYPE);
  • Bắt đầu quá trình thiết lập cảm biến:
dht11.begin();
  • Đọc giá trị độ ẩm.
float humi = dht11.readHumidity();
  • Đọc nhiệt độ ở độ C.
float temperature_C = dht11.readTemperature();
  • Đọc nhiệt độ theo đơn vị Fahrenheit.
float temperature_F = dht11.readTemperature(true);

Mã ESP8266 cho DHT11

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp8266/esp8266-dht11 */ #include <DHT.h> #define DHT_SENSOR_PIN D7 // The ESP8266 pin D7 connected to DHT11 sensor #define DHT_SENSOR_TYPE DHT11 DHT dht_sensor(DHT_SENSOR_PIN, DHT_SENSOR_TYPE); void setup() { Serial.begin(9600); dht_sensor.begin(); // initialize the DHT sensor } void loop() { // read humidity float humi = dht_sensor.readHumidity(); // read temperature in Celsius float temperature_C = dht_sensor.readTemperature(); // read temperature in Fahrenheit float temperature_F = dht_sensor.readTemperature(true); // check whether the reading is successful or not if ( isnan(temperature_C) || isnan(temperature_F) || isnan(humi)) { Serial.println("Failed to read from DHT sensor!"); } else { Serial.print("Humidity: "); Serial.print(humi); Serial.print("%"); Serial.print(" | "); Serial.print("Temperature: "); Serial.print(temperature_C); Serial.print("°C ~ "); Serial.print(temperature_F); Serial.println("°F"); } // wait a 2 seconds between readings delay(2000); }

Hướng dẫn từng bước

Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:

  • Xem hướng dẫn ESP8266 - Cài đặt phần mềm nếu đây là lần đầu bạn sử dụng ESP8266.
  • Nối các thành phần như được hiển thị trong sơ đồ.
  • Kết nối bo mạch ESP8266 với máy tính của bạn bằng cáp USB.
  • Mở Arduino IDE trên máy tính của bạn.
  • Chọn bo mạch ESP8266 phù hợp, chẳng hạn (ví dụ NodeMCU 1.0 (ESP-12E Module)), và cổng COM tương ứng của nó.
  • Kết nối cáp USB giữa ESP8266 và PC.
  • Mở Arduino IDE, chọn đúng bo mạch và cổng.
  • Nhấp vào biểu tượng Thư viện ở thanh bên trái của Arduino IDE.
  • Tìm kiếm “DHT”, và sau đó xác định thư viện cảm biến DHT của Adafruit.
  • Nhấn nút Cài đặt để hoàn tất việc cài đặt.
thư viện cảm biến dht11 cho ESP8266 NodeMCU
  • Bạn sẽ được yêu cầu cài đặt một số phụ thuộc thư viện khác.
  • Để cài đặt tất cả các thư viện này, hãy nhấn nút Cài đặt Tất cả.
thư viện cảm biến thống nhất của adafruit cho ESP8266 NodeMCU
  • Sao chép mã tương ứng với cảm biến bạn có và mở nó bằng Arduino IDE.
  • Nhấp vào nút Tải lên trong Arduino IDE để biên dịch và tải mã lên ESP8266.
  • Thay đổi nhiệt độ của môi trường xung quanh cảm biến.
  • Xem kết quả trên Serial Monitor.
COM6
Send
Humidity: 31.00% | Temperature: 27.00°C ~ 80.60°F Humidity: 31.00% | Temperature: 27.00°C ~ 80.60°F Humidity: 31.00% | Temperature: 27.00°C ~ 80.60°F Humidity: 31.00% | Temperature: 27.00°C ~ 80.60°F Humidity: 31.00% | Temperature: 28.00°C ~ 82.40°F Humidity: 31.00% | Temperature: 28.00°C ~ 82.40°F Humidity: 31.00% | Temperature: 28.00°C ~ 82.40°F Humidity: 31.00% | Temperature: 28.00°C ~ 82.40°F Humidity: 32.00% | Temperature: 28.00°C ~ 82.40°F Humidity: 31.00% | Temperature: 29.00°C ~ 84.20°F Humidity: 32.00% | Temperature: 29.00°C ~ 84.20°F Humidity: 31.00% | Temperature: 29.00°C ~ 84.20°F
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.

Kiến thức bổ sung

Hãy so sánh cảm biến DHT11 và DHT22.

Những điểm chung giữa DHT11 và DHT22

  • Cấu hình chân cắm vẫn giữ nguyên.
  • Việc đấu dây tới ESP8266 vẫn không thay đổi.
  • Việc lập trình, khi sử dụng một thư viện, tương đối giống nhau; chỉ cần sửa một dòng mã.

Sự khác biệt giữa DHT11 và DHT22

DHT11 DHT22
Price ultra low cost low cost
Temperature Range 0°C to 50°C -40°C to 80°C
Temperature Accuracy ± 2°C ± 0.5°C
Humidity Range 20% to 80% 0% to 100%
Humidity Accuracy 5% ± 2 to 5%
Reading Rate 1Hz (once every second) 0.5Hz (once every 2 seconds)
Body size 15.5mm x 12mm x 5.5mm 15.1mm x 25mm x 7.7mm

Rõ ràng, DHT22 có độ chính xác cao hơn DHT11, phạm vi đo lường rộng hơn, nhưng giá thành lại cao hơn.