Workshop อ่านค่า sensor พื้นฐาน KidBright มายัง HIVEMQ
Concept ของการทดลองนี้คือเราจะอ่านและส่งค่าจาก sensor ที่บอร์ด Kidbright ได้แก่ LDR และ Temperature sensor มาแสดงผลยัง HIVEMQ ซึ่งเป็น mqtt broker ที่เราเลือกใช้ในการทดลองนี้ ซึ่งสำหรับคนที่ยังไม่คุ้นเคยกับ mqtt broker แนะนำให้อ่านเพิ่มเติมในใบความรู้ที่ 4.1 การใช้งาน MQTT บนบอร์ด KidBright
ซึ่งจัดทำโดยสวทช. ครับ
โดยการทดลองนี้จะแบ่งเป็น 2 part คือ part1 ส่วนของการตั้งค่าฝั่ง HIVEMQ และ part2 คือส่วนของการเขียนโปรแกรมฝั่ง KidBright
Part 1ส่วนของการตั้งค่าฝั่ง HIVEMQ
เริ่มต้นให้เข้ามาที่ http://www.hivemq.com/demos/websocket-client/ แล้วคลิกปุ่ม connect สิ่งที่ต้องเข้าใจคือจะมีส่วน Pubish และ Subscriptions
- ส่วน Publish จะมีให้กรอก Topic และ Message
- Topic ให้เราตั้งชื่อเพื่อให้ broker ใช้ในการ filter messages เพื่อส่งไปยังบอร์ด KidBright ตัวอย่างคือ pccphet_iot/kb/ldr_ctrl/
- ส่วน Subscriptions ให้เลือก Add New Topic Subscription เพื่อใช้ monitor ค่าใน Topic ที่เราสนใจ ตัวอย่างในที่นี้คือเราจะ subscription ไว้ 2 channel คือ
pccphet_iot/kb/ldr_ctrl/ และ pccphet_iot/kb/ldr_value/
- Topic แรกที่ชื่อ pccphet_iot/kb/ldr_ctrl/ จะใช้สำหรับส่งค่า 1 หรือ 0 ไปยังบอร์ด kidBright โดยกำหนดเงื่อนไขคือ
- ถ้า kidBright รับค่าเป็น 1 ให้ไปอ่านค่าแสงแล้วส่งค่ากลับมายัง topic ที่ชื่อ
pccphet_iot/kb/ldr_value/ (ซึ่งส่วนนี้เราจะไปเขียนโปรแกรมกันที่ฝั่งของบอร์ด Kidbright)
- ถ้า kidBright รับค่าเป็น 0 ให้แสดง Happy Emotion
Part 2 ส่วนของโปรแกรมที่บอร์ด KidBright
ในการทดลองนี้เราจะใช้โปรแกรม KidBright IDE โดยให้ติดตั้ง plugin เสริมชื่อ cpeku_iot โดยดาวน์โหลดพร้อมศึกษาวิธีติดตั้ง plugin ได้ที่ https://gitlab.com/cjaikaeo/cpeku_iot
ส่วนของโปรแกรมให้ทดลองทำตามนี้ครับ
คำอธิบาย concept โปรแกรม
- Connect to MQTT Broker ให้ใส่ broker.mqttdashboard.com port 1883
- อ่านค่าจาก Topic ชื่อ pccphet_iot/kb/ldr_ctrl/ เก็บไว้ในตัวแปร num
- โปรแกรมวนตรวจสอบจนกระทั่งเชื่อมต่อ MQTT สำเร็จ จึงเข้ามาตรวจสอบเงื่อนไขคือ
ถ้า num = 1
- อ่านค่าแสงจาก LDR เก็บไว้ในตัวแปร light
- ส่งค่า light กลับไปแสดงผลที่ topic ชื่อ pccphet_iot/kb/ldr_value/
ถ้า num มีค่าอื่นๆ
- ให้แสดง Happy Emoticon
ปล. อย่าลืม set ค่า wifi แล้ว upload โปรแกรม
ทดสอบการทำงานของโปรแกรม
case 1: พิมพ์เลข 1 ในช่อง message แล้วคลิก publish ผลลัพธ์ที่ได้คือจะแสดงเลข 1 และค่าแสงตัวอย่าง 40 ที่อ่านได้จาก KidBright ส่วนที่บอร์ด KidBright จะแสดงค่าแสงเช่นกัน
case 2: พิมพ์เลข 0 ในช่อง message แล้วคลิก publish ผลลัพธ์ที่ได้คือแสดงเลข 0 ส่วนที่บอร์ด KidBright จะแสดง Happy Emoticon
สำหรับแนวทางไปประยุกต์ต่อลองเขียนโปรแกรมเพิ่มเติมเพื่ออ่านค่าอุณภูมิมาแสดงยัง HIVEMqtt broker เพื่อทดสอบความเข้าใจดูครับ
ส่วนใครที่ลองทำด้วยความเข้าใจแล้ว อยากทดลองสั่ง Chatbot ให้ไปอ่านค่า sensor LDR ใน KidBright หรือให้ประยุกต์ควบคุม sensor ต่างๆ ของบอร์ด KidBright ลองทดลองทำตาม link ด้านล่างเลยครับ
เว็บไซต์อ้างอิง: