ผู้จัดทำ
ที่มาและความสำคัญ :
ปัจจุบันระบบไอโอทีมีการพัฒนาและเติบโตในการใช้งานเป็นไปด้วยความรวดเร็วและวงกว้าง ส่งผลให้เทคโนโลยีหลายๆ อย่างมีระบบไอโอทีเป็นส่วนประกอบ ดังนั้นทางทีมผู้จัดทำจึงมีความต้องการศึกษาการสื่อสารผ่านระบบไอโอทีเพื่อนำมาประยุกต์ใช้กับการควบคุมหุ่นยนต์ในการเคลื่อนที่และรับสัญญาณจากเซนเซอร์เพื่อมาแสดงผลผ่าน Dashboard
วัตถุประสงค์ :
1.ศึกษาการสื่อสารผ่านระบบไอโอทีเพื่อนำมาประยุกต์ใช้กับการควบคุมการเคลื่อนที่ของหุ่นยนต์
2.ศึกษาการรับค่าจาก sensor และส่งค่าผ่านระบบไอโอทีเพื่อนำมาสร้าง Dashboard ในการแสดงผล
หลักการทำงานของ MQTT จะประกอบไปด้วย 3 ส่วน
- MQTT Broker ทำหน้าที่เป็นคนกลาง โดยรับข้อมูลว่าใครจะเป็น Publisher เพื่อส่งข้อมูลใดๆ หรือรับข้อมูลว่าใครจะเป็น Subscriber เพื่อสมัครรับข้อมูลใดๆ โดยตัว Broker จะ forward ข้อมูลไปให้อุปกรณ์ต่างๆ โดยตัว Broker สามารถเป็นได้ทั้ง Windows server, Linux server หรือ Raspberry Pi เป็นต้น
- Publisher เป็น Node ที่ส่งข้อมูล โดยหลักการจะมีการประกาศ Topic และแนบ Data ไปด้วย โดยข้อมูลชุดนี้จะส่งไปให้กับ Broker ในตัวอย่างนี้ Publisher ได้ส่งข้อมูลที่ Topic คือ temperature และได้แนบ 24 ํC ที่เป็น Data ไปด้วย ซึ่งการส่งข้อมูลมาที่ Broker นั้น สามารถเกิดจากการตั้งเวลา เหตุการณ์ หรือ User กดปุ่ม เป็นต้น
- Subscriber เป็น Node ที่รับข้อมูล โดยหลักการจะมีการ Subscribe Topic ที่สนใจเพื่อจะรับข้อมูล โดย Node นี้จะส่งความต้องการที่เป็น Subscribe นั้นมาที่ Broker หลังจากนั้น Broker จะเช็คว่า มีใคร Subscribe หัวข้อที่ตรงกันบ้าง ถ้ามีตรงกันก็จะส่งข้อมูลกลับไปให้กับ Node ที่เรียกร้องข้อมูลมา ซึ่งจากตัวอย่างจะเห็นว่า Subscribe topic temperature ที่ตรงกับ Publisher ดังนั้น ก็จะได้รับ Data คือ 24 ํC มา
Node-Red
MQTT Broker
Flow Chart และโปรแกรม ส่วนการเชื่อมต่อ MQTT Server
Flow Chart และ โปรแกรมส่วนการรับค่า Subscribe Data จาก MQTT Server เพื่อสั่งงานการเคลื่อนที่ของหุ่นยนต์
Flow Chart และ โปรแกรมส่วนการรับค่า จาก Sensor Ultrasonic และส่งค่า Publish ไปที่ MQTT Server
ตัวอย่าง Code esp32
https://github.com/ipsunn/Node-Red_Control_esp32/blob/main/MQTT_Nodered_FRA641.ino
ผลการทดลอง
หน้า UI Dashboard มีปุ่มสำหรับควบคุม 5 ปุ่ม คือเดินหน้า ถอยหลัง เลี้ยวซ้าย เลี้ยวขวา หยุด และมีเกรดแสดงผลระยะห่างวัตถุที่ด้านหน้าของตัวหุ่นยนต์จาก sensor