Mã Arduino và Video cho cảm biến nhiệt độ và độ ẩm DHT11
Trong hướng dẫn này, chúng ta sẽ khám phá cách sử dụng cảm biến nhiệt độ và độ ẩm DHT11 với Arduino. Cảm biến này là một lựa chọn chi phí thấp để đo cả nhiệt độ và độ ẩm, khiến nó trở thành lựa chọn hoàn hảo cho nhiều dự án khác nhau. Chúng ta sẽ đề cập đến cách đấu dây, mã cần thiết và cách các thành phần tương tác để cung cấp kết quả đọc chính xác.

Đến cuối hướng dẫn này, bạn sẽ có thể đọc nhiệt độ theo độ C, độ F và độ K, cũng như mức độ ẩm từ cảm biến DHT11. Để rõ ràng hơn, hãy xem video tại các mốc thời gian được chỉ định (trong video tại 00:00).
Phần cứng được giải thích
Cảm biến DHT11 bao gồm ba chân: chân nối đất, chân nguồn và chân dữ liệu. Chân nối đất kết nối với chân nối đất của Arduino, trong khi chân nguồn kết nối với nguồn 5V từ Arduino. Chân dữ liệu chịu trách nhiệm giao tiếp giữa Arduino và cảm biến, cho phép Arduino đọc các giá trị nhiệt độ và độ ẩm.
Cảm biến này sử dụng đầu ra kỹ thuật số, nghĩa là nó gửi dữ liệu ở định dạng nối tiếp đến Arduino. Nó chứa một nhiệt điện trở để đo nhiệt độ và một cảm biến độ ẩm điện dung. DHT11 chuyển đổi các tín hiệu tương tự mà nó nhận được thành tín hiệu kỹ thuật số, giúp các bộ vi điều khiển như Arduino dễ dàng xử lý dữ liệu hơn.
Chi tiết bảng dữ liệu
| Nhà sản xuất | ASAIR |
|---|---|
| Số bộ phận | DHT11 |
| Điện áp logic/IO | 3.3–5.5 V |
| Điện áp cung cấp | 3.3–5.5 V |
| Dòng điện đầu ra (mỗi kênh) | 0.5 mA |
| Dòng điện đỉnh (mỗi kênh) | 2.5 mA |
| Hướng dẫn tần số PWM | N/A |
| Ngưỡng logic đầu vào | 0.3*VDD đến 0.7*VDD |
| Sụt áp / RDS(on) / bão hòa | N/A |
| Giới hạn nhiệt | 0 đến 60 °C |
| Đóng gói | DIP 4 chân |
| Ghi chú / biến thể | Chi phí thấp, dễ sử dụng |
- Điện áp hoạt động từ 3.3V đến 5.5V.
- Dòng điện đầu ra tối đa 2.5 mA.
- Phạm vi nhiệt độ từ 0 đến 60 độ C.
- Phạm vi độ ẩm từ 20% đến 90%.
- Sử dụng điện trở kéo lên trên chân dữ liệu để có kết quả đọc ổn định.
- Đảm bảo kết nối đúng cách để tránh đầu vào trôi nổi.
- Cẩn thận với phân cực đảo ngược khi kết nối nguồn.
- Trì hoãn việc đọc ít nhất 1 giây để có kết quả chính xác.
Hướng dẫn đấu dây

