Cảm biến nhiệt độ và độ ẩm DHT11 – cảm biến nhiệt độ Arduino

Cảm biến nhiệt độ Arduino DHT (đo được cả độ ẩm) rất thông dụng hiện nay vì chi phí rẻ và rất dễ lấy dữ liệu thông qua giao tiếp 1-wire ( giao tiếp digital 1-wire truyền dữ liệu duy nhất), thích hợp sử dụng trong các ứng dụng yêu cầu độ chính xác không cao, môi trường không khắc nghiệt. Cảm biến được tích hợp bộ tiền xử lý tín hiệu giúp dữ liệu nhận về không cần phải qua bất kỳ tính toán nào.

  • Đặc điểm:
    • Điện áp hoạt động : 3V – 5V (DC)
    • Dải độ ẩm hoạt động : 20% – 90% RH, sai số ±5%RH
    • Dải nhiệt độ hoạt động : 0°C ~ 50°C, sai số ±2°C
    • Tần số lấy mẫu tối đa: 1 Hz
    • Khoảng cách truyển tối đa: 20m

Nếu cần độ chính xác cao hơn (±0.5°C) bạn có thể sử dụng các dòng cảm biến nhiệt độ arduino khác như DHT21 hay DHT22. Sơ đồ chân cảm biến DHT11 gồm 2 chân cấp nguồn, và 1 chân tín hiệu và 1 chân không sử dụng.

 

Cảm biến nhiệt độ Arduino DHT

Thiết bị cần chuẩn bị

  • 1 x Node Wifi.
  • 1 x Module cảm biến nhiệt độ và độ ẩm DHT11

module cảm biến nhiệt độ và độ ẩm DHT

 

Kết nối phần cứng

Module DHT11 sử dụng một chân digital nên bạn có thể sử dụng cổng Digital 0 để kết nối với module.

Lập trình điều khiển

Để lập trình Arduino điều khiển được sensor DHT11 ta cần cài đặt thêm 2 thư viện. Bạn có thể cài đặt thêm thư viện trực tiếp trong Libraries manager hoặc download từ link.

Đầu tiên là Adafruit_Sensor: https://github.com/adafruit/Adafruit_Sensor

Lập trình điều khiển Adafruit_Sensor

Sau đó là thư viện DHT: https://github.com/adafruit/DHT-sensor-library

thư viện cho DHT

 

Đoạn code thực hiện công việc:

/**
 * Example for reading temperature and humidity
 * using the DHT22 and ESP8266
 *
 * Copyright (c) 2016 Losant IoT. All rights reserved.
 * https://www.losant.com
 */

#include "DHT.h"

#define DHTPIN 14     // what digital pin the DHT sensor is conected to
#define DHTTYPE DHT11   // there are multiple kinds of DHT sensors

DHT dht(DHTPIN, DHTTYPE, 15);

void setup() {
  Serial.begin(9600);
  Serial.setTimeout(2000);

  // Wait for serial to initialize.
  while(!Serial) { }

  Serial.println("Device Started");
  Serial.println("-------------------------------------");
  Serial.println("Running DHT!");
  Serial.println("-------------------------------------");

}

int timeSinceLastRead = 0;
void loop() {

    // Reading temperature or humidity takes about 250 milliseconds!
    // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
    float h = dht.readHumidity();
    // Read temperature as Celsius (the default)
    float t = dht.readTemperature();
    // Read temperature as Fahrenheit (isFahrenheit = true)
    float f = dht.readTemperature(true);

    // Check if any reads failed and exit early (to try again).
    if (isnan(h) || isnan(t) || isnan(f)) {
      Serial.println("Failed to read from DHT sensor!");
      timeSinceLastRead = 0;
      return;
    }

    // Compute heat index in Fahrenheit (the default)
    float hif = dht.computeHeatIndex(f, h);
    // Compute heat index in Celsius (isFahreheit = false)
    float hic = dht.computeHeatIndex(t, h, false);

    Serial.print("Humidity: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: ");
    Serial.print(t);
    Serial.print(" *C ");
    Serial.print(f);
    Serial.print(" *F\t");
    Serial.print("Heat index: ");
    Serial.print(hic);
    Serial.print(" *C ");
    Serial.print(hif);
  delay(2000);
}

 

Dòng 1: khai báo với hệ thống là trong chương trình ta có sử dụng thư viện DHT của Adafruit.

Dòng 3: do ở đây ta sử dụng cổng Digital 0 trên Node Wifi nên pin sử dụng là 14 để điều khiển module DHT11, vì vậy ta đặt một hằng số với tên gọi DHTPIN có giá trị là 14. Ta cũng khai báo loại DHT là DHT11 ở dòng kế tiếp. Có nhiều loại cảm biến khác nhau trong dòng DHT như DHT22 hay DHT21.

Dòng 5: khai báo đối tượng DHT, ta cần khai báo pin và loại DHT bằng các hằng số đã khai báo ở trên.

Trong hàm setup, ta cần khởi tạo đối tượng Serial để sử dụng in ra giá trị đọc được từ cảm biến trong hàm loop.

Trong hàm loop, ta lần lượt đọc các giá trị độ ẩm, nhiệt độ (độ C) và nhiệt độ (độ F) và in ra cửa sổ Serial.

Tiến hành biên dịch và upload code lên Arduino. Lúc này, bạn sẽ thấy các giá trị đọc được từ cảm biến sẽ được in ra trong cửa sổ Serial. Bạn thử thổi liên tục vào cảm biến hoặc dùng bật lửa làm cho không khí xung quanh cảm biến nóng lên. Sau đó, bạn có thể quan sát sự thay đổi cả về nhiệt độ và độ ẩm.

Bài tập mở rộng với cảm biến nhiệt độ arduino DHT

Bạn hãy lập trình cho Arduino đọc nhiệt độ và độ ẩm và hiển thị lên màn hình Oled.

Tổng kết,

Trên đây, OhStem đã hướng dẫn bạn cách sử dụng cảm biết nhiệt độ DHT. Bạn đã làm quen được với nó chưa? Nếu có bất kỳ thắc mắc gì, bạn có thể liên hệ với chúng tôi qua Fanpage để được hỗ trợ và giải đáp nhé.

Bây giờ, chúng ta cùng chuyển sang làm quen với những thiết bị điện tử khác trong Arduino nào.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Fill out this field
Fill out this field
Vui lòng nhập địa chỉ email hợp lệ.
You need to agree with the terms to proceed

Menu