ESP8266 บันทึกข้อมูลเข้า Thingspeak

Posted by | September 3, 2015 | Arduino, Embeded System, ESP8266 | One Comment
text17861-6-2-8

เอาล่ะครับ เพื่อเป็นการตอบรับ เกี่ยวกับ Internet of Thing ที่กำลังจะมีบทบาท และ จะเป็นส่วนหนึ่งของชีวิตประจำวันของเราต่อไป ทางเราจึงได้ออกบทความชุดแรก เกี่ยวกับ การประยุกต์ สร้าง Sensor Electronic ผ่าน Platform Arduino ซึ่งหาง่าย มาเชื่อมต่อกับเครือข่าย Internet

มารู้จัก Thingspeak

Screen Shot 2558-04-06 at 14.23.29

Thingspeak เป็นบริการ Platform as a Services ที่ให้บริการ เก็บข้อมูลแบบ Real-time, แสดงข้อมูลกราฟ จากที่ใดก็ได้ในโลก และ สามารถเปิดดูจากที่ไหนก็ได้ อีกเช่นกัน ซึ่งก็คล้ายกับ data.sparkfun.com แต่สิ่งที่ต่างกัน คือ Thingspeak จะแสดงผลข้อมูลผ่านกราฟได้ และ ดึงข้อมูล (PUT DATA) ไปใช้แสดงผลที่เวปเราได้ผ่าน <iframe> ซึ่งมัน update realtime ด้วย ซึ่งมีทั้งบริการทั้งแบบฟรี และ เสียเงิน แต่ในเวอร์ชั่นฟรี จะยอมให้เราบันทึกข้อมูล ทุกๆ 15 วินาที นะครับ

สำหรับ Thinkspeak จะเปิดให้เรา Sending Data ได้ 2 รูปแบบ

1. HTTP Request

การส่งข้อมูลจะส่งโดยใช้ GET Method รูปแบบของ HTTP Request แบบที่ data.sparkfun.com ใช้งาน สำหรับ Thinkspeak จะใช้รูปแบบดังรูป

capture-20150414-133302

2. REST API (Representational State Transfer)

เป็น Web Service แบบเรียบง่าย โดยเรียกใช้ผ่านทาง HTTP Method GET/POST/PUT/DELETE  ซึ่งมันออกแบบไว้เป็น เชื่อมต่อกับจัดการฐานข้อมูล แสดงผล, เพิ่มรายการ, แก้ไขรายการ และ ลบรายการ ซึ่งมันทำได้มากกว่า HTTP Request

Method การทำงาน รูปแบบ URI
GET เรียกข้อมูลมาแสดงหลายรายการ http://example.com/tests/
เรียกข้อมูลมาแสดงทีละรายการ http://example.com/tests/123
POST เพิ่มข้อมูล http://example.com/tests/
PUT แก้ไขข้อมูล http://example.com/tests/123
DELETE ลบข้อมูล http://example.com/tests/123

ซึ่งใน API ของ Thinkspeak ใช้แค่ GET และ POST ครับ ซึ่งเราจะใช้แบบ HTTP Request เหมือนเดิมก็ได้นะครับ แต่ในบทความนี้ ทางผมจะเลือกใช้ REST API บ้าง เพื่อให้ที่พวกเราเห็นวิธีการส่งข้อมูล หลากหลายรูปแบบครับ ซึ่งใครอยากลอง HTTP Request ลองเอง ก็ได้ครับ ไม่ยาก แค่จัด format ที่จะ Request ใหม่เท่านั้น

เริ่มต้นกันเลย

  1. สิ่งที่แรกที่ต้องทำ ลงทะเบียนกับทาง เวป ThingSpeak
  2. สร้างช่องของคุณ Channels page โดยการ click Create New Chaanel
  3. จากนั้นเราจะได้ API Key สำหรับ เขียนข้อมูลเข้า Server
  4. จากนั้นเราส่งข้อมูลเข้า Server ได้เลย ครับ

สร้าง Package สำหรับส่งให้ Web Server

Package ข้อมูลที่ จะใช้ส่งไปยัง WebServer ซึ่งจะประกอบไปด้วยค่าของ API Key และ ข้อมูลของ field

capture-20150414-134340

โดยใน Arduino เราจะสร้าง Package นี้โดย ซึ่งใน tsData จะเป็นข้อมูลอื่น ก็ได้นะครับ หรือ จะต่อมากกว่า 1 ข้อมูล ก็ได้นะครับ

    client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: "+writeAPIKey+"\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(tsData.length());
    client.print("\n\n");
    client.print(tsData);

ดูเพิ่มเติมจาก https://thingspeak.com/docs/channels

เข้าไปดูโค๊ดทั้งหมดได้ที่ลิงค์นี้ Thinkspeak_rest.ino

เอาล่ะครับ คงได้เห็นการประยุกต์ ESP8266 ไมโครคอนโทรลเลอร์ Standalone ตัวเดียวที่ใช้ ส่งข้อมูลเข้า Server ได้ ตอนนี้ก็อยู่ที่เราล่ะจะเอาไปประยุกต์อะไรกัน

เพิ่มเติม

About chang

ชื่อ “ช้าง” ส่วนมากเขาจะเรียกว่า “พี่ช้าง” แล้ว มีความสนใจทางเทคโนโลยีทางคอมพิวเตอร์ อิเล็กทรอนิกส์ และ หุ่นยนต์ เป็นทั้งนักคิด นักประดิษฐ์ ชอบทดลองเล่น จนเดี่ยวนี้รู้สึกว่าจะเล่นมากกว่ามืออาชีพไปสักแล้ว

  • Rachot Phuengsuk

    ดีมากเลยครับ ขอบคุณครับ