ESP8266 NodeMCU DHT ThingSpeak
NodeMCU DHT บันทึกและแสดง ค่าความชื้นและอุณหภูมิออนไลน์ ดูได้ทั่วโลก ด้วย ThingSpeak การใช้งาน ThinkSpeak บันทึกและแสดงผลข้อมูลแบบออนไลน์
- สมัครสมาชิกที่นี่ https://thingspeak.com/users/sign_up

- เมื่อเข้าสู่ระบบแล้ว เลือก New Channel เพื่อสร้างฐานข้อมูล

- กรอกรายละเอียด และเลือกจำนวนฟิวส์ที่ต้องการบันทึก แล้วกด Save Channel

- จะพบกับกราฟแสดงข้อมูลของแต่ละฟิวส์ดังรูปนี้

- เลือกที่แทป API Keys จะเห็น Key ที่เราต้องนำมาใช้ในโปรแกรม

- ทดสอบพิมพ์ส่ง URL เพื่อบันทึกข้อมูลแบบ GET ดังนี้ โดยเวอร์ชันฟรี จะบันทึกข้อมูลได้ 15 วินาทีต่อ 1 ครั้ง http://184.106.153.149/update.html?key=MOJ0E4TVOA&field1=50&field2=25.5 ถ้าบันทึกสำเร็จ หน้าเว็บจะแสดงเลขแสดงจำนวนข้อมูล และเข้าดูที่กราฟจะเห็นข้อมูลถูกเพิ่มเรียบร้อย

- ทดสอบพิมพ์ URL เพื่อดึงข้อมูลมาแสดงแบบ GET ดังนี้ https://api.thingspeak.com/channels/เลข Channel ID/feeds.json?results=จำนวนข้อมูลที่ต้องการแสดงล่าสุด&api_key=Read API Keys เช่น https://api.thingspeak.com/channels/185221/feeds.json?results=1&api_key=MO4J0E4TVOAYAQ6
- จะให้ค่าออกมาแบบ JSON

การใช้งาน ESP8266 ThingSpeak
ต่อวงจร ESP8266 DHT ตามนี้
โคดตัวอย่าง Arduino ESP8266 DHT ThingSpeak
#include
#include
#include
#include
#include
#define DHTPIN D2
#define DHTTYPE DHT11
ESP8266WiFiMulti WiFiMulti;
HTTPClient http;
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println();
Serial.println();
Serial.println("Connecting...");
WiFiMulti.addAP("wifi_ssid", "wifi_password");
dht.begin();
}
void loop() {
// wait for WiFi connection
if ((WiFiMulti.run() == WL_CONNECTED)) {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t))
{
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.println(h);
Serial.println(t);
//http://api.thingspeak.com/update?api_key=X7G49NN1XVVVYXM&field1=10&field2=20
http.begin("http://api.thingspeak.com/update?api_key=X7G49NN1XVV2VYX&field1=" + String(t) + "&field2=" + String(h)); //HTTP
int httpCode = http.GET();
if (httpCode > 0) {
Serial.printf("[HTTP] GET... code: %d\n", httpCode);
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
Serial.println(payload);
}
} else {
Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
}
delay(20000);
}
คลิปวีดีโอสอน Arduino ESP8266 NodeMCU DHT ThingSpeak : บันทึกและแสดงความชื้นและอุณหภูมิออนไลน์