Arduino Cảm biến Nhiệt độ và Độ ẩm
Trong bài hướng dẫn này, chúng ta sẽ học:
- Sự khác biệt giữa cảm biến nhiệt độ và độ ẩm DHT11 và DHT22
- Cách đọc giá trị nhiệt độ và độ ẩm từ DHT11 bằng Arduino
- Cách đọc giá trị nhiệt độ và độ ẩm từ DHT22 bằng Arduino
Nếu bạn chỉ muốn đo nhiệt độ, chúng tôi khuyên dùng Arduino - Cảm biến nhiệt độ thay thế. Đây là một cảm biến có giá rẻ và nhỏ gọn. Bạn có thể đặt nó trong nước nóng hoặc nước lạnh.
Phần cứng cần chuẩn bị
| 1 | × | Arduino Uno R3 | ||
| 1 | × | USB 2.0 cable type A/B (for USB-A PC) | ||
| 1 | × | USB 2.0 cable type C/B (for USB-C PC) | ||
| 1 | × | DHT11 Temperature Humidity Sensor Module | ||
| 1 | × | DHT22 Temperature Humidity Sensor Module | ||
| 1 | × | 10 kΩ Resistor | ||
| 1 | × | breadboard | ||
| 1 | × | dây jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Breadboard Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Enclosure for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO |
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | ||
| 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 và DHT22
Điểm chung giữa DHT11 và DHT22
- Các chân cắm (pinout) giống nhau
- Dây kết nối tới Arduino giống nhau
- Lập trình (với một thư viện) tương tự (chỉ có một dòng mã khác)
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 |
| Operating Voltage | 3 to 5V | 3 to 5V |
Như bạn có thể thấy, DHT22 có độ chính xác cao hơn một chút, phạm vi rộng hơn nhưng đắt hơn so với DHT11.
Bố trí chân
Cảm biến DHT11 và DHT22 ở dạng ban đầu có bốn chân:
- Chân GND: cần được kết nối với GND (0V)
- Chân VCC: cần được kết nối với VCC (5V, hoặc 3.3V)
- Chân DATA: chân này được dùng để giao tiếp giữa cảm biến và Arduino
- Chân NC: Không được kết nối, chúng ta có thể bỏ qua chân này

Một số nhà sản xuất cung cấp cảm biến DHT11 và DHT22 ở dạng module với ba chân: GND, VCC và DATA (hoặc thay thế: -, + và OUT).
※ Lưu ý:
Trong dạng module, thứ tự các chân của module có thể khác nhau giữa các nhà sản xuất. Luôn sử dụng nhãn in trên module. Nhìn kỹ!

Sơ đồ đấu dây
Việc nối dây tới Arduino giống nhau đối với cả hai cảm biến. Ở dạng ban đầu, một điện trở có giá trị từ 5KΩ đến 10KΩ là cần thiết để giữ cho dòng dữ liệu ở mức cao và để kích hoạt giao tiếp giữa cảm biến và Arduino.
Arduino - Dây kết nối cảm biến DHT11

This image is created using Fritzing. Click to enlarge image
Kết nối cảm biến DHT22 với Arduino

This image is created using Fritzing. Click to enlarge image
Arduino - Kết nối mô-đun DHT11
Hầu hết các module cảm biến DHT22 đều có sẵn một điện trở tích hợp, vì vậy bạn không cần thêm nó. Điều này giúp bạn tiết kiệm công việc nối dây và hàn.

This image is created using Fritzing. Click to enlarge image
Arduino - Kết nối Module DHT22
Hầu hết các module cảm biến DHT22 đều có một điện trở tích hợp sẵn, vì vậy bạn không cần phải thêm nó. Điều này giúp tiết kiệm một số công việc đấu dây hoặc hàn.

This image is created using Fritzing. Click to enlarge image
Cách Lập Trình Cho Cảm biến Nhiệt Độ DHTxx
Việc lập trình cho cả hai cảm biến tương tự. Chỉ có một dòng mã khác.
- Bao gồm thư viện:
- Định nghĩa chân Arduino được kết nối với cảm biến DHT:
- Định nghĩa loại cảm biến: DHT11 hoặc DHT22 (Đây là dòng mã khác biệt)
hoặc
- Khai báo đối tượng DHT
- Khởi tạo cảm biến:
- Đọc độ ẩm:
- Đọc nhiệt độ ở độ C:
- Đọc nhiệt độ theo thang Fahrenheit:
Mã Arduino - DHT11
Mã Arduino - DHT22
Nếu bạn so sánh hai đoạn mã ở phía trên, bạn nhận thấy có một dòng khác (dòng 11).
Hướng dẫn từng bước
- Kết nối Arduino với máy tính qua cáp USB
- Mở Arduino IDE, chọn board và cổng đúng
- Điều hướng tới biểu tượng Thư viện ở thanh bên trái của Arduino IDE.
- Tìm “DHT”, sau đó tìm thư viện cảm biến DHT của Adafruit
- Nhấp nút Cài đặt để cài đặt thư viện.

- Bạn sẽ được yêu cầu cài đặt thêm một số phụ thuộc thư viện khác
- Nhấp vào nút Install All để cài đặt tất cả các phụ thuộc thư viện.

- Sao chép mã ở trên tương ứng với cảm biến bạn đang có và mở bằng Arduino IDE
- Nhấp nút Tải lên trên Arduino IDE để tải mã lên Arduino
- Tạo môi trường xung quanh cảm biến nóng hơn hoặc lạnh hơn
- Xem kết quả trên Serial Monitor.
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.