Tìm kiếm mã

Mã Arduino và Video cho cảm biến nhiệt độ và độ ẩm DHT11

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.

DHT11 Module

Đế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ấtASAIR
Số bộ phậnDHT11
Điện áp logic/IO3.3–5.5 V
Điện áp cung cấp3.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ố PWMN/A
Ngưỡng logic đầu vào0.3*VDD đến 0.7*VDD
Sụt áp / RDS(on) / bão hòaN/A
Giới hạn nhiệt0 đến 60 °C
Đóng góiDIP 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

Arduino wiring for DHT11 Temperature and humidity sensor
Arduino wiring for DHT11 Temperature and humidity sensor

Để đấ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

Hình ảnh

Arduino wiring for DHT11 Temperature and humidity sensor
Arduino wiring for DHT11 Temperature and humidity sensor
DHT11 Module
DHT11 Module
DHT11 Module
DHT11 Module
53-This is the Arduino code and video for a DHT11 temperature and humidity sensor.
Ngôn ngữ: C++
/*
 * 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

Tập tin📁

Thư viện Arduino (tệp nén)

Tập tin Fritzing

Hướng dẫn Sử dụng

Các tập tin khác