Để đấu dây cảm biến DHT11 với Arduino của bạn, hãy làm theo các bước sau:
Đầu tiên, kết nối chân nối đất (thường màu đen hoặc nâu) của DHT11 với chân nối đất (GND) trên Arduino. Tiếp theo, kết nối chân nguồn (thường màu đỏ) của DHT11 với đầu ra 5V trên Arduino. Cuối cùng, kết nối chân dữ liệu (thường màu vàng hoặc trắng) với chân kỹ thuật số 2 trên Arduino. Đảm bảo sử dụng điện trở kéo lên (khoảng 10k ohm) giữa chân dữ liệu và chân nguồn để đảm bảo giao tiếp ổn định.
Ví dụ mã & hướng dẫn chi tiết
Trong mã Arduino, chúng ta bắt đầu bằng cách bao gồm tệp tiêu đề cần thiết cho cảm biến DHT11:
#include
Dòng này nhập thư viện chứa các hàm cần thiết để tương tác với cảm biến DHT11. Tiếp theo, chúng ta tạo một phiên bản của lớp DHT11:
dht11 DHT11; // tạo đối tượng DHT11
Dòng này khởi tạo đối tượng DHT11 mà chúng ta sẽ sử dụng để đọc dữ liệu từ cảm biến. Chân được kết nối với DHT11 được định nghĩa là:
#define dhtpin 2 // đặt chân để kết nối với DHT11
Điều này đặt chân dữ liệu cho cảm biến ở chân 2 trên Arduino. Trong hàm loop(), chúng ta đọc dữ liệu cảm biến:
DHT11.read(dhtpin);// khởi tạo việc đọc
Dòng này bắt đầu quá trình đọc, và độ ẩm có thể được truy cập bằng:
int humidity = DHT11.humidity;// lấy độ ẩm
Giá trị độ ẩm được lưu trong biến humidity, sau đó được in ra màn hình nối tiếp cùng với các giá trị nhiệt độ được chuyển đổi sang độ C, độ F và độ K.
Trình diễn / Điều gì sẽ xảy ra
Khi bạn chạy mã, bạn sẽ thấy các kết quả đọc nhiệt độ và độ ẩm được hiển thị trên màn hình nối tiếp. Các kết quả đọc nhiệt độ sẽ cập nhật mỗi nửa giây (trong video tại 00:00). Nếu cảm biến được làm nóng hoặc làm lạnh, bạn sẽ nhận thấy các giá trị thay đổi tương ứng. Hãy cẩn thận, vì DHT11 có giới hạn nhiệt độ tối đa là 60 độ C; vượt quá mức này có thể dẫn đến kết quả đọc không chính xác.
Mốc thời gian video
- 00:00 - Giới thiệu về cảm biến DHT11
- 01:30 - Hướng dẫn đấu dây
- 02:15 - Tổng quan về mã
- 03:00 - Chạy mã và đầu ra dự kiến
/*
* This is the Arduino code for the DHT11 module to read temperature and humidity.
* This code can display temperature in:
* C is used to get Celsius.
* F is used to get Fahrenheit.
* K is used for Kelvin.
* Watch the video https://youtu.be/FjZBt6eU9b4
*
* Written by Ahmad Nejrabi for Robojax Video
* Date: January 4, 2018, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*
*/
// header file from GitHub: https://github.com/adidax/dht11
#include <dht11.h>
dht11 DHT11; // create object of DHT11
#define dhtpin 2 // set the pin to connect to DHT11
void setup() {
Serial.begin(9600);// setting up serial monitor
}
void loop() {
DHT11.read(dhtpin);// initialize the reading
//code for Robojax.com video
int humidity = DHT11.humidity;// get humidity
Serial.print(getTemp('C'));
Serial.print("C ");
Serial.print(getTemp('F'));
Serial.print("F ");
Serial.print(getTemp('K'));
Serial.print("K ");
Serial.print(" humidity:");
Serial.print (humidity);
Serial.println("% ");
Serial.println();
delay(500);
}
/*
* getTemp(char type)
* type character of upper case.
* C is used to get Celsius.
* F is used to get Fahrenheit.
* K is used for Kelvin.
*/
float getTemp(char type) {
float temp = (float)DHT11.temperature;//get temp
if(type =='F')
{
return temp * 1.8 + 32;// convert to Fahrenheit
}else if(type =='K')
{
return temp + 274.15;// convert to Kelvin
}else{
return temp;
}
}
Tài nguyên & tài liệu tham khảo
-
Bên ngoàiDHT11 library on GitHubgithub.com
Tập tin📁
Thư viện Arduino (tệp nén)
-
DHT22 Arduino Library
robojax-DHT22_library.zip0.01 MB
Tập tin Fritzing
-
Temperature Sensor DHT11
Temperature Sensor DHT11.fzpz0.01 MB
Hướng dẫn Sử dụng
-
Hướng dẫn sử dụng DHT11
robojax-DHT11_manual.pdf0.82 MB
Các tập tin khác
-
DHT11 Simple Arduino Library
robojax-DHT11-simple_library.zip