
IoT - Ep 1 | NodeMCU+DHT22 đọc nhiệt độ và độ ẩm
Trong bài viết này, chúng ta làm quen với mô-đun NodeMCU và cảm biến DHT22 cho đọc nhiệt độ và độ ẩm. Các bạn có thể theo dõi video-demo hoặc bài hướng dẫn dưới đây.
Mục lục
- Giới thiệu
- Cài đặt Arduino và thư viện lập trình ESP
- Thư viện cảm biến DHT22
- Kết nối và lập trình
- Kết luận
- Tài liệu tham khảo
1. Giới thiệu
Hiện nay, chúng ta có thể thấy sự phổ biến của các ứng dụng Internet vạn vật này một tăng. Việc trang bị cảm biến theo dõi môi trường từ xa không còn là một trở ngại lớn nữa. Sự phát triển của công nghệ thông tin và hệ thống viễn thông đã thúc đẩy mạnh sự phát triển của nhiều loại hình dịch vụ và tiện ích khác nhau.
Mở đầu cho một series về IoT cơ bản, bài viết này sẽ giới thiệu một ứng dụng đơn giản về việc sử dụng mô-đun NodeMCU và cảm biến DHT22 để đo nhiệt độ và độ ẩm tương đối. Trong bài viết này, chúng ta sẽ tìm hiểu các phần sau:
- Cách cài đặt Arduino IDE để lập trình cho mô-đun NodeMCU.
- Cài đặt thư viện cảm biến DHT22.
- Lập trình cho NodeMCU đọc và hiển thị nhiệt độ và độ ẩm từ cảm biển DHT22.
NodeMCU là gì? NodeMCU (Hình 1) là một mô-đun được phát triển dựa trên Wi-Fi chip ESP8266 được sử dụng để tạo ra các thiết bị Internet vạn vật, Internet of Things (IoT). Được trang bị WiFi chip, mô-đun NodeMCU có thể gửi và nhận thông tin đến mạng cục bộ hoặc Internet qua Wi-Fi. Hiện nay, NodeMCU là một trong những mô-đun có giá thành rẻ và phổ biến cho các nhà phát triển ứng dụng thông minh IoT.
Hình 1. Sơ đồ Pinout của NodeMCU
Tiếp theo, chúng ta sẽ xem cách sử dụng Arduino IDE cho lập trình NodeMCU đọc thông tin cảm biến DHT22.
2. Cài đặt Arduino và thư viện lập trình ESP
Trước hết, chúng ta cần có chương trình phần mềm, thư viện lập trình và các thiết bị phần cứng.
- Arduino IDE - môi trường lập trình dành cho phần cứng, thiết bị nhúng như Arduino, ESP, và cả NodeMCU. Phần mềm Arduino IDE là một chương trình mã nguồn mở giúp chúng ta dễ dàng viết code và upload chương trình vào mô-đun điều khiển. Các bạn có thể vào đây để tải Arduino IDE về và cài đặt.
- ESP8266-Arduino - thư viện lập trình ESP8266 trên môi trường Arduino IDE.
Để cài đặt thư viện lập trình ESP8266, chúng ta mở cửa sổ Preferences của Arduino IDE, sau đó dán link https://arduino.esp8266.com/stable/package_esp8266com_index.json
vào trường quản lý URLs qua Preferences -> Additional Boards Manager URLs (Hình 2).
Hình 2. Cửa sổ Preferences của Arduino
Tiếp theo mở cửa sổ quản lý thiết bị bằng cách nhấn vào Tools –> Board –> Board Manager (Hình 3). Nhập tìm kiếm ESP8266, sau đó nhấn vào Install để cài đặt thư viện lập trình cho mô-đun NodeMCU. Sau khi cài đặt hoàn tất, chúng ta nhấn Close để đóng cửa sổ lại.
Hình 3. Cửa sổ quản lý thiết bị
Bây giờ, bạn có thể vào Tools –> Board –> ESP8266 Boards –> NodeMCU 0.9 hoặc 1.x (Hình 4). Như vậy Arduino IDE đã được cài đặt và sẵn sàng cho chúng ta viết code lập trình cho mô-đun.
Hình 4. Lựa chọn thiết bị lập trình
3. Thư viện cảm biến DHT22
Tiếp theo chúng ta có thể sử dụng thư viện có sẵn để sử dụng cảm biến DHT22. Từ Arduino IDE, chúng ta cũng có thể quản lý các thư viện như tải về hay xoá các thư viện cần thiết . Để thêm thư viện ta nhấn vào Sketch –> Include Library –> Manage Libraries (Hình 5).
Hình 5. Vào quản lý thư viện
Trong ô tìm kiếm, chúng ta gõ DHT sensor, kéo xuống thư viện tên DHT sensor library được phát triển bới Adafruit, rồi nhấn vào Install để cài đặt thư viện (Hình 6). Nếu 1 số thư viện phụ thuộc khác mà chưa được cài đặt, thì sẽ xuất hiện cửa sổ hỏi bạn có cài đặt không. Chúng ta sẽ nhấn Install all để cài đặt tất cả. Nhấn Close để đóng cửa sổ quán lý thư viện trên Arduino.
Hình 6. Cửa sổ quản lý thư viện
4. Kết nối và lập trình
Cảm biến DHT22 (Hình 7) có thể kết nối tới NodeMCU theo như Hình 8. Chúng ta có thể kết nối như sau:
- Chân VCC của cảm biến nối với chân 3V3 của NodeMCU.
- Chân Data của cảm biến nối với chân D2 của NodeMCU.
- Chân GND của cảm biến nối với chân GND của NodeMCU.
Hình 7. Chân Pinout của cảm biến DHT11 và DHT22
Hình 8. Sơ đồ kết nối NodeMCU với DHT22
Trở lại cửa sổ chương trình Arduino IDE, chúng ta có thể mở 1 ví dụ trong thư viện được tải về. Chúng ta nhấn vào File –> Examples –> DHT Sensor library –> DHTtester (Hình 9). Chúng ta sẽ sử dụng ví dụ này để kiếm tra dữ liệu cảm biến.
Hình 9. Ví dụ DHTTester
Trong phần code này, các bạn tìm tới phần #define DHTPIN để khai báo rằng chân tín hiệu của cảm biến được nối tới chân nào của mô-đun NodeMCU. Ở ví dụ này, chúng ta nối chân tín hiệu của cảm biến tới pin D2 (Hình 10).
Hình 10. Ví dụ Sketch đọc cảm biến
Để tải chương trình lên vi điều khiển, trước hết chúng ta cần kiểm tra xem mô-đun kết nối tới máy tính qua cổng serial nào. Các bạn nhấn vào Tools –> Port –> Serial ports kết nối từ NodeMCU (Hình 11).
Hình 11. Chọn cổng serial
Để kiểm tra code, chúng ta có thể nhấn vào Verify để biên dịch chương trình và kiểm tra lỗi. Tiếp theo chúng ta có thể nhấn vào Upload, chương trình sẽ được biên dịch và được tải lên vi điều khiển (Hình 10). Sau khi hoàn tất việc tải chương trình, chúng ta nhấn vào Serial Monitor (Hình 10) để xem thông tin cảm biến được in ra màn hình.
Hình 12. Cửa sổ Serial Monitor
5. Kết luận
Tới đây, chúng ta đã hoàn thành các bước để cài đặt phầm mềm và phần cứng trong sử dụng mô-đun NodeMCU với cảm biến DHT22 để đo nhiệt độ và độ ẩm. Từ ví dụ này, chúng ta có thể phát triển thêm như gửi dữ liệu thu được lên Cloud mà ta có thể truy cập và theo dõi từ xa qua Internet. Ví dụ như hiện nay có nhiều nền tảng điện toán như Thingspeak, Dashboards, MS Azure, Amazon Web Service hỗ trợ quản lý và lưu trữ liệu từ thiết bị IoT.
6. Tài liệu tham khảo
- Arduino IDE: https://www.arduino.cc/
- ESP8266-Arduino: https://github.com/esp8266/Arduino
- DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library