CHI TIẾT BÀI VIẾT
HƯỚNG DẪN SỬ DỤNG CẢM BIẾN DHT11 VÀ ARDUINO HIỂN THỊ NHIỆT ĐỘ VÀ ĐỘ ẨM LÊN MÀN HÌNH LCD
1. Giới thiệu
Bài viết này sẽ hướng
dẫn các bạn cách sử dụng Sensor (cảm biến) DHT11 với Arduino và LCD để hiển thị
nhiệt độ, độ ẩm.
2. Nội dung chính
- Sử dụng cảm biến nhiệt độ và độ ẩm DTH11 kết nối với Arduino.
- Sử dụng LCD hiển thị nhiệt độ và độ ẩm từ DHT11.
3. Phần cứng cần thiết
- Arduino Uno R3
- LCD Text LCD1602
- Module giao tiếp I2C
- LCD có quá nhiều chân gây khó khăn trong quá trình đấu nối và chiếm dụng nhiều chân trên vi điều khiển.
- Module I2C ra đời để giải quyết vấn để này.
- Thay vì phải sử dụng 6 chân vi điều khiển để kết nối với LCD 16x2 (RS, EN, D7, D6, D5 và D4) thì module IC2 bạn chỉ cần tốn 2 chân (SCL, SDA) để kết nối.
- Module I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 16x2, LCD 20x4, ...) và tương thích với hầu hết các vi điều khiển hiện nay. |
-
Module DHT11 (sensor đo độ ẩm và nhiệt độ)
-
BreadBoard
4. Kết nối các thiết bị
-
Nối nguồn Arduino với Breadboard
- Nối trực tiếp chân 5V từ Arduino ra Board mạch tại cực dương.
- Nối trực tiếp chân GND từ Arduino ra Board mạch tại cực âm.
- Thực hiện kết nối DHT11 với Arduino
- Kết nối Module I2C & LCD với Arduino
5. Code thiết bị Arduino
Để sử sensor DHT11 giao tiếp với Arduino thì ta cần cài đặt thư viện DHT_Sensor
- Mở phần mềm Arduino 🡪 Sketch 🡪 Include Lirbary 🡪 Add .zip Library 🡪 chọn tới file zip DHT-sensor.zip.
- Tương tự ta add tiếp 🡪 file zip Adafruit_Sensor-master.zip
- Sau khi add thư viện nên thoát khỏi phần mềm Arduino rồi mở lại.
- Gọi thư viện DHT Sensor , LiquidCrystal_I2C.
- Mở Phần mềm Arduino 🡪 Sketch 🡪 Include Lirbary 🡪 Kéo xuống dưới chọn DHT_Sensor.
- Mở Phần mềm Arduino 🡪 Sketch 🡪 Include Lirbary 🡪 Kéo xuống dưới chọn LiquidCrystal_I2C. |
LiquidCrystal_I2C lcd(0x27,16,2); // Khai báo LCD
- Đặt địa chỉ LCD là 0x27 cho màn hình LCD 16x2.
- 16 là số cột của màn hình (nếu dùng loại màn hình 20x4) thì thay bằng 20.
- 2 là số dòng của màn hình (nếu dùng loại màn hình 20x4) thì thay bằng 4.
Code cấu hình DHT11, Arduino, LCD
#include
#include
LiquidCrystal_I2C lcd(0x27,16,2);
const int DHTPIN = 2;
const int DHTTYPE = DHT11;
DHT dht(DHTPIN, DHTTYPE);
byte degree[8] = {
0B01110,
0B01010,
0B01110,
0B00000,
0B00000,
0B00000,
0B00000,
0B00000
};
void setup() {
lcd.init();
lcd.backlight();
lcd.print("Nhiet do: ");
lcd.setCursor(0,1);
lcd.print("Do am: ");
lcd.createChar(1, degree);
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(t) || isnan(h)) {
}
else {
lcd.setCursor(10,0);
lcd.print(round(t));
lcd.print(" ");
lcd.write(1);
lcd.print("C");
lcd.setCursor(10,1);
lcd.print(round(h));
lcd.print(" %");
}
} |
Thực hiện: Nguyễn Mạnh Cương