การรับคำสั่งควบคุมอุปกรณ์ จากระยะไกลผ่านระบบเครือข่าย Cloud

5.1 การควบคุมอุปกรณ์ระยะไกลในระบบ IoT
อินเทอร์เน็ตของสรรพสิ่ง (Internet of Things : IoT) คือการเชื่อมต่ออุปกรณ์ เครื่องมือ หรือระบบต่าง ๆ เข้ากับเครือข่ายอินเทอร์เน็ต เพื่อให้สามารถรับส่งข้อมูล ตรวจสอบสถานะ และสั่งงานอุปกรณ์ได้จากระยะไกล การควบคุมอุปกรณ์ระยะไกลในระบบ IoT หมายถึง การที่ผู้ใช้งานสามารถสั่งเปิด-ปิด หรือควบคุมการทำงานของอุปกรณ์ปลายทาง เช่น หลอดไฟ พัดลม ปั๊มน้ำ หรือรีเลย์ ผ่านเครือข่ายอินเทอร์เน็ต โดยไม่จำเป็นต้องอยู่ใกล้อุปกรณ์นั้นโดยตรง
ตัวอย่างการใช้งานที่พบได้ในชีวิตประจำวัน ได้แก่ การเปิด-ปิดไฟบ้านผ่านสมาร์ทโฟน การควบคุมพัดลมจากนอกบ้าน การสั่งรดน้ำต้นไม้ในโรงเรือนอัจฉริยะ และการตรวจสอบสถานะอุปกรณ์ไฟฟ้าผ่านระบบออนไลน์ ระบบลักษณะนี้ช่วยเพิ่มความสะดวก ลดเวลาในการทำงาน และสามารถนำไปพัฒนาเป็นระบบ Smart Home หรือ Smart Farm ได้
ในการควบคุมอุปกรณ์ระยะไกล อุปกรณ์ปลายทางต้องเชื่อมต่ออินเทอร์เน็ตและติดต่อกับระบบคลาวด์ได้ เมื่อผู้ใช้ส่งคำสั่งผ่านหน้าควบคุม ระบบคลาวด์จะรับคำสั่งนั้นและส่งต่อไปยังอุปกรณ์ปลายทาง จากนั้นไมโครคอนโทรลเลอร์ เช่น ESP32 จะประมวลผลคำสั่งและสั่งงานขาเอาต์พุต เพื่อควบคุม LED หรือ Relay ให้ทำงานตามที่กำหนด

5.2 องค์ประกอบของระบบควบคุมอุปกรณ์ผ่าน Cloud
ระบบควบคุมอุปกรณ์ผ่าน Cloud ประกอบด้วยส่วนสำคัญที่ทำงานร่วมกัน ดังนี้
1) อุปกรณ์ปลายทาง (End Device) คืออุปกรณ์ที่อยู่ฝั่งผู้ใช้งานจริง เช่น บอร์ดไมโครคอนโทรลเลอร์ ESP32 ที่เชื่อมต่อกับ LED หรือ Relay โดย ESP32 ทำหน้าที่รับคำสั่งจากระบบคลาวด์ แล้วนำคำสั่งนั้นไปควบคุมขาเอาต์พุต เช่น สั่งให้ LED ติดหรือดับ หรือสั่งให้ Relay เปิด-ปิดวงจรไฟฟ้า
2) อุปกรณ์เอาต์พุต (Output Device) คืออุปกรณ์ที่แสดงผลหรือทำงานตามคำสั่ง เช่น LED ใช้แสดงสถานะเปิด-ปิด ส่วน Relay ใช้เป็นสวิตช์ควบคุมอุปกรณ์ไฟฟ้าที่ใช้แรงดันหรือกระแสสูงกว่าไมโครคอนโทรลเลอร์ เช่น หลอดไฟ พัดลม หรือปั๊มน้ำ
3) เครือข่ายอินเทอร์เน็ต เป็นช่องทางที่ทำให้อุปกรณ์ปลายทางสามารถเชื่อมต่อกับระบบคลาวด์ได้ หากไม่มีการเชื่อมต่ออินเทอร์เน็ต อุปกรณ์จะไม่สามารถรับคำสั่งจากผู้ใช้ที่อยู่ระยะไกลได้ ดังนั้นความเสถียรของเครือข่ายจึงมีผลต่อความรวดเร็วและความน่าเชื่อถือของระบบ
4) ระบบคลาวด์หรือ Broker ทำหน้าที่เป็นตัวกลางในการรับ ส่ง และจัดเก็บข้อมูลคำสั่ง ในหน่วยนี้ใช้ Adafruit IO เป็นระบบคลาวด์และทำหน้าที่เป็น MQTT Broker เมื่อผู้ใช้กดปุ่มควบคุมบน Dashboard คำสั่งจะถูกส่งไปเก็บไว้ใน Feed และส่งต่อไปยังอุปกรณ์ที่ Subscribe Feed นั้นไว้
5) ผู้ใช้งานและหน้าควบคุม (Dashboard) ซึ่งเป็นหน้าจอที่สร้างขึ้นบน Adafruit IO ภายใน Dashboard สามารถมีปุ่ม สวิตช์ หรือส่วนแสดงผลต่าง ๆ เพื่อให้ผู้ใช้ส่งคำสั่งไปยังอุปกรณ์ปลายทางได้อย่างสะดวก

