Arduino Cảm biến Nhiệt độ và Độ ẩm LCD

Chúng ta sẽ học cách làm thế nào:

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×LCD I2C
1×DHT11 Temperature Humidity Sensor Module
1×dây jumper

You can use DHT22 sensor instead of DHT11 sensor.

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)

Về DHT11, DHT22 và LCD

Nếu bạn chưa biết về cảm biến nhiệt độ DHT11, DHT22 và LCD (bản đồ chân, cách hoạt động, cách lập trình ...), hãy tìm hiểu về chúng trong các bài hướng dẫn sau:

Sơ đồ đấu dây

Arduino - Kết nối mô-đun DHT11 với LCD

sơ đồ đấu nối lcd cho Arduino dht11 đo nhiệt độ và độ ẩm

This image is created using Fritzing. Click to enlarge image

Arduino - Đấu nối LCD cho mô-đun DHT22

sơ đồ nối lcd cho Arduino dht22 đo nhiệt độ và độ ẩm

This image is created using Fritzing. Click to enlarge image

Kết nối thực tế cho DHT11

dây kết nối Arduino dht11 lcd

This image is created using Fritzing. Click to enlarge image

Mã Arduino - Cảm biến DHT11 - LCD I2C

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-temperature-humidity-sensor-lcd */ #include <LiquidCrystal_I2C.h> #include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT11 LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27 (from DIYables LCD), 16 column and 2 rows DHT dht(DHTPIN, DHTTYPE); void setup() { dht.begin(); // initialize the sensor lcd.init(); // initialize the lcd lcd.backlight(); // open the backlight } void loop() { delay(2000); // wait a few seconds between measurements float humi = dht.readHumidity(); // read humidity float tempC = dht.readTemperature(); // read temperature lcd.clear(); // check if any reads failed if (isnan(humi) || isnan(tempC)) { lcd.setCursor(0, 0); lcd.print("Failed"); } else { lcd.setCursor(0, 0); // start to print at the first row lcd.print("Temp: "); lcd.print(tempC); // print the temperature lcd.print((char)223); // print ° character lcd.print("C"); lcd.setCursor(0, 1); // start to print at the second row lcd.print("Humi: "); lcd.print(humi); // print the humidity lcd.print("%"); } }

※ Lưu ý:

Địa chỉ I2C của LCD có thể khác nhau tùy thuộc vào nhà sản xuất. Trong mã, chúng tôi đã sử dụng 0x27, theo như được nhà sản xuất DIYables xác định.

Hướng dẫn từng bước

  • Kết nối Arduino với PC bằng cáp USB
  • Mở Arduino IDE, chọn board và cổng đúng
  • Đi tới biểu tượng Thư viện ở thanh bên trái của Arduino IDE.
  • Tìm kiếm “DHT”, sau đó tìm thư viện cảm biến DHT của Adafruit
  • Nhấp vào nút Cài đặt để cài đặt thư viện.
thư viện cảm biến dht cho Arduino
  • Bạn sẽ được yêu cầu cài đặt một số phụ thuộc thư viện khác.
  • Nhấp nút Cài đặt Tất cả để cài đặt tất cả các phụ thuộc thư viện.
thư viện cảm biến thống nhất của adafruit dành cho Arduino.
  • Tìm kiếm “LiquidCrystal I2C”, sau đó tìm thư viện LiquidCrystal_I2C của Frank de Brabander
  • Nhấn nút Cài đặt để cài đặt thư viện LiquidCrystal_I2C.
thư viện liquidcrystal i2c cho Arduino
  • Sao chép mã ở trên và mở bằng Arduino IDE
  • Nhấp vào nút Tải lên trên Arduino IDE để tải mã lên Arduino
  • Làm cho 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 màn hình LCD
dây nối Arduino dht11 với lcd

This image is created using Fritzing. Click to enlarge image

Đoạn mã ở trên cũng hoạt động cho Arduino Nano. Một ông ngoại, người học qua hướng dẫn này để hướng dẫn cháu của mình, đã thử nghiệm đoạn mã này với Arduino Nano và gửi cho chúng tôi kết quả như dưới đây:

Arduino hiển thị nhiệt độ và độ ẩm trên lcd

Nếu LCD không hiển thị gì, hãy xem Xử lý sự cố trên LCD I2C

Mã Arduino - Cảm biến DHT22 - Màn hình LCD I2C

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-temperature-humidity-sensor-lcd */ #include <LiquidCrystal_I2C.h> #include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT22 LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27 (from DIYables LCD), 16 column and 2 rows DHT dht(DHTPIN, DHTTYPE); void setup() { dht.begin(); // initialize the sensor lcd.init(); // initialize the lcd lcd.backlight(); // open the backlight } void loop() { delay(2000); // wait a few seconds between measurements float humi = dht.readHumidity(); // read humidity float tempC = dht.readTemperature(); // read temperature lcd.clear(); // check if any reads failed if (isnan(humi) || isnan(tempC)) { lcd.setCursor(0, 0); lcd.print("Failed"); } else { lcd.setCursor(0, 0); // start to print at the first row lcd.print("Temp: "); lcd.print(tempC); // print the temperature lcd.print((char)223); // print ° character lcd.print("C"); lcd.setCursor(0, 1); // start to print at the second row lcd.print("Humi: "); lcd.print(humi); // print the humidity lcd.print("%"); } }

※ Lưu ý:

Mã cho DHT11 và DHT22 giống nhau ngoại trừ một dòng mã. Thư viện cho DHT11 và DHT22 là như nhau.

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.