การใช้งานระบบเก็บข้อมูลออนไลน์ด้วย ThingSpeak®

ThingSpeak®

ThingSpeak® เป็นเว็บแอปพลิเคชันที่ให้บริการเก็บข้อมูลแบบต่อเนื่องตามเวลา หน้าเว็บ thingspeak.com แสดงดังรูปที่ ข.1 โดยการใช้เว็บแอปพลิเคชันนี้ทำให้เราสามารถเก็บข้อมูลที่อ่านได้จากเซนเซอร์ผ่านไมโครคอนโทรลเลอร์ได้อย่างต่อเนื่อง ซึ่งเหมาะสำหรับการจัดเก็บข้อมูลบางประเภท โดยเราจะต้องอาศัยการสื่อสารข้อมูลผ่านระบบอินเตอร์เน็ต ซึ่งเราหรือบุคคลอื่นที่เราอนุญาตสามารถเรียกดูและนำข้อมูลที่จัดเก็บออกมาได้ผ่านเว็บแอป-พลิเคชันนี้ โดย ThingSpeak มีให้บริการทั้งในรูปแบบมีค่าใช้จ่าย และไม่มีค่าใช้จ่าย ซึ่งสำหรับการบริการแบบไม่มีค่าใช้จ่ายนั้น ผู้ให้บริการได้จำกัดการบันทึกข้อมูลไว้ด้วยอัตราสูงสุด 1 ครั้ง ในช่วงเวลา 15 วินาที

 

1

รูปที่ ข.1 แสดงหน้าเว็บ ThingSpeak.com

 

การใช้งาน ThingSpeak เบื้องต้น

ก่อนเริ่มใช้งาน ThingSpeak เราจะต้องสมัคร (Sign Up) เสียก่อน โดยการเข้าที่เว็บ https://thingspeak.com เพื่อทำการสมัครสมาชิก กรอกข้อมูลเพื่อลงทะเบียนเปิดใช้งาน เมื่อทำการสมัครสมาชิกเสร็จสิ้น ทำการ Sign In เพื่อทำการสร้าง Channel โดยให้เรากดไปที่ My Channel แล้วเลือก New Channel จะปรากฎหน้าต่าง ดังแสดงในรูปที่ ข.2

 

2

 

รูปที่ ข.2 หน้าต่างแสดงการกำหนด Channel ในการบันทึกข้อมูล

 

จากนั้นจึงทำการการกำหนดชื่อของ Channel กรอกคำอธิบาย กรอกชื่อชนิดของข้อมูลที่ต้องการบันทึก ตัวอย่างในรูปที่ ข.2 แสดงการบันทึกชื่อที่กำหนดในการอ่านค่าจากเซนเซอร์ LDR โดยกำหนดชื่อ “LDR” ในฟิลด์ของข้อมูล “Field 1” หลังจากนั้นจึงเลื่อนลงมาเพื่อบันทึก (Save Channel)

 

3

 

รูปที่ ข.3 หน้าต่างแสดงปุ่มบันทึก Channel ที่สร้าง

 

จากนั้นเราจะตรวจพบ Channel ที่เราสร้างขึ้นภายใต้เมนู My Channel โดยเมื่อเลือกเมนู จะพบปุ่ม API Key (รูปที่ ข.4) ซึ่งเราจะต้องทำการจดบันทึกค่า ID และ API Key เพื่อนำไปใส่ในโปรแกรมที่เขียนลงในไมโครคอนโทรลเลอร์ เพื่อระบุเส้นทางการส่งข้อมูล เมนู ตัวอย่างค่า ID และ API Key แสดงดังรูปที่ ข.5

 

1

 

รูปที่ ข.4 หน้าต่างแสดง Channel ที่สร้างขึ้น

 

2

 

รูปที่ ข.5 หน้าต่างแสดง ID และ API Key

 

 

การเชื่อมต่อกับ ThingSpeak®

          ThingSpeak® ได้จัดเตรียมไลบรารีและตัวอย่างไฟล์สำหรับการเชื่อมต่อไว้ โดยผู้ใช้สามารถดาวน์โหลดได้จาก https://github.com/mathworks/thingspeak-arduino และ https://github.com/nothans/thingspeak-esp-examples เมื่อผู้ใช้ได้ทำการติดตั้งไลบรารีแล้วก็จะสามารถเรียกใช้ไลบรารีใน ThingSpeak ได้โดยใช้คำสั่ง #include “Thing Speak.h” สำหรับแนวการเขียนโค้ดเบื้องต้นในการส่งข้อมูลจากสัญญาณ A0 ไปเก็บยัง ThingSpeak ผู้ใช้สามารถศึกษาได้จากโค้ดตัวอย่าง (จากไฟล์ A0_to_ThingSpeak.ino ที่อยู่ใน thingspeak-esp-examples-master) โดยในตัวอย่างที่แสดงนี้จะมีคำอธิบายจากผู้พัฒนาอยู่ด้วย ดังแสดงข้างล่างนี้

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

353

36

37

38

39

40

41

42

43

44

45

 

 

46

47

48

49

50

51

52

53

54

55

56

57

58

/*

 ESP8266 --> ThingSpeak Channel

 

 This sketch sends the value of Analog Input (A0)

 to a ThingSpeak channel using the ThingSpeak API */

 

#include "ThingSpeak.h"

#include "secrets.h"

 

unsigned long myChannelNumber = SECRET_CH_ID;

const char * myWriteAPIKey = SECRET_WRITE_APIKEY;

 

#include <ESP8266WiFi.h>

 

char ssid[] = SECRET_SSID;

char pass[] = SECRET_PASS;

 

WiFiClient  client;

 

void setup() {

  Serial.begin(115200);

  delay(100);

  WiFi.mode(WIFI_STA);

  ThingSpeak.begin(client);

}

 

void loop() {

  // 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("\nConnected.");

  }

 

  // Measure Analog Input (A0)

  int valueA0 = analogRead(A0);

 

  // Write value to Field 1 of a ThingSpeak Channel

  int httpCode = ThingSpeak.writeField(myChannelNumber, 1, valueA0, myWriteAPIKey);

 

  if (httpCode == 200) {

    Serial.println("Channel write successful.");

  }

  else {

    Serial.println("Problem writing to channel. HTTP error code " + String(httpCode));

  }

 

  // Wait 20 seconds to update the channel again

  delay(20000);

}

 

โดยไฟล์ Secrets.h ที่เรียกในตอนแรก จะใช้เก็บ SSID และรหัสผ่านของระบบเครือข่ายที่ NodeMCU เชื่อมต่ออยู่ และเก็บ ID และ API Key ของผู้ใช้ ThingSpeak (ดูรูปที่ ข.5)

 

เมื่อทำการอัปโหลดโปรแกรมแล้วปล่อยให้ NodeMCU ทำงานไปสักพักหนึ่ง (เนื่องจากข้อมูลจะเก็บทุก ๆ 20 วินาที ตามโค้ดที่แสดงข้างบน) เราก็จะสามารถเรียกดูข้อมูลที่เก็บในเว็ป ThingSpeak ได้ ตัวอย่างข้อมูลแสดงดังรูปที่ ข.6 โดยผู้ใช้สามารถนำข้อมูลที่บันทึกไว้ออกมาหรือนำข้อมูลไปวิเคราะห์ร่วมกับข้อมูลอื่น ๆ ได้ในลำดับต่อไป

 

1

 

รูปที่ ข.6 หน้าต่างแสดงข้อมูลที่บันทึกไว้