5.3 โปรโตคอล MQTT และหลักการ Publish / Subscribe

MQTT (Message Queuing Telemetry Transport) เป็นโปรโตคอลสื่อสารที่นิยมใช้ในระบบ IoT เนื่องจากใช้ข้อมูลน้อย ทำงานได้รวดเร็ว และเหมาะกับอุปกรณ์ที่มีทรัพยากรจำกัด เช่น ไมโครคอนโทรลเลอร์ ESP32 หลักการทำงานของ MQTT แตกต่างจากการสื่อสารแบบส่งตรงระหว่างอุปกรณ์ เพราะ MQTT ใช้ตัวกลางที่เรียกว่า Broker ในการรับและกระจายข้อความ องค์ประกอบสำคัญของ MQTT มีดังนี้
1) Broker คือเซิร์ฟเวอร์ตัวกลางที่ทำหน้าที่รับข้อความจากผู้ส่ง และส่งข้อความต่อไปยังผู้รับที่สมัครรับข้อมูลไว้ ในหน่วยนี้ Adafruit IO ทำหน้าที่เป็น Broker เปรียบได้กับที่ทำการไปรษณีย์ที่คอยรับจดหมายและจัดส่งไปยังผู้รับที่ถูกต้อง
2) Publisher คือผู้ส่งข้อมูลหรือคำสั่งไปยัง Broker เช่น Dashboard บน Adafruit IO ที่ส่งค่าคำสั่ง ON, OFF, 1 หรือ 0 ไปยัง Feed เมื่อผู้ใช้กดปุ่มควบคุม
3) Subscriber คืออุปกรณ์หรือโปรแกรมที่สมัครรับข้อมูลจากหัวข้อหรือ Feed ที่กำหนดไว้ เช่น ESP32 Subscribe Feed ชื่อ led1 เพื่อรอรับคำสั่งเปิด-ปิด LED เมื่อมีข้อมูลใหม่ถูกส่งเข้ามายัง Feed นั้น ESP32 จะได้รับข้อมูลและนำไปประมวลผล
4) Topic หรือ Feed คือชื่อช่องทางของข้อมูล แต่ละ Feed ควรใช้แทนข้อมูลหนึ่งชนิด เช่น led1 ใช้ควบคุม LED ดวงที่ 1 หรือ relay1 ใช้ควบคุม Relay ตัวที่ 1 หลักการสำคัญคือ ผู้รับจะได้รับข้อความก็ต่อเมื่อ Subscribe หัวข้อหรือ Feed นั้นไว้แล้วเท่านั้น หาก ESP32 ไม่ได้ Subscribe Feed ที่ถูกต้อง แม้ผู้ใช้จะกดปุ่มบน Dashboard แล้วส่งข้อมูลขึ้นระบบคลาวด์ อุปกรณ์ก็จะไม่สามารถรับคำสั่งนั้นได้
5.4 Adafruit IO: Feed และ Dashboard


