ESP8266 DHT22

Hướng dẫn này chỉ cho bạn cách sử dụng ESP8266 để đọc nhiệt độ và độ ẩm từ cảm biến DHT22. 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×DHT22 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)

Về cảm biến nhiệt độ và độ ẩm DHT22

Cấu hình chân của cảm biến nhiệt độ và độ ẩm

DHT22 trên thị trường có hai dạng: cảm biến và mô-đun.

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

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

Mô-đun DHT22 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 dùng để giao tiếp giữa cảm biến và ESP8266

※ Lưu ý:

Cách 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 được in trên module làm tham khảo là bắt buộc. Hãy nhìn kỹ nhé!

Sơ đồ đấu dây

ESP8266 - Đấu Dây Cảm Biến DHT22

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ảm biến dht22 đo nhiệt độ và độ ẩm 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 - Kết nối mô-đun DHT22

Hầu hết các mô-đun cảm biến DHT22 có một đ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 mô-đun ESP8266 NodeMCU dht22 đ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 Độ DHT22

  • Để 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 DHT22.
#define DHT_PIN D7
  • Chỉ định loại cảm biến: DHT22
#define DHT_TYPE DHT22
  • Tạo một đối tượng DHT.
DHT dht22(DHT_PIN, DHT_TYPE);
  • Bắt đầu thiết lập cảm biến:
dht22.begin();
  • Đọc giá trị độ ẩm.
float humi = dht22.readHumidity();
  • Đọc nhiệt độ ở độ C.
float temperature_C = dht22.readTemperature();
  • Đọc nhiệt độ theo thang Fahrenheit.
float temperature_F = dht22.readTemperature(true);

Mã ESP8266 cho DHT22

/* * 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-dht22 */ #include <DHT.h> #define DHT_SENSOR_PIN D7 // The ESP8266 pin D7 connected to DHT22 sensor #define DHT_SENSOR_TYPE DHT22 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 tiên bạn sử dụng ESP8266.
  • Nối các linh kiện theo 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, 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à máy tính.
  • 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 đó tìm thư viện cảm biến DHT của Adafruit.
  • Nhấn nút Cài đặt để hoàn tất cài đặt.
thư viện cảm biến dht22 cho ESP8266 NodeMCU
  • Bạn sẽ được nhắc cài đặt thêm 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ấp vào nút Install All.
thư viện cảm biến thống nhất 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.
  • Kiểm tra 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ác chân pin vẫn giữ nguyên.
  • Dây kết nối tới ESP8266 không bị thay đổi.
  • Việc lập trình, với việc sử dụng một thư viện, tương đối giống nhau, chỉ cần sửa một dòng mã.

Các 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, có phạm vi đo rộng hơn, tuy nhiên đắt hơn.