Lập Trình Arduino Cơ Bản → Cảm Biến Nhiệt độ Và độ ẩm DHT11

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

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

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.

Từ khóa » Cảm Biến Nhiệt độ Và độ ẩm Dht11 Arduino