รูปที่ 4 แพลตฟอร์ม Adafruit IO
Adafruit IO เป็นแพลตฟอร์ม IoT Cloud ที่ใช้สำหรับรับส่งข้อมูล จัดเก็บข้อมูล และสร้างหน้าควบคุมอุปกรณ์ผ่านอินเทอร์เน็ต ในหน่วยนี้ใช้ Adafruit IO เพื่อเป็นตัวกลางระหว่างผู้ใช้งานกับ ESP32 หรืออุปกรณ์จริง
Feed หรือ Topic คือช่องเก็บข้อมูลหรือหัวข้อข้อมูลหนึ่งช่องต่อข้อมูลหนึ่งประเภท เช่น Feed ชื่อ led1 ใช้เก็บสถานะของ LED ดวงที่ 1 โดยค่าที่เก็บใน Feed อาจเป็น ON/OFF, 1/0 หรือข้อความอื่นที่กำหนดไว้ โปรแกรมบน ESP32 จะ Subscribe Feed นี้เพื่อรอรับค่าคำสั่งจากผู้ใช้
Dashboard คือหน้าจอควบคุมที่ใช้เชื่อมโยงกับ Feed โดยสามารถสร้างปุ่ม สวิตช์ ตัวเลข กราฟ หรือส่วนแสดงผลต่าง ๆ ได้ เมื่อนำ Feed มาผูกกับปุ่มหรือสวิตช์บน Dashboard ผู้ใช้จะสามารถกดสั่งงานอุปกรณ์ได้ เช่น เมื่อกดปุ่ม ON ค่าจะถูกส่งไปยัง Feed และเมื่อกด OFF ค่าก็จะเปลี่ยนตามที่กำหนด

Adafruit IO Key คือรหัสกุญแจประจำบัญชีของผู้ใช้งาน ใช้คู่กับ Username เพื่อให้ ESP32 เข้าถึงบัญชี Adafruit IO ได้อย่างถูกต้อง Adafruit IO Key ถือเป็นข้อมูลสำคัญที่ต้องเก็บเป็นความลับ ไม่ควรเผยแพร่หรือส่งต่อให้ผู้อื่น เพราะผู้ที่มี Username และ Adafruit IO Key อาจเข้าถึง Feed และควบคุมอุปกรณ์ในบัญชีได้

5.5 ขั้นตอนการทำงานเมื่อผู้ใช้กดปุ่มควบคุม
เมื่อระบบควบคุมอุปกรณ์ผ่าน Cloud ทำงาน จะมีลำดับการส่งข้อมูลตั้งแต่ผู้ใช้จนถึงอุปกรณ์ปลายทาง ดังนี้
ผู้ใช้เปิด Dashboard ของ Adafruit IO ผ่านเว็บเบราว์เซอร์หรืออุปกรณ์ที่เชื่อมต่ออินเทอร์เน็ต
ผู้ใช้กดสวิตช์หรือปุ่มควบคุม เช่น “เปิด” หรือ “ปิด” เพื่อส่งคำสั่งไปยังอุปกรณ์
Dashboard ส่งค่าคำสั่ง เช่น 1, 0, ON หรือ OFF ไปยัง Feed ที่กำหนดไว้
Adafruit IO ซึ่งทำหน้าที่เป็น Broker รับค่าคำสั่งและจัดเก็บไว้ใน Feed
ESP32 ที่ Subscribe Feed นั้นไว้จะได้รับค่าคำสั่งจาก Broker
โปรแกรมบน ESP32 ตรวจสอบค่าที่ได้รับ เช่น หากได้รับค่า 1 หรือ ON ให้สั่ง digitalWrite เป็น HIGH เพื่อเปิด LED หรือ Relay หากได้รับค่า 0 หรือ OFF ให้สั่ง digitalWrite เป็น LOW เพื่อปิดอุปกรณ์
อุปกรณ์เอาต์พุต เช่น LED หรือ Relay ทำงานตามคำสั่งที่ได้รับ
จากขั้นตอนดังกล่าวจะเห็นว่า การควบคุมอุปกรณ์ไม่ได้ส่งคำสั่งจาก Dashboard ไปยัง ESP32 โดยตรง แต่ส่งผ่านระบบคลาวด์และ MQTT Broker ทำให้ผู้ใช้สามารถควบคุมอุปกรณ์ได้จากระยะไกลผ่านอินเทอร์เน็ต
5.6 Wokwi Simulator
คือโปรแกรมจำลองการทำงานของไมโครคอนโทรลเลอร์และวงจรอิเล็กทรอนิกส์ผ่านเว็บเบราว์เซอร์ ผู้เรียนสามารถต่อวงจร เขียนโปรแกรม และทดสอบผลการทำงานได้เสมือนใช้อุปกรณ์จริง โดยไม่จำเป็นต้องมีบอร์ด ESP32 หรืออุปกรณ์อิเล็กทรอนิกส์จริง

