
IoT-Ep2 | Gửi dữ liệu cảm biến lên Thingspeak
Trong bài viết này, chúng ta sẽ tìm hiểu về Thingspeak - một trong những nền tảng Internet vạn vật (IoT Platform) cho phép lưu trữ và quản lý dữ liệu IoT. 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
- Thingspeak là gì?
- Cài đặt Thingspeak và các trường để lưu dữ liệu cảm biến
- Cài đặt thư viện Thingspeak cho lập trình trên Arduino IDE
- Kết nối và lập trình cho NodeMCU
- Biểu đồ trên Thingspeak
- Kết luận
- Tài liệu tham khảo
1. Giới thiệu
Hiện nay, số lượng ứng dụng và thiết bị IoT không ngừng tăng. Song song với đó là các hệ thống và nền tảng quản lý thiết bị cũng được đề suất xây dựng và phát triển nhằm quản lý một cách hiệu quả lượng thông tin lớn (Big Data) và một lượng lớn các thiết bị cùng kết nối.
Bài viết này chúng ta sẽ biết được:
- Thingspeak: tạo kênh và các trường lưu trữ dữ liệu.
- Cài đặt thư viện Thingspeak cho Arduino IDE.
- Lập trình cho NodeMCU (ESP8266) gửi dữ liệu cảm biến DHT22 (nhiệt độ và độ ẩm) lên Thingspeak.
2. Thingspeak là gì?
IoT Platform là gì? Đó là một nền tảng cho phép các thiết bị IoT kết nối và lưu trữ dữ liệu cảm biến, ngoài ra nền tảng cho phép phát triển các chương trình phân tích xử lý dữ liệu thu thập, cũng như gửi đi các tin nhắn điều khiển dựa trên các logic đã được lập trình.
ThingSpeak là một IoT Platform cung cấp các dịch vụ cho phép bạn tổng hợp, trực quan hóa và phân tích các luồng dữ liệu trực tiếp trên Cloud. Với việc tích hợp MATLAB bên trong Thingspeak, chúng ta có thể viết code để thực thi tiền xử lý, phân tích, hay vẽ đồ thị dữ liệu. Ngoài ra, trên Thingspeak chúng ta cũng có thể cài đặt thêm các logic cảnh báo hay gửi tin nhắn tới người dùng khi có sự thay đổi bất thường của dữ liệu cảm biến nhận được.
Hình 1 miêu tả cho chúng ta thấy mô hình kết nối đơn giản từ thiết bị tới Thingspeak.
Hình 1. Mô hình kết nối IoT Platform - Thingspeak
Ở mô hình này chúng ta có thể hiểu như sau:
- NodeMCU <–> WiFi Router <–> Internet <–> Thingspeak
NodeMCU kết nối tới WiFi Router để truy cập Internet, từ đó NodeMCU có thể gửi các gói tin tới Thingspeak. Trong bài viết này, chúng ta sẽ gửi thông tin nhiệt độ và độ ẩm thu được lên Cloud.
3. Cài đặt Thingspeak và các trường để lưu dữ liệu cảm biến
Bước đầu, chúng ta sẽ cần tạo một tài khoản trên website thingspeak.com để sử dụng các dịch vụ. Sau khi đăng nhập, chúng ta nhấn vào Channels để chuyển tới màn hình tạo quản lý kênh hoặc bạn có thể vào menu Channels –> My Channels (Hình 2).
Hình 2. Thingspeak
Sau đó, chúng ta nhấn vào New Channel để tạo một kênh lưu trữ dữ liệu (Hình 3).
Hình 3. Tạo kênh trên Thingspeak
Chúng ta sẽ bắt đầu với tạo một kênh kênh mới, và điền các thông tin cơ bản như Tên channel, phần miêu tả và tên cho các trường (Hình 4). Các trường ở đây đại diện cho các trường dữ liệu nhận được từ thiết bị của chúng ta. Ở đây Field 1 dành cho dữ liệu Nhiệt độ, và Field 2 cho Độ ẩm. Sau khi điền các thông tin cơ bản, chúng ta kéo xuống và nhấn vào Save Channel để lưu và khởi tạo kênh.
Hình 4. Tạo kênh lưu trữ dữ liệu trên Thingspeak
Sau khi kênh được tạo, chúng ta có thể thấy 2 biểu độ dữ liệu theo thời gian được tạo ra tương ứng với nhiệt độ và độ ẩm mà chúng ta đã cài đặt cho 2 trường dữ liệu (Hình 5). Chúng ta sẽ cần tới API Keys và Channel ID để có thể ghi và đọc dữ liệu từ Channel. Chúng ta nhấn vào API Keys để xem.
Hình 5. Kênh hiển thị Thingspeak
Để ghi dữ liệu vào kênh, chúng ta sẽ cần sử dụng Write API Key (Hình 6).
Hình 6. API Keys cho ghi và đọc dữ liệu
4. Cài đặt thư viện Thingspeak cho lập trình trên Arduino IDE
Để đơn giản hoá trong phần lập trình cho NodeMCU kết nối với Thingspeak, chúng ta có thể sử dụng thư viện mà MathWorks phát triển dành cho các nền tảng Arduino để liên kết với Thingspeak. Trở lại với Arduino IDE, chúng ta vào trình quản lý thư viện qua Sketch –> Inlude Library –> Library Manager, sau đó tìm kiếm với từ khoá Thingspeak. Chúng ta sẽ thấy thư viện Thingspeak được phát triển bởi MathWorks, nhấn Install để tải thư viện về (Hình 7).
Hình 7. Cài đặt thư viện Thingspeak
5. Kết nối và lập trình cho NodeMCU
Như đã nói ở đầu bài, chúng ta sẽ sử dụng mô-đun NodeMCU và cảm biến DHT22. Chúng ta có thể kết nối DHT22 với NodeMCU theo sơ đồ ở Hình 8.
Hình 8. Sơ đồ kết nối NodeMCU với DHT22
Như vậy, thư viện cho cảm biến DHT cũng được sử dụng. Nếu DHT Sensor Library chưa được tải về thì chúng ta có thể vào trình quản lý thư viện qua Sketch –> Inlude Library –> Library Manager, sau đó tìm kiếm với từ khoá DHT Sensor (Hình 9).
Hình 9. Cài đặt thư viện DHT Sensor
Các bạn có thể tìm thấy code ví dụ tại đây - WriteMultipleFieldsSecure. Sau khi mở trên Arduino IDE, chúng ta sẽ đi chỉnh sửa các thông tin cần thiết ở file secrets.h. Trong file này, chúng ta sẽ cần chỉnh sửa:
- SECRET_SSID - tên WiFi cho kết nối.
- SECRET_PASS - mật khẩu WiFi.
- SECRET_CH_ID - ID của kênh (Hình 5).
- SECRET_WRITE_APIKEY - API cho phép ghi dữ liệu (Hình 6).
Hình 10. Chỉnh sửa thông tin kết nối
Sau khi hoàn thành việc chỉnh sửa, chúng ta có thể Verify để kiểm tra code, hoặc có thể Upload chương trình vào NodeMCU. Chúng ta có thể mở Serial Monitor lên để xem các thông tin được Serial.print ra màn hình (Hình 11).
Hình 11. Cửa sổ Serial Monitor
6. Biểu đồ trên Thingspeak
Trở lại màn hình Thingspeak với tab Private View chúng ta sẽ thấy 2 biểu đồ thay đổi dữ liệu tương ứng với dữ liệu đo được từ cảm biến DHT22.
Hình 12. Biểu đồ hiển thị dữ liệu cảm biến DHT22
7. Kết luận
Trong bài viết này, chúng ta đã tìm hiểu cách gửi dữ liệu nhiệt độ và độ ẩm từ cảm biến DHT22 lên nền tảng Thingspeak bằng cách sử dụng mô-đun WiFi NodeMCU. Ngoài ra, trên Thingspeak chúng ta cũng có thể tuỳ chỉnh hiển thị đồ thị dữ liệu và viết các script bằng Matlab cho phân tích dữ liệu thu được.
8. Tài liệu tham khảo
- Code mẫu: https://github.com/itcomnetworks/IoT-Series
- Thingspeak: https://thingspeak.com/
- thingspeak-arduino: https://github.com/mathworks/thingspeak-arduino
- ESP8266/Arduino: https://github.com/esp8266/Arduino
- DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library