สาธิตการใช้ SMS API สั่งการ MiniLink Gateway Version 3.0 บนแพลตฟอร์ม 1NCE ผ่านเครือข่าย 4G/LTE โดยไม่ต้องเขียนโค๊ค
ลงไม้ลงมือ : “คอนฟิกบอร์ด MiniLink ทางไกลโดย SMS API ผ่านแพลตฟอร์ม 1NCE eSIM ที่รองรับการใช้งานผ่านเครือข่าย 4G/LTE ในกว่า 177 ประเทศ โดยไม่ต้องเขียนโค้ด”
บทความ โดย… วิสิทธิ์ เวียงนาค
วันที่ 26 สิงหาคม 2567
ในบทความนี้ ผู้เขียนจะสาธิตการใช้งานบอร์ด MiniLink Gateway Version 3.0 เพื่ออ่านค่าเซ็นเซอร์วัดอุณหภูมิและความชื้นสัมพัทธ์ผ่านพอร์ต RS485 โดยใช้โปรโตคอล Modbus RTU รวมถึงการใช้แพลตฟอร์ม 1NCE ในการส่ง SMS API สำหรับคอนฟิกการทำงานของบอร์ดระยะไกลผ่านเครือข่าย 4G/LTE และการส่งข้อมูลไปยัง UDP Server บน Cloud โดยไม่ต้องเขียนโค้ดเพิ่มเติม ผู้ใช้งานสามารถนำแนวทางนี้ไปประยุกต์ใช้กับเซ็นเซอร์ประเภทอื่นได้ตามต้องการ
อุปกรณ์ที่ใช้ประกอบการทดสอบ
- MiniLink IIoT Gateway version 3.0
รายละเอียดอุปกรณ์
https://www.saijai.tech/minilink-iiot-gateway-version-3-0
2. Temperature Sensor XY-MD02
3. การ์ด mPCIE SIM7600E รองรับเครือข่าย 4G/LTE
เตรียมความพร้อม
ผู้เขียนได้เตรียมบอร์ด MiniLink Gateway Version 3.0 และเชื่อมต่อสายสัญญาณกับเซ็นเซอร์วัดอุณหภูมิและความชื้นสัมพัทธ์ (XY-MD02) ที่พอร์ต RS485 จากนั้นใช้แหล่งจ่ายไฟภายนอก โดยใช้อะแดปเตอร์แปลงไฟ 220V AC เป็นไฟกระแสตรง 12V DC เพื่อจ่ายไฟให้กับเซ็นเซอร์ สำหรับบอร์ด MiniLink ใช้พลังงานจากพอร์ต USB-C
เมื่อเริ่มจ่ายไฟให้กับบอร์ด MiniLink และเซ็นเซอร์ จะพบว่าหลอดไฟ LED ติดขึ้นมา แสดงว่าบอร์ดได้เริ่มทำงานแล้ว จากนั้นการ์ด mPCIe SIM7600E จะเริ่มค้นหาเครือข่าย 4G/LTE และพยายามเชื่อมต่อ หากการเชื่อมต่อสำเร็จ หลอดไฟ LED สีแดงดวงแรกที่อยู่ติดกับ LED สีเขียวจะติดขึ้นมา กระบวนการนี้ใช้เวลาประมาณ 10–20 วินาที
แผนผังการทดสอบ
ในการสาธิตครั้งนี้ ผู้เขียนได้เตรียมฮาร์ดแวร์เป็นบอร์ด MiniLink Gateway Version 3.0 และเซ็นเซอร์วัดอุณหภูมิและความชื้นสัมพัทธ์จำนวน 3 ชุด เพื่อจำลองการใช้งานใน 3 รูปแบบ โดยเซ็นเซอร์ทั้งหมดเชื่อมต่อกับพอร์ต RS485 แบบ Isolator with Automatic Direction
สำหรับฝั่ง Cloud นอกจากแพลตฟอร์ม 1NCE ผู้เขียนยังได้จัดเตรียมเซิร์ฟเวอร์สำหรับรับ Payload ที่ส่งมาจากบอร์ด MiniLink ผ่านโปรโตคอล UDP โดยมีโปรแกรม Node-RED ใช้สำหรับจัดการการเชื่อมต่อและถอดรหัส (Decode) Payload
ตารางข้อมูล Modbus Table ของ Sensor XY-MD02
ก่อนเริ่มใช้งาน SMS API มาทำความรู้จักกับตารางข้อมูล Modbus RTU ของเซ็นเซอร์วัดอุณหภูมิและความชื้นสัมพัทธ์ในอากาศ (XY-MD02) กันก่อน
เซ็นเซอร์วัดอุณหภูมิและความชื้นสัมพัทธ์ในอากาศ (XY-MD02) ใช้โปรโตคอล Modbus RTU ในการสื่อสารข้อมูล โดยใช้ Function Code 0x04 หรือ Input Register เพื่ออ่านค่าอุณหภูมิจาก Register Address 0x0001 และความชื้นสัมพัทธ์จาก Register Address 0x0002 ข้อมูลที่อ่านได้มีขนาด 2 Bytes หรือ 16 Bits เป็นเลขจำนวนเต็มแบบมีเครื่องหมาย ดังนั้นค่าที่อ่านได้จำเป็นต้องหารด้วย 10 เพื่อให้ได้ค่าข้อมูลที่ถูกต้อง
Note: *StarCommand() คือคำสั่งในรูปแบบ SMS API ที่ผู้ใช้งานไม่จำเป็นต้องเขียนโค้ดใดๆ เพียงแค่ส่งคำสั่งผ่านแพลตฟอร์ม 1NCE ก็สามารถควบคุมและสั่งการบอร์ด MiniLink จากระยะไกลผ่านเครือข่าย 4G/LTE ได้ โดยรองรับการใช้งานมากกว่า 177 ประเทศ
คำสั่งการอ่านข้อมูล Modbus RTU
*SetModbusCycle0()
เป็นคำสั่ง (Star Command) เพื่อสั่งการให้บอร์ด MiniLink อ่านข้อมูลเซ็นเซอร์ผ่านพอร์ต RS485 โดยโปรโตคอล Modbus RTU มีรูปแบบตามนี้
SetModbusCycle0(nid, modbus id, function code, address, quantity)
คำสั่งนี้จะมีพารามิเตอร์ทั้งหมด 5 ตัว ได้แก่:
- nid คือ หมายเลขของชุดข้อมูล
- modbus id คือ หมายเลข Modbus ID ของเซ็นเซอร์
- function code คือ ฟังก์ชันการทำงานสำหรับ Modbus RTU (Function Code)
- address คือ ตำแหน่งแอดเดรส (Address) ของอุปกรณ์ที่ต้องการสื่อสาร
- quantity คือ จำนวนข้อมูลที่ต้องการอ่าน (Data)
ตัวอย่างการใช้คำสั่ง:
*SetModbusCycle0() เพื่อสั่งให้บอร์ด MiniLink อ่านข้อมูลโดยโปรโตคอล Modbus RTU ชุดข้อมูลที่ 1 จากเซ็นเซอร์ที่มี Modbus ID เท่ากับ 10 โดยใช้ Input Register (Function Code 0x04) เริ่มอ่านค่าจาก Address ของรีจิสเตอร์ตัวแรกที่ 0x01 เป็นจำนวน 2 Address เขียนได้ตามนี้
*SetModbusCycle0(1,10,4,1,2)
คำสั่งการตั้งค่าส่งข้อมูล
*SetIPCycle0()
คำสั่ง (Star Command) นี้ใช้สำหรับสั่งให้บอร์ด MiniLink ส่งข้อมูล Uplink Payload ไปยัง IP Address ของเซิร์ฟเวอร์ปลายทางด้วยโปรโตคอลที่กำหนด
ค่าเริ่มต้นของโปรโตคอลสำหรับการสื่อสารคือ UDP Protocol แต่สามารถเลือกโปรโตคอลอื่นได้ เช่น TCP หรือ MQTT โดยมีรูปแบบคำสั่งดังนี้
*SetIPCycle0(IP, Port)
คำสั่งนี้มีพารามิเตอร์ทั้งหมด 2 ตัว ได้แก่:
- IP: ที่อยู่ IP Address ของเซิร์ฟเวอร์ปลายทาง
- Port: หมายเลขพอร์ตบริการ (Service Port) ของโปรโตคอลการสื่อสาร
ตัวอย่างการใช้คำสั่ง: SetIPCycle0() ใช้เพื่อสั่งให้บอร์ด MiniLink ส่งข้อมูลไปยัง Server ที่มี IP Address 10.0.0.1 และพอร์ต 123456 โดยใช้โปรโตคอลเริ่มต้น (UDP Protocol)
*SetIPCycle0(10.10.10.1, 123456)
แพลตฟอร์ม 1NCE สำหรับส่ง SMS API
หลังจากเรียนรู้การใช้คำสั่ง *StarCommand() เพื่อสั่งให้บอร์ด MiniLink อ่านค่าข้อมูลผ่านโปรโตคอล Modbus RTU และตั้งค่าการสื่อสารกับเซิร์ฟเวอร์ปลายทางแล้ว ในขั้นตอนนี้ผู้เขียนจะสาธิตการส่งคำสั่งไปยังบอร์ด MiniLink ผ่าน SMS API บนแพลตฟอร์ม 1NCE ผ่านเครือข่ายอินเตอร์เนต 4G/LTE
เข้าไปที่เว็บไซต์ https://portal.1nce.com แล้วล็อกอินด้วย Username และ Password ที่กำหนด
เมื่อเข้าสู่หน้า Dashboard ให้คลิกเมนูด้านบนที่ “My SIMs” จากนั้นค้นหาและคลิ๊กหมายเลข SIM ที่ต้องการ ระบบจะแสดงรายละเอียดต่างๆ เกี่ยวกับ SIM ที่ใช้งาน
คลิ๊กที่เมนู SMS จะพบกับหน้าต่างแสดงรายละเอียดเกี่ยวกับฟังก์ชัน SMS
ตัวอย่างการใช้งาน
ตั้งค่าการส่งข้อมูล
ใช้คำสั่ง SetIPCycle0() ตั้งค่าให้บอร์ด MiniLink ส่งข้อมูลไปยัง Server ที่มีหมายเลข IP Address เป็น 10.10.10.1 และหมายพอร์ต เป็น 123456 โดยใช้โปรโตคอลเริ่มต้น UDP Protocol
ให้พิมพ์คำสั่ง *SetIPCycle0(10.10.10.1, 123456) ลงในช่อง Payload จาก นั้นคลิ๊กที่ปุ่ม Send เพื่อส่งข้อมูล
หลังจากส่งข้อความสำเร็จ ที่หน้าต่าง Console Log ของบอร์ด MiniLink จะแสดงรายละเอียดของข้อความ SMS ที่ได้รับ เพียงแค่นี้บอร์ด MiniLink ก็พร้อมใช้งานแล้ว โดยค่าเร่ิมต้น (default) จะตั้งค่าโปรโตคอลสื่อสารเป็น UDP Protocol และมีรอบการส่งข้อมูลทุกๆ 5 นาที
ตัวอย่างเคสที่ 1: การอ่านค่าจาก Temperature Sensor จำนวน 1 ตัว
ในตัวอย่างนี้ ผู้เขียนจะสั่งให้บอร์ด MiniLink อ่านข้อมูลจากเซ็นเซอร์วัดอุณหภูมิและความชื้นสัมพัทธ์ (XY-MD02) จำนวน 1 ตัว โดยใช้โปรโตคอล Modbus RTU ตั้งค่าการสื่อสารผ่านพอร์ต Serial RS485 ที่มี baud rate 9600 bps (8N1)
เซ็นเซอร์ตั้งค่า Modbus ID = 10 ใช้ Input Register (Function Code 0x04) โดยเริ่มอ่านค่าจาก Address ของรีจิสเตอร์ตัวแรกที่ 0x01 เป็นจำนวน 2 Address จากนั้นส่งข้อมูลผ่านเครือข่ายอินเทอร์เน็ต 4G/LTE ไปยัง UDP Server ทุกๆ 5 นาทีตามค่าเริ่มต้น
ให้พิมพ์คำสั่ง StarCommand() ลงในช่อง Payload จากนั้นคลิกที่ปุ่ม Send เพื่อส่งคำสั่ง
*SetModbusCycle(1,10,4,1,2
หลังจากส่งข้อความสำเร็จ ที่หน้าต่าง Console Log ของบอร์ด MiniLink จะแสดงรายละเอียดของข้อความ SMS ที่ได้รับ จากนั้นบอร์ด MiniLink จะเริ่มอ่านข้อมูลจากเซ็นเซอร์ตามที่กำหนด และส่งข้อมูลไปยัง UDP Server บน Cloud
เมื่อดูผลลัพธ์ในโปรแกรม Node-RED ซึ่งผู้เขียนได้สร้าง UDP Server ไว้ จะพบว่ามี msg.payload ในรูปแบบ Buffer ถูกส่งเข้ามาทุกๆ 5 นาที
ค่า msg.payload ที่แสดงบน Node-RED จำเป็นต้องถอดรหัส (Decode) Payload ก่อนจึงจะสามารถแปลความหมายได้ ผู้เขียนจึงสร้าง Flow และเขียนฟังก์ชันเพื่อแปลงข้อมูลให้อยู่ในรูปแบบที่คนทั่วไปสามารถเข้าใจได้ โดยค่าอุณหภูมิและความชื้นสัมพัทธ์ต้องนำมาหารด้วย 10 ก่อนจึงจะได้ค่าที่ถูกต้อง
ข้อมูลที่ได้จากการถอดรหัส (Decode) Payload จะอยู่ในรูปแบบ JSON และเป็นชุดข้อมูลที่พร้อมสำหรับการจัดเก็บในฐานข้อมูล Realtime Database อย่าง InfluxDB
ตัวอย่างเคสที่ 2: การอ่านค่าจาก Temperature Sensor จำนวน 2 ตัว โดยมีรอบการส่งข้อมูลเหมือนกัน
ในตัวอย่างนี้ ผู้เขียนจะสั่งให้บอร์ด MiniLink อ่านข้อมูลจากเซ็นเซอร์วัดอุณหภูมิและความชื้นสัมพัทธ์ (XY-MD02) จำนวน 2 ตัว โดยใช้โปรโตคอล Modbus RTU ตั้งค่าการสื่อสารผ่านพอร์ต Serial RS485 ที่มี baud rate 9600 bps (8N1)
เซ็นเซอร์ตัวแรกตั้งค่า Modbus ID = 10 และเซ็นเซอร์ตัวที่สองตั้งค่า Modbus ID = 1 ใช้ Input Register (Function Code 0x04) โดยเริ่มอ่านค่าจาก Address ของรีจิสเตอร์ตัวแรกที่ 0x01 เป็นจำนวน 2 Address จากนั้นส่งข้อมูลผ่านเครือข่ายอินเทอร์เน็ต 4G/LTE ไปยัง UDP Server ทุกๆ 5 นาทีตามค่าเริ่มต้น
ให้พิมพ์คำสั่ง StarCommand() ลงในช่อง Payload จากนั้นคลิกที่ปุ่ม Send เพื่อส่งคำสั่ง
*SetModbusCycle0(1,10,4,1,2),(2,1,4,1,2)
หลังจากส่งข้อความสำเร็จ ที่หน้าต่าง Console Log ของบอร์ด MiniLink จะแสดงรายละเอียดของข้อความ SMS ที่ได้รับ จากนั้นบอร์ด MiniLink จะเริ่มอ่านข้อมูลเซ็นเซอร์ทั้งสองตัวตามที่กำหนด และส่งข้อมูลไปยัง UDP Server บน Cloud
ตัวอย่างเคสที่ 3: การอ่านค่าจาก Temperature Sensor จำนวน 3 ตัว โดยแต่ละตัวมีรอบการส่งข้อมูลและที่อยู่ IP Address ของ Server ปลายทางที่แตกต่างกัน
ในตัวอย่างนี้ ผู้เขียนจะสั่งให้บอร์ด MiniLink อ่านข้อมูลจากเซ็นเซอร์วัดอุณหภูมิและความชื้นสัมพัทธ์ (XY-MD02) จำนวน 3 ตัว ผ่านโปรโตคอล Modbus RTU โดยตั้งค่าการสื่อสารผ่านพอร์ต Serial RS485 ที่มี baud rate 9600 bps (8N1)
การอ่านค่าเซ็นเซอร์ใช้ Input Register (Function Code 0x04) โดยเริ่มอ่านค่าจาก Address ของรีจิสเตอร์ตัวแรกที่ 0x01 เป็นจำนวน 2 Address จากนั้นส่งข้อมูลผ่านเครือข่ายอินเทอร์เน็ต 4G/LTE ไปยัง UDP Server
การตั้งค่าอุปกรณ์มีดังนี้
- เซ็นเซอร์ตัวแรก: ตั้งค่า Modbus ID = 10
- เซ็นเซอร์ตัวที่สอง: ตั้งค่า Modbus ID = 1
- เซ็นเซอร์ตัวที่สาม: ตั้งค่า Modbus ID = 2
รอบการส่งข้อมูล
- เซ็นเซอร์ตัวแรกและตัวที่สอง: ส่งข้อมูลทุกๆ 5 นาที (ค่าเริ่มต้น)
- เซ็นเซอร์ตัวที่สาม: ส่งข้อมูลทุกๆ 3 นาที
การกำหนดปลายทางการส่งข้อมูล
- เซ็นเซอร์ตัวแรกและตัวที่สอง: ส่งข้อมูลไปยังเซิร์ฟเวอร์ที่มี IP Address 10.10.10.1 และพอร์ต 123456 โดยใช้โปรโตคอล UDP
- เซ็นเซอร์ตัวที่สาม: ส่งข้อมูลไปยังเซิร์ฟเวอร์ที่มี IP Address 20.20.20.1 และพอร์ต 456123 โดยใช้โปรโตคอล UDP
จากการตั้งค่าข้างต้น ผู้เขียนสามารถแปลงเป็นคำสั่ง StarCommand() เพื่อสั่งให้บอร์ด MiniLink ทำงานตามที่กำหนด โดยพิมพ์คำสั่งลงในช่อง Payload จากนั้นคลิกปุ่ม Send เพื่อส่งคำสั่งทีละคำสั่ง
*SetIPCycle0(10.10.10.1, 123456)
*SetModbusCycle0(1,10,4,1,2),(2,1,4,1,2)
*SetIPCycle1(20.20.20.1, 456123)
*SetTimeCycle1(180000)
*SetModbusCycle1(1,3,2,4,1,2)
ข้อสรุปการใช้งาน
การใช้งานบอร์ด MiniLink Gateway Version 3.0 สำหรับงาน IIoT เป็นทางเลือกที่สะดวกและมีประสิทธิภาพ ช่วยให้ลดเวลาการพัฒนาโซลูชัน IoT ได้มากโดยไม่ต้องเขียนโค้ดเพิ่มเติม การใช้ฟังก์ชัน StarCommand() ที่มีความยืดหยุ่นทำให้สามารถควบคุมการทำงานต่างๆ ได้ง่าย ในอนาคตผู้เขียนจะมานำเสนอการใช้งานฟังก์ชันอื่นๆ เพิ่มเติม สำหรับใครที่มองหาบอร์ด IoT ที่รองรับการเชื่อมต่อ 4G/LTE บอร์ด MiniLink เป็นตัวเลือกที่น่าสนใจ
ตัวอย่างการนำบอร์ด MiniLink Gateway Version 3.0 ไปใช้งานจริง
โครงการสถานีตรวจวัดสภาพอากาศ (Weather Station) ที่ถูกออกแบบมาเพื่อตรวจสอบและรายงานข้อมูลสำคัญเกี่ยวกับสิ่งแวดล้อม เช่น ความเร็วลม ทิศทางลม ปริมาณน้ำฝน ความเข้มของแสงอาทิตย์ อุณหภูมิ และความชื้นสัมพัทธ์ ข้อมูลที่วัดได้จะถูกส่งผ่านเครือข่าย 4G/LTE โดยใช้ eSIM ของ 1NCE เพื่อให้สามารถส่งข้อมูลไปยังระบบ Cloud ได้อย่างรวดเร็วและมีความเสถียร ระบบนี้เหมาะสำหรับการใช้งานในภาคเกษตรกรรม การจัดการสิ่งแวดล้อม หรือการตรวจสอบสภาพอากาศในพื้นที่ห่างไกล
โครงการสถานีวัดคุณภาพน้ำสำหรับโรงงาน ช่วยตรวจสอบคุณภาพน้ำในแบบเรียลไทม์ โดยเซ็นเซอร์จะวัดค่าต่างๆ เช่น pH, TDS (Total Dissolved Solids), และ DO (Dissolved Oxygen) ข้อมูลที่ได้จะถูกส่งผ่านเครือข่าย 4G/LTE ไปยังระบบ Cloud เพื่อเก็บบันทึกและวิเคราะห์ เหมาะสำหรับการตรวจสอบกระบวนการผลิต การควบคุมคุณภาพ และปฏิบัติตามมาตรฐานสิ่งแวดล้อม ระบบนี้ช่วยให้ผู้ดูแลสามารถเข้าถึงข้อมูลได้ทุกที่ และตอบสนองต่อความผิดปกติอย่างรวดเร็ว เพิ่มประสิทธิภาพในการบริหารจัดการน้ำในโรงงาน
โครงการสถานีเฝ้าระวังระบบ Solar Cell แบบออนไลน์ ช่วยตรวจสอบประสิทธิภาพและสถานะของระบบพลังงานแสงอาทิตย์ได้แบบเรียลไทม์ โดยดึงข้อมูลจากอุปกรณ์ Solar Inverter ผ่านการเชื่อมต่อเครือข่าย 4G/LTE แล้วส่งข้อมูลไปยังระบบ Cloud เพื่อการวิเคราะห์และเก็บบันทึก การออกแบบนี้เหมาะสำหรับการติดตามการผลิตพลังงาน ลดความเสียหายจากปัญหาที่อาจเกิดขึ้น และเพิ่มประสิทธิภาพการบำรุงรักษา ทั้งนี้ระบบยังรองรับการเข้าถึงข้อมูลระยะไกล ทำให้สามารถดูแลและจัดการสถานีพลังงานได้ง่ายขึ้นในทุกพื้นที่
ผู้เขียนมีความตั้งใจที่จะนำเสนอการใช้ IoT / LoRaWAN / NB-IoT สำหรับพัฒนา SMART CITY เพื่อให้ผู้ที่สนใจนำไปพัฒนาต่อยอดสร้างนวัตกรรมใหม่ๆ ขอเป็นส่วนหนึ่งเล็กๆ น้อยๆ ช่วยผลักดันประเทศของเราให้เข้าสู่ยุคดิจิตอล Thailand 4.0 อย่างแท้จริง
ติดตามข่าวสารทาง webiste ได้ที่ลิงค์นี้
ติดตามข่าวสารทาง facebook ได้ที่ลิงค์นี้
เข้ากลุ่ม IoT-SmartCity ได้ที่นี่