ESP32 Cảm Biến Nhiệt Độ và Độ Ẩm

Hướng dẫn này sẽ chỉ cho bạn cách sử dụng ESP32 để đọc giá trị nhiệt độ và độ ẩm từ cảm biến DHT11 hoặc DHT22, và hiển thị kết quả trên Serial Monitor.

Linh Kiện Cần Thiết

1×mô-đun phát triển ESP-WROOM-32
1×Alternatively, ESP32 Uno-form board
1×Alternatively, ESP32 S3 Uno-form board
1×Cáp USB Type-C
1×Module Cảm Biến Nhiệt Độ Độ Ẩm DHT11
1×(Tùy chọn) Cảm Biến Nhiệt Độ và Độ Ẩm DHT22
1×Điện trở 10 kΩ
1×breadboard
1×Dây Jumper
1×(Tùy chọn) Jack Nguồn DC
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP32
1×(Khuyến nghị) Breakout Expansion Board for ESP32
1×(Khuyến nghị) Power Splitter for ESP32

Or you can buy the following kits:

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

Về Cảm Biến Nhiệt Độ và Độ Ẩm DHT11 và DHT22

Tóm lại, cảm biến DHT22 có độ chính xác cao hơn, phạm vi đo rộng hơn nhưng đắt tiền hơn so với DHT11. Hãy cùng xem điểm chung và khác biệt giữa chúng

Điểm chung

  • Cùng pinout
  • Cùng cách đấu nối với ESP32
  • Code ESP32 tương tự nhau

Điểm khác biệt

Bảng dưới đây cho thấy sự khác biệt chi tiết giữa DHT11 và DHT22:

DHT22 DHT11
Giá thành chi phí thấp chi phí cực thấp
Phạm vi độ ẩm 0% đến 100% 20% đến 80%
Độ chính xác độ ẩm ± 2% đến 5% 5%
Phạm vi nhiệt độ -40°C đến 80°C 0°C đến 50°C
Độ chính xác nhiệt độ ± 0.5°C ± 2°C
Tần suất đọc 0.5Hz (một lần mỗi 2 giây) 1Hz (một lần mỗi giây)
Kích thước 15.1mm x 25mm x 7.7mm 15.5mm x 12mm x 5.5mm
Điện áp hoạt động3 đến 5V 3 đến 5V

Pinout DHT11 và DHT22

Cảm biến DHT11 và DHT22 bao gồm 4 chân:

  • Chân GND: kết nối chân này với GND (0V)
  • Chân VCC: kết nối chân này với VCC (3.3V hoặc 5V)
  • Chân DATA: chân này được sử dụng để giao tiếp giữa cảm biến và ESP32
  • Chân NC: Không kết nối
dht11 and dht22 temperature and humidity sensor sơ đồ chân

Chúng tôi rất khuyên bạn sử dụng module cảm biến DHT11 và DHT22. Các module này có điện trở tích hợp sẵn và chỉ có ba chân: VCC, GND, và DATA (hoặc có thể là: +, -, và OUT).

dht11 and dht22 temperature and humidity module sơ đồ chân
image source: diyables.io

Thứ tự các chân trên module có thể khác nhau tùy thuộc vào nhà sản xuất. Vui lòng kiểm tra nhãn chân được in trên module một cách cẩn thận.

Sơ Đồ Đấu Nối giữa DHT11/DHT22 và ESP32

Cách đấu nối với ESP32 giống nhau cho cả hai cảm biến. Ở dạng nguyên bản, cần một điện trở từ 5K đến 10K Ohm để giữ đường data ở mức cao và cho phép giao tiếp giữa cảm biến và ESP32

Đấu Nối ESP32 - Cảm Biến DHT11

ESP32 dht11 temperature and humidity sensor sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Nếu bạn chưa rõ cách cấp nguồn cho ESP32 và các linh kiện khác, xem: Cách Cung Cấp Nguồn Điện Cho ESP32.

Đấu Nối ESP32 - Cảm Biến DHT22

ESP32 dht22 temperature and humidity sensor sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Đấu Nối ESP32 - Module DHT11

Hầu hết các module cảm biến DHT22 đều có điện trở tích hợp sẵn, vì vậy bạn không cần thêm điện trở ngoài. Điều này giúp chúng ta tiết kiệm công việc đấu nối hoặc hàn.

ESP32 dht11 temperature and humidity module sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Đấu Nối ESP32 - Module DHT22

Hầu hết các module cảm biến DHT22 đều có điện trở tích hợp sẵn, vì vậy bạn không cần thêm điện trở ngoài. Điều này giúp chúng ta tiết kiệm công việc đấu nối hoặc hàn.

ESP32 dht22 temperature and humidity module sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Code ESP32 - DHT11

/* * Mã ESP32 này được phát triển bởi newbiely.vn * Mã ESP32 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/esp32/esp32-temperature-humidity-sensor */ #include <DHT.h> #define DHT_SENSOR_PIN 21 // ESP32 pin GPIO21 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 tempC = dht_sensor.readTemperature(); // read temperature in Fahrenheit float tempF = dht_sensor.readTemperature(true); // check whether the reading is successful or not if ( isnan(tempC) || isnan(tempF) || 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(tempC); Serial.print("°C ~ "); Serial.print(tempF); Serial.println("°F"); } // wait a 2 seconds between readings delay(2000); }

Code ESP32 - DHT22

/* * Mã ESP32 này được phát triển bởi newbiely.vn * Mã ESP32 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/esp32/esp32-temperature-humidity-sensor */ #include <DHT.h> #define DHT_SENSOR_PIN 21 // ESP32 pin GPIO21 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 tempC = dht_sensor.readTemperature(); // read temperature in Fahrenheit float tempF = dht_sensor.readTemperature(true); // check whether the reading is successful or not if ( isnan(tempC) || isnan(tempF) || 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(tempC); Serial.print("°C ~ "); Serial.print(tempF); Serial.println("°F"); } // wait a 2 seconds between readings delay(2000); }

Hai đoạn code trên chỉ khác nhau một dòng.

Các Bước Thực Hiện

  • Nếu đây là lần đầu tiên bạn sử dụng ESP32, hãy xem ESP32 - Cài Đặt Phần Mềm.
  • Thực hiện đấu nối như hình ảnh trên.
  • Kết nối bo mạch ESP32 với máy tính của bạn qua cáp micro USB
  • Mở Arduino IDE trên máy tính.
  • Chọn đúng bo mạch ESP32 (ví dụ: ESP32 Dev Module) và cổng COM.
  • Nhấp vào biểu tượng Libraries ở thanh bên trái của Arduino IDE.
  • "DHT" trong hộp tìm kiếm, sau đó tìm thư viện DHT sensor của Adafruit
  • Cài đặt thư viện bằng cách nhấp vào nút Install.
ESP32 dht sensor thư viện
  • Một cửa sổ xuất hiện yêu cầu bạn cài đặt các thư viện phụ thuộc
  • Cài đặt tất cả thư viện phụ thuộc bằng cách nhấp vào nút Install All.
ESP32 adafruit unified sensor thư viện
  • Sao chép một trong những đoạn code trên và mở bằng Arduino IDE
  • Biên dịch và upload code lên bo mạch ESP32 bằng cách nhấp nút Upload trên Arduino IDE
  • Làm cho cảm biến lạnh hơn hoặc nóng hơn. Ví dụ, đặt cảm biến gần một tách cà phê nóng
  • Xem kết quả trên Serial Monitor. Nó sẽ trông như thế này:
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.

Bình Luận