Trong bài học này, chúng ta cùng tìm hiểu cảm biến DHT11 – một loại cảm biến đo được nhiệt độ và độ ẩm của môi trường xung quanh. Chúng ta sẽ lập trình hiển thị các thông tin đọc được từ cảm biến này lên màn hình LCD mà chúng ta đã làm quen ở bài học trước.
import time import dht from lcd_1602 import LCD1602 lcd1602 = LCD1602(0) dht_pin = Pin(pin21.pin) dht11 = dht.DHT11(dht_pin) while True: dht11.measure() lcd1602.clear() lcd1602.move_to(0, 0) lcd1602.putstr('Nhiet do: ' + str(dht11.temperature())) lcd1602.move_to(0, 1) lcd1602.putstr('Do am: ' + str(dht11.humidity())) time.sleep(5)
import dht
Khai báo thư viện dht để có thể làm việc được với cảm biến DHT11.
dht_pin = Pin(pin21.pin)
Để làm việc với cảm biến DHT11, ta cần khai báo chân IO (gọi là Pin) nối với cảm biến. Để khai báo, ta tạo một đối tượng tên là dht_pin và truyền và số thứ tự của chân IO tín hiệu 1 của cổng 2. Chúng ta cần đọc tài liệu kỹ thuật của phần cứng để biết được số thứ tự của các chân IO này.
Tuy nhiên ta có thể gọi số thứ tự này ra bằng cách gọi theo cú pháp sau pinXY.pin (với X là số cổng 1-6, Y là chân tín hiệu số 1 hoặc 2) mà không cần tìm hiểu sâu về phần cứng bên dưới.
dht11 = dht.DHT11(dht_pin)
Tạo đối tượng thuộc lớp DHT11 trong thư viện dht để làm việc với cảm biến và truyền vào đối tượng Pin đã tạo ra ở câu lệnh trước đó.
Bạn có thể tham khảo thêm tài liệu hướng dẫn của DHT ở đây https://docs.micropython.org/en/latest/esp32/quickref.html#dht-driver
dht11.measure()
Cập nhật nhiệt độ từ cảm biến DHT11.
dht11.temperature() dht11.humidity()
Đọc và trả về độ ẩm (Humidity) và nhiệt độ (Temperature) của môi trường từ cảm biến.
str(dht11.temperature()) str(dht11.humidity())
Vì màn hình LCD 1602 nhận thông tin dạng chữ. Trong khi giá trị trả về từ cảm biến là dạng số nên ta dùng hàm str() để chuyển kiểu dữ liệu số sang dạng chữ. Cấu trúc hàm str() có cú pháp như sau:
str(value)
Trong đó value là giá trị cần chuyển đổi sang văn bản.
lcd1602.move_to(0, 0) lcd1602.putstr('Nhiet do: ' + str(dht11.temperature())) lcd1602.move_to(0, 1) lcd1602.putstr('Do am: ' + str(dht11.humidity()))
Đoạn lệnh này in ra kết quả đọc được trên 2 dòng của màn hình.
Sau khi chạy chương trình, bạn sẽ thấy giá trị nhiệt độ và độ ẩm được hiển thị trên màn hình LCD. Bạn thử thổi liên tục vào cảm biến để thấy sự thay đổi cả về nhiệt độ và độ ẩm.