Xin chào các bạn,
Hôm nay tôi xin hướng dẫn các bạn cách tạo một máy đo nhiệt độ độ ẩm thông qua Orange Pi Zero và hiển thị nó lên màn LCD qua USB. Bạn cần các thiết bị sau:
- Orange Pi Zero, tất nhiên rồi 1 cái và cùng với nó là thẻ nhớ và nguồn micro usb tiêu chuẩn. Thẻ nhớ cài sẵn phiên bản Armbian mới nhất.
- Cảm biến nhiệt độ độ ẩm DHT11 (hoặc DHT22 cũng tương tự). Mua tại đây
- Màn hình LCD2USB, loại chỉ cần cắm cổng usb là hiển thị được, bao gồm cả module điều khiển chứ khong phải chỉ màn hình
Khi đã có đủ thiết bị, hãy bắt đầu:
Đầu tiên hãy khởi động Orange Pi Zero lên trước, cài đặt password root rồi pass admin như các hướng dẫn cài đặt Armbian cho Orange Pi chúng tôi đã hương dẫn. Kết nối LCD2USB qua cổng USB, kết nối DHT qua chân GPIO của Orange Pi Zero, DHT này rất đơn giản chỉ có 3 chân, chân VCC, chân GND và chân DATA. Nối chân VCC với chân số 1 của GPIO, DATA chân số 7 và GND chân số 9. Tham khảo Orange Pi Pinout này để biết số chân.
Sau khi đã kết nối dây xong, giờ quay lại màn hình CLI của Orange Pi Zero và bắt đầu (sử dụng user root)
Đầu tiên là cài thư viện GPIO cho Orange Pi Zero
apt-get install build-essential python3-dev python3-pip
git clone https://github.com/thanhtantran/orangepi_python_gpio
cd orangepi_python_gpio
python3 setup.py install
sau đó là tải code tôi đã để sẵn trên github về và chạy
git clone https://github.com/thanhtantran/opizero-dht-lcd
cd opizero-dht-lcd
pip install libusb1
pip install lcd2usb
python3 go.py
Có thể khi chạy sẽ hiện ra 2 lỗi là Error 1 và Error 2, kiểm tra lại chân kết nối của DHT. Nếu không có vấn đề gì khác, trên LCD của bạn sẽ hiện ra như hình bên, như vậy là thành công.
Tiếp theo bạn có thể đặt cronjob trên linux để chạy lệnh mỗi 1p
crontab -e
chèn lệnh sau vào cuối file
*/1 * * * * python3 /root/zero-dht-lcd/go.py
Toàn bộ mã nguồn đã được up lên github làm ví dụ, bạn có thể phát triển thêm bẳng Python các tính năng khác như:
- Lưu vào cơ sở dữ liệu để có datalog về nhiệt độ độ ẩm theo thời gian, trong mã nguồn đã có sẵn thư viện time và timedate
- Hiển thị truy cập trên cloud hoặc qua IP webserver dạng biểu đồ
- Màn hình LCD2USB cơ động có thể dùng hoặc rút ra khi cần, không ảnh hưởng đến quá trình chạy