ESP8266 và Thingspeak là vấn đề không mới, mình đã có trình bày qua các bài viết trước. Tuy nhiên mình quên mất là chưa có bài hướng dẫn chỉ dùng 1 modul ESP8266 gửi dữ liệu lên thẳng thingspeak luôn nên nay tranh thủ làm luôn cho đủ bộ

Trước khi bắt đầu bạn có thể xem qua bài viết:

Vậy thì ở bài này sẽ khác gì ?

Đầu tiên là mình sẽ tạm bỏ TIVA/Uno, tiếp đó là mình sẽ lập trình trực tiếp trên ESP8266 thông qua Arduino IDE luôn. Mình sẽ đi nhanh vào bước làm cụ thể

Chuẩn bị

Phần cứng

NodeMCU hoặc ESP8266 v12 + modul USB2UARTCảm biến DHT11 hoặc DHT22Dây nối và nguồn (nếu dùng modul v12 câu dây)

Phần mềm

Arduino IDE

Kết nối

Ta sẽ có kết nối như hình

*

Thingspeak

Mình sẽ tạo một tài khoản thingspeak, thêm 2 field và lưu lại key của thingspeak để sử dụng trong chương trình.

Đang xem: Esp8266/ nodemcu và thingspeak là gì, thingspeak là gì

Xem thêm: Vc, Vcc Là Gì ? Viết Tắt Của Từ Gì? Ký Hiệu V+/V Ký Hiệu V+/V

Xem thêm: Nghĩa Của Từ Thus Là Gì, Nghĩa Của Từ Thus, Nghĩa Của Từ Thus

Nếu các bạn có rắc rối ở chỗ này thì tham khảo phần Thingspeak trong bài TIVA và thingspeak hoặc bài Hệ thống nông nghiệp thông minh phần 1 nhé. Mình copy lại hình luôn cho các bạn dễ hình dung

*

Chương trình

Mình sẽ có chương trình và giải thích luôn trong code, các bạn xem luôn cho dễ hiểu.

Ở đây có 2 chỗ cần quan tâm là ten_wifi, mật khẩu và key thingspeak

//—————- Fill in your credentails ———————char ssid<> = “xxxx”; // your network SSID (name)char pass<> = “xxxxxxxx”; // your network passwordunsigned long myChannelNumber = 1; // Thay 1 bằng channel number mà bạn muốn lưu dữ liệuconst char * myWriteAPIKey = “xxxxxx”; // Copy mã WriteAPI ThingSpeak của bạn vào giữa dấu “”https://——————————————————————Ví dụ 1: Chương trình gửi 2 dữ liệu random lên 2 field của thingspeak

#include “ThingSpeak.h”#include //—————- Fill in your credentails ———————char ssid<> = “xxx”; // your network SSID (name), tên wifichar pass<> = “xxxxx”; // your network password, passwordunsigned long myChannelNumber = 1; // Replace the 0 with your channel number, channel của bạnconst char * myWriteAPIKey = “xxxxx”; // Paste your ThingSpeak Write API Key between the quotes, write API key//——————————————————————WiFiClient client;int number = 0;void setup() { //Mở port với baudrate 9600 Serial.begin(9600); while (!Serial) { ; // Chờ kết nối USB, phục vụ công tác debug } WiFi.mode(WIFI_STA); ThingSpeak.begin(client);}void loop() { float h = random(100); float t = random(70); // Connect or reconnect to WiFi if (WiFi.status() != WL_CONNECTED) { Serial.print(“Attempting to connect to SSID: “); // Serial.println(SECRET_SSID); while (WiFi.status() != WL_CONNECTED) { WiFi.begin(ssid, pass); Serial.print(“.”); delay(5000); } Serial.println(”
Connected.”); } // Ghi dữ liệu lên 1 field // int x = ThingSpeak.writeField(myChannelNumber, 1, t, myWriteAPIKey); // int y = ThingSpeak.writeField(myChannelNumber, 2, t, myWriteAPIKey); // Ghi dữ liệu lên nhiều field int x = ThingSpeak.setField(1, h); //setField(field, value) int y = ThingSpeak.setField(2, t); //setField(field, value) int z = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); // Kiểm tra return code if (z == 200) { Serial.println(“Channel update successful.”); } else { Serial.println(“Problem updating channel. HTTP error code ” + String(z)); } delay(20000); // Chờ 20s trước khi gửi dữ liệu mới}Ví dụ 2: Chương trình gửi dữ liệu DHT22 lên thingspeak thay cho 2 dữ liệu random

https://github.com/mathworks/thingspeak-arduino/blob/master/examples

Kết quả

Sau khi nạp chương trình thì mình sẽ có dữ liệu được cập nhật lên thingspeak như sau

*

Tạm kết

Vậy là mình đã trình bày nhanh qua cách gửi dữ liệu nhận được từ cảm biến, ở đây là DHT22 với thông tin nhiệt độ độ ẩm thông qua ESP8266, tất nhiên chỉ ở mức độ cơ bản, các bạn có thể nghiên cứu thêm về các bài hướng dẫn khác với ESP8266 để có thể nắm bắt nhanh hơn.

Leave a Reply

Your email address will not be published. Required fields are marked *