เนื่องจากทีมสอนมีแนวความคิดว่า
น่าจะลองเปลี่ยนโจทย์ของการทำ workshop กันหน่อย
ซึ่งจัดที่ CAMT (College of Arts , Media and Technology)
หนึ่งในนั้นคือ
ถ้านำ IoT เข้ามาทำใน workshop จะเป็นอย่างไรกันบ้าง ?
เมื่อตกลงกันได้แบบคร่าว ๆ ก็เลยลงมือทำกันเลย
จึงสรุปการเตรียมการไว้นิดหน่อย

เริ่มด้วยการมาเรียนการเขียนโปรแกรมและติดต่อกับพวก IoT board กัน

ซึ่งก่อนเริ่มงานประมาณ 1 สัปดาห์
ได้มาเรียนกับ Nat จาก CMMC (Chiang Mai Maker Club)
และได้ board ตัวใหม่ที่ทาง CMMC ทำขึ้นมาเอง ชื่อว่า CMMC Latte
เพื่อให้ง่ายต่อการเรียนรู้ สำหรับคนเริ่มต้นใหม่ ๆ แบบพวกผม
ประกอบไปด้วยสิ่งที่ต้องการเลย เช่น

  • เป็น WIFI board ที่ใช้ชิบ ESP8266
  • USB เพื่อให้ง่ายต่อการ flash program
  • มี Sensor สำหรับวัดค่าอุณภูมิ ความชื้น และความดันอากาศให้ (Bosch BME280)

และยังมีความสามารถอื่น ๆ อีก
แต่เพียงเท่านี้ก็น่าจะเพียงพอต่อการเริ่มต้นแล้ว
เพราะว่า ไม่ต้องมานั่งต่อ Hardware หลาย ๆ ตัวเข้าด้วยกัน

เมื่อมี board หรือ hardware แล้ว ก็มาเขียนโปรแกรมเพื่อติดต่อกับ board กัน

ในส่วนนี้ถือว่ายากและซับซ้อนหน่อย
ทั้งการติดตั้ง IDE สำหรับเขียนโปรแกรมนั่นก็คือ Arduino IDE
ยังไม่พอนะ ต้องลง library อีกเพียบ
แนะนำให้ลงอ่านเพิ่มเติมได้ที่
ติดตั้ง Arduino IDE กับ ESP8266 และ โปรแกรมตัวอย่าง Library

โดยในขั้นตอนนี้เองที่ต้องเดินทางมายังเชียงใหม่
เพื่อให้ทาง Nat ช่วยสอน และ แนะนำการใช้งานและพัฒนาสำหรับการใช้งานเบื้องต้น
เป็นการเปิดหูเปิดตาทางด้าน hardware และ IoT มากมาย
ภาษาที่ใช้งานก็เป็นภาษา C นั่นเอง

แต่งานก็ง่ายขึ้นมาอีก
เนื่องจากทาง Nat ได้เขียนโปรแกรมตัวอย่าง
สำหรับการใช้งาน board ให้ไว้แล้ว
ทั้งการดึงข้อมูลจาก sessor
ทั้งการติดต่อผ่าน WIFI เพื่อให้สามารถส่งข้อมูลเข้าหรือออกจาก board ได้ง่ายขึ้น

ตัวอย่างของ source code

ปัญหาต่อมาคือ จะส่งข้อมูลจาก board ออกไปที่ไหนละ ?

จากการสอนของ Nat นั้น ก็ได้อธิบายว่า
ใช้แนวคิด Publish/Subscribe model แสดงดังรูป

คำอธิบายง่าย ๆ

  • Publisher คือ ผู้สร้างข้อมูลนั่นคือ Sensor จาก board นั่นเอง
  • Subscriber คือ ผู้รับข้อมูลนั่นคือ client หรือผู้ใช้งาน หรือระบบงานที่เราจะพัฒนานั่นเอง
  • ทั้ง Publisher และ Subscriber จะไม่ผูกมัดกัน (Loose Coupling) ดังนั้นจึงต้องผ่านระบบตรงกลาง เราจะเรียกว่า Broker

การทำงานมีขั้นตอนดังนี้

  • Publisher จะทำการส่งข้อมูลมายัง Broker โดยใน code ที่เขียนไว้คือ จะส่งข้อมูลในรูปแบบ JSON ไปยัง Broker ทุก ๆ วินาที
  • Subscriber จะทำการลงทะเบียนไปยัง Broker ดังนั้นเมื่อ Broker มีข้อมูลเปลี่ยนแปลง ทาง subscriber ก็จะได้รับข้อมูลนั้นทันที

โดยใน workshop นั้นจะใช้ Broker ชื่อว่า Eclipse Mosquito

ทำการติดตั้งแบบง่าย ๆ ด้วย Docker ไปเลย
โดยผมเลือกใช้ Docker Image นี้
เนื่องจากเปิดการใช้งาน Broker ได้ทั้ง TCP (port 1883) และ WebSocket (port 9001)

เพียงเท่านี้ก็ได้ Broker แบบง่าย ๆ แล้ว
มาถึงตรงนี้คือ Infarstructure และทุกสิ่งอย่างที่เตรียมไว้ให้

ยังไม่จบ เนื่องจากมี 10 board จึงต้อง burn หรือ flash โปรแกรมกันหน่อย

แน่นอนว่า ก็นั่งทำกันสนุกเลย แสดงดังรูป

เมื่อทุกอย่างพร้อม ก็เริ่มทำ Workshop กันสิครับ

เนื่องจาก workshop มีเวลาจำนวน 3 วัน
ดังนั้นขอบเขตของงานต้องไม่มากหรือน้อยไป ประกอบไปด้วย

  • การดึงข้อมูลจาก Broker นั่นคือ การสร้าง subscriber นั่นเอง
  • สามารถดึงข้อมูลผ่าน TCP หรือ WebSocker
  • ทำการจัดเก็บข้อมูล
  • ทำการ Visualize ข้อมูลในรูปแบบต่าง (Creative Visualization)

ไว้ครั้งต่อไป จะให้มาเขียนโปรแกรมและ flash ลง board ด้วยดีกว่า
แต่ขอไปฝึกก่อนนะ


 

ขอให้สนุกกับการ coding นะครับ