ในเรื่องการควบคุม LED หรือ Relay ผ่าน Adafruit IO ผู้เรียนสามารถใช้ Wokwi จำลองบอร์ด ESP32 เชื่อมต่อกับ LED หรือ Relay แล้วเขียนโปรแกรมให้ ESP32 เชื่อมต่อ Wi-Fi และรับคำสั่งผ่าน MQTT ได้ เมื่อกดปุ่มบน Dashboard ของ Adafruit IO ผลลัพธ์จะแสดงบนวงจรจำลองใน Wokwi เช่น LED ติดหรือดับตามคำสั่ง
ข้อดีของ Wokwi คือช่วยลดความเสี่ยงจากการต่อวงจรผิดพลาด ประหยัดค่าอุปกรณ์ และสามารถทดลองแก้ไขโปรแกรมได้รวดเร็ว เหมาะสำหรับการฝึกปฏิบัติก่อนนำความรู้ไปใช้กับอุปกรณ์จริง อย่างไรก็ตาม หากนำไปใช้งานจริงกับอุปกรณ์ไฟฟ้า เช่น Relay ควบคุมไฟบ้าน ควรคำนึงถึงความปลอดภัย เลือกอุปกรณ์ให้เหมาะสมกับแรงดันและกระแสไฟฟ้า และควรมีผู้เชี่ยวชาญดูแล
5.7 สรุปสาระสำคัญ
การควบคุมอุปกรณ์ผ่าน Cloud เป็นการนำเทคโนโลยี IoT มาใช้เชื่อมต่อผู้ใช้งาน ระบบคลาวด์ และอุปกรณ์ปลายทางเข้าด้วยกัน โดยอาศัย Dashboard สำหรับส่งคำสั่ง Feed สำหรับเก็บและรับส่งข้อมูล MQTT สำหรับสื่อสารแบบ Publish / Subscribe และ ESP32 สำหรับรับคำสั่งไปควบคุม LED หรือ Relay หัวใจสำคัญของระบบคือ อุปกรณ์ปลายทางต้องเชื่อมต่ออินเทอร์เน็ตได้อย่างถูกต้อง ใช้ Username และ Adafruit IO Key ที่ถูกต้อง และต้อง Subscribe Feed ที่ตรงกับ Dashboard จึงจะสามารถรับคำสั่งจากผู้ใช้ได้ เมื่อผู้ใช้ Publish คำสั่งผ่าน Dashboard คำสั่งนั้นจะถูกส่งผ่าน Broker ไปยังอุปกรณ์ปลายทาง และทำให้อุปกรณ์ทำงานตามที่กำหนด บทความนี้สามารถนำไปประยุกต์ใช้ได้ทั้งในชีวิตประจำวันและงานอาชีพ เช่น ระบบควบคุมไฟอัจฉริยะ ระบบควบคุมปั๊มน้ำในงานเกษตร และระบบควบคุมอุปกรณ์ไฟฟ้าระยะไกลในงานช่างอิเล็กทรอนิกส์