Magellan เป็น AIS IoT Platform ที่ออกแบบมาสำหรับกลุ่มผู้เริ่มต้นพัฒนาอุปกรณ์ IoT ซึ่งเป็น Platform ตั้งต้นสำหรับการเรียนรู้และต่อยอดให้นักพัฒนาสามารถสร้างสรรค์เทคโนโลยี IoT แบบง่ายๆ โดยไม่ต้องกังวลเรื่องการเขียนโปรแกรมสำหรับการเชื่อมต่อข้อมูลมากนัก เพราะ Magellan มี SDK (Software Developer Kit) เตรียมไว้ให้สำหรับนักพัฒนาแล้ว แค่มีไอเดีย และเขียนโปรแกรมได้บ้าง ก็สามารถเริ่มต้นได้อย่างง่ายๆ
สัปดาห์ที่ผ่านมาไลบรารี่ของ AIS 4G board ชื่อ AIS_IoT_4G ได้อัปเดตเป็นเวอร์ชั่น V1.1.0 โดยเพิ่มคำสั่งที่เกี่ยวข้องกับ Magellan ขึ้นมา โดยรองรับการใช้งานทั้งแบบ 4G (Cellular) และ WiFi
ในบทความนี้จะลองใช้ Magellan โดยใช้งานร่วมกับ AIS 4G board ส่งข้อมูลผ่าน 4G (Cellular) โดยทดลองส่งค่าอุณหภูมิและความชื้นขึ้นไปแสดงบนหน้า Dashboard และทดลองสั่งงานหลอดแอลอีดี E15 บนบอร์ด
เตรียมอุปกรณ์
บทความนี้ใช้ AIS 4G board, สาย USB-C และคอมพิวเตอร์ที่ติดตั้งโปรแกรม Arduino IDE หรือ PlatformIO พร้อมติดตั้งไลบรารี่ AIS 4G board เวอร์ชั่นใหม่
อ่านขั้นตอนการใช้งานบอร์ด AIS 4G board และการติดตั้งไลบรารี่ได้ที่บทความ รู้จัก ลองเล่น AIS 4G board กับ Azure IoT Central
เตรียมข้อมูล
การเพิ่มอุปกรณ์ลง Magellan ต้องเตรียมข้อมูลดังนี้
ICCID (Integrated Circuit Card Identifier) เป็นหมายเลขประจำตัวของซิมการ์ด
IMSI (International Mobile Subscriber Identity)
IMEI (International Mobile Equipment Identity) เป็นหมายเลขประจำตัวของโมดูล SIMCOM บน AIS 4G board
ข้อมูลทั้ง 3 ตัว ให้อัปโหลดโปรแกรมด้านล่างนี้ลงบอร์ด เพื่อดูค่า
#include <Arduino.h>
#include <Wire.h>
#include <SIM76xx.h>
void setup() {
Serial.begin(115200);
Serial.println("Hello!");
if (!GSM.begin()) {
Serial.println("Setup GSM fail");
while(1) delay(1);
}
Serial.print("ICCID: ");
Serial.print(GSM.getICCID());
Serial.println();
Serial.print("IMSI: ");
Serial.print(GSM.getIMSI());
Serial.println();
Serial.print("IMEI: ");
Serial.print(GSM.getIMEI());
Serial.println();
}
void loop() {
delay(1000);
}
อัปโหลดโปรแกรมลงบอร์ด เปิด Serial Monitor ขึ้นมา หลัง SIMCOM ทำงานแล้ว ค่า ICCID, IMSI, IMEI จะแสดงขึ้นมาแล้ว ให้เก็บค่าทั้ง 3 ไว้ใส่ลงระบบ Magellan ในขั้นตอนต่อไป
ชื่อเรียกข้อมูล
ข้อมูลที่รับ-ส่งบน Magellan ถูกเรียกว่า Sensor โดยแบ่งเป็น 2 ชนิด คือ
Reporting Sensor คือ ข้อมูลที่ AIS 4G board ส่งขึ้นไปบน Magellan เช่น ค่าอุณหภูมิ ค่าความชื้น ค่าความเข้มแสง ค่าสี ค่าสถานะการเปิด-ปิดประตู เป็นต้น โดยรองรับทั้งข้อมูลแบบตัวเลขและตัวอักษร
Control Sensor คือ ข้อมูลที่ Magellan ส่งลงไปสั่งงาน AIS 4G board เช่น สั่งให้เปิด-ปิดไฟห้องครัว สั่งเปิด-ปิดปั้มน้ำ สั่งปิดประตูโรงรถ เป็นต้น
ตัวอย่างบทความนี้ต้องการส่งข้อมูลอุณหภูมิและความชื้นขึ้น Magellan ตัวค่าอุณหภูมิและความชื้นถือเป็น Reporting Sensor เพราะต้องส่งขึ้นไปบน Magellan และต้องการรับข้อมูลการสั่งเปิด-ปิดแอลอีดี E15 ข้อมูลที่ใช้เปิด-ปิดนี้ เรียกว่า Control Sensor เพราะ Magellan ต้องส่งลงมา
การสมัครใช้งาน Magellan
การสมัครสมาชิกให้เข้าไปที่ magellan.ais.co.th กดปุ่ม REGISTER ด้านมุมบนขวา จากนั้นทำตามขั้นตอนสมัครสมาชิกได้เลย
การเพิ่มอุปกรณ์ลง Magellan
ล็อกอิน magellan.ais.co.th ให้เรียบร้อย จากนั้นกดที่ปุ่มเมนูด้านขวา เลือก MY THINGS แล้วกด REGISTER THING
หน้า REGISTER THING กรอก ICCID, IMSI และ IMEI ของบอร์ด จากนั้นตั้งชื่ออุปกรณ์ใน Thing Name เมื่อเสร็จแล้วกดปุ่ม SAVE
จากนั้นระบบจะพามาหน้า MY THING ตรงหัวข้อ All Things ก็จะแสดงบอร์ดที่เพิ่มใหม่ขึ้นมาแล้ว
เมื่อกดที่ชื่อของ Thing สังเกตสถานะจะขึ้นเป็น Registered
สถานะของอุปกรณ์ Registered จะยังไม่สามารถใช้งานจริงได้ จะใช้งานจริงได้ต่อเมื่อสถานะเป็น Activated หากเขียนโค้ดให้อุปกรณ์ส่งข้อมูลขึ้น ที่อุปกรณ์จะแจ้งสถานะอุปกรณ์ยังไม่อยู่ใน Activated การจะเปลี่ยนให้อุปกรณ์เป็นสถานะ Activated ทำได้โดยเพิ่มอุปกรณ์เข้าโปรเจค
การสร้างโปรเจคใน Magellan
กดปุ่มเปิดเมนูด้านซ้าย แล้วกดเลือก ALL PORJECT จากนั้นกดปุ่ม CREATE NEW PROJECT
หน้าต่าง Create New Project จะแสดงขึ้นมา ให้ตั้งชื่อโปรเจคใส่ลงในช่อง Project Name แล้วกด CREATE
ระบบจะพามาหน้า ALL PROJECT ให้คลิกที่ Unfavorited Projects แล้วคลิกเข้าไปที่โปรเจคที่สร้างขึ้นมาใหม่ (สามารถคลิกที่ไอค่อนรูปหัวใจเพื่อตั้งเป็น Favorite Project จะทำให้กดเข้าโปรเจคได้ง่ายขึ้นจากหน้า MY WORKSPACE)
เพิ่มอุปกรณ์เข้าโปรเจคเพื่อเปลี่ยนสถานะของอุปกรณ์จาก Registered เป็น Activated โดยกดที่ THING แล้วกด ADD THING
เลือก Thing ที่ต้องการเพิ่มลงโปรเจค แล้วกดปุ่ม ADD TO PROJECT
ระบบจะแจ้งสถานะการเพิ่ม Thing ลงโปรเจคขึ้นมา พร้อมพากลับมาหน้าหลักของโปรเจค หน้าย่อย THING
กดเข้าไปที่ชื่อ Thing ที่เพิ่มเข้ามาใหม่อีกครั้ง
สังเกตว่าสถานะของ Thing ขึ้นเป็น Activated แล้ว พร้อมให้อุปกรณ์ส่งข้อมูลขึ้นมาแล้ว
การเขียนโปรแกรมส่งค่าขึ้น Magellan
ในไลบรารี่ AIS 4G board มีไลบรารี่ของ MAGELLAN_SIM7600E_MQTT.h มาให้ โดยเพิ่มความสะดวกให้ผู้ใช้เขียนคำสั่งระดับสูงเพื่อส่งข้อมูลเข้า Magellan ได้ ไม่ต้องเขียนโปรแกรมเชื่อมต่อ API ผ่าน MQTT เอง
การใช้งานไลบรารี่เริ่มต้นด้วย include ไฟล์สำคัญดังนี้
จากนั้นสร้างออปเจค magel จากคลาส MAGELLAN_SIM7600E_MQTT ดังนี้
MAGELLAN_SIM7600E_MQTT magel;
ใน void setup() ให้วางคำสั่ง magel.begin(); ไว้คำสั่งแรก ๆ ก่อนจะเรียกใช้คำสั่งเกี่ยวกับ SIMCOM และ Magellan ตัวอย่างการคำสั่งแสดงตามด้านล่างนี้
void setup() {
Serial.begin(115200); // ใช้งาน Serial ที่ความเร็ว 115200
magel.begin(); // สั่งให้ SIMCOM เริ่มทำงาน และเตรียมเชื่อมต่อ Magellan
}
ใน void loop() ให้เรียกใช้คำสั่ง magel.loop(); แบบเร็วที่สุด (ไม่ใช้คำสั่ง delay() ใน void loop()) ดังนี้
void loop() {
magel.loop();
}
สรุปคำสั่งที่สำคัญมีดังด้านล่างนี้
#include <Arduino.h>
#include <MAGELLAN_SIM7600E_MQTT.h>
MAGELLAN_SIM7600E_MQTT magel;
void setup() {
Serial.begin(115200); // ใช้งาน Serial ที่ความเร็ว 115200
magel.begin(); // สั่งให้ SIMCOM เริ่มทำงาน และเตรียมเชื่อมต่อ Magellan
}
void loop() {
magel.loop();
}
คำสั่งที่เกี่ยวข้องกับการส่งข้อมูลมีดังนี้
คำสั่ง magel.interval() ใช้กำหนดให้โค้ดโปรแกรมส่วนที่กำหนดทำงานตามเวลาที่กำหนด เช่น กำหนดให้โค้ดโปรแกรมส่งข้อมูล ทำงานทุก ๆ 10 วินาที ตัวอย่างการใช้คำสั่ง magel.interval() แสดงดังด้านล่างนี้
magel.interval(10, []() {
// โค้ดโปรแกรมที่ต้องการให้ทำงานทุก ๆ 10 วิ
});
คำสั่งที่ใช้ส่ง Reporting Sensor ใช้คำสั่ง magel.sensor.add() คู่กับ magel.sensor.report() โดยมีตัวอย่างการส่งข้อมูล temp และ humi มีดังนี้ (ตัวแปร temp ใช้ส่งข้อมูลอุณหภูมิ, ตัวแปร humi ใช้ส่งค่าความชื้น)
magel.sensor.add("temp", 25); // เพิ่มตัวแปร temp ให้ค่าเป็น 25
magel.sensor.add("humi", 80); // เพิ่มตัวแปร humi ให้ค่าเป็น 80
magel.sensor.report(); // ส่งตัวแปรที่เพิ่ม ขึ้น Magellan
โปรแกรมส่งค่าอุณหภูมิและความชื้นจากเซ็นเซอร์บน AIS 4G board ฉบับเต็มมีดังนี้
#include <Arduino.h>
#include <MAGELLAN_SIM7600E_MQTT.h>
MAGELLAN_SIM7600E_MQTT magel; // สร้างออปเจค magel จากคลาส MAGELLAN_SIM7600E_MQTT
void setup() {
Serial.begin(115200); // ใช้งาน Serial ที่ความเร็ว 115200
SHT40.begin(); // สั่งให้เซ็นเซอร์วัดอุณหภูมิและความชื้น SHT40 เริ่มทำงาน
magel.begin(); // สั่งให้ SIMCOM เริ่มทำงาน และเตรียมเชื่อมต่อ Magellan
}
void loop() {
magel.loop(); // Keep system work
magel.interval(10, []() { // คำสั่งต่อไปนี้ทำงานทุก ๆ 10 วินาที
magel.sensor.add("temp", SHT40.readTemperature()); // เพิ่มตัวแปร temp โดยใช้ค่าอุณหภูมิที่อ่านได้จากเซ็นเซอร์ SHT40 บนบอร์ด
magel.sensor.add("humi", SHT40.readHumidity()); // เพิ่มตัวแปร humi โดยใช้ค่าความชื้นที่อ่านได้จากเซ็นเซอร์ SHT40 บนบอร์ด
magel.sensor.report(); // ส่งตัวแปรที่เพิ่ม ขึ้น Magellan
});
}
เมื่อนำโปรแกรมไปอัปโหลด เปิด Serial Monitor ขึ้นมา จะเห็นว่ามีข้อความ Report JSON: Success ขึ้นมา แสดงว่าสามารถส่งค่าจากเซ็นเซอร์วัดอุณหภูมิและความชื้นขึ้น Magellan ได้แล้ว
ที่ Magellan หน้า MY THING ตรงหัวข้อ All Things ให้กดเข้าไปที่ Thing ที่เพิ่มไว้ จากนั้นค่าต่าง ๆ ที่ AIS 4G board ส่งขึ้นมา จะแสดงในส่วน Sensor และ Activity
การเพิ่ม Control Sensor
เข้าไปที่หน้า MY THINGS กดเข้าไปที่ Thing ที่ต้องการเพิ่ม Control Sensor ตรงส่วน Sensor กดปุ่ม ADD SENSOR
กำหนดชื่อเซ็นเซอร์ (1) ค่าเริ่มต้น (2) เลือกชนิดเป็น Control Sensor (3) เลือกชนิดข้อมูลตามต้องการ ตัวอย่างต้องการเพิ่ม Control Sensor ชื่อ light ข้อมูลเป็นตัวเลข โดยใช้สั่งงานหลอดแอลอีดี E15 บนบอร์ด AIS 4G board (วิธีเขียนโปรแกรม AIS 4G board รับค่า อยู่ในหัวข้อถัดไป) เมื่อกำหนดค่าครบแล้วกดปุ่ม ADD
ระบบจะพากลับมาหน้าหลักของ Thing พร้อมแสดง Control Sensor ที่เพิ่มใหม่ พร้อมให้เขียนโปรแกรมรับค่า และสร้าง Dashboard เพื่อส่งค่าในขั้นตอนถัดไป
การเขียนโปรแกรมรับค่าจาก Magellan
การรับค่าจาก Control Sensor ที่ส่งมาจาก Magellan ต้องใช้คำสั่ง magel.getControl(), magel.subscribes(), magel.subscribe.control() โดยมีขั้นตอนการใช้งานดังนี้
ใน void setup() หลังคำสั่ง magel.begin(); ให้เพิ่มคำสั่ง magel.getControl() โดยกำหนดพารามิเตอร์แรกเป็นชื่อตัวแปร Control Sensor ที่ต้องการรับค่า ตัวอย่างต้องการรับค่าจากตัวแปร light เพื่อนำข้อมูลมาควบคุมการเปิดปิดแอลอีดี E15
void setup() {
...
pinMode(15, OUTPUT);
magel.begin(); // สั่งให้ SIMCOM เริ่มทำงาน และเตรียมเชื่อมต่อ Magellan
magel.getControl("light", [](String value) { // หากมีข้อมูลจากตัวแปร light ให้โปรแกรมต่อไปนี้ทำงาน
Serial.printf("Got 'light' is %s", value.c_str());
int light_i = value.toInt(); // แปลงข้อมูลตัวแปร light จากสตริง (String) เป็นตัวเลข (int)
if (light_i == 1) { // ถ้าค่าที่ส่งมาเป็น 1
digitalWrite(15, HIGH); // สั่งแอลอีดี E15 ติด
} else { // ถ้าไม่ใช่
digitalWrite(15, LOW); // สั่งแอลอีดี E15 ดับ
}
magel.control.ACK("light", value); // ตอบกลับค่า Control Key: light
});
...
}
ใน void loop() เพิ่มคำสั่ง magel.subscribes() และ magel.subscribe.control() ดังนี้
void loop() {
...
magel.subscribes([](){
magel.subscribe.control(PLAINTEXT);
});
...
}
ได้โค้ดโปรแกรมฉบับเต็มที่เพิ่มจากของเดิมดังนี้
#include <Arduino.h>
#include <MAGELLAN_SIM7600E_MQTT.h>
MAGELLAN_SIM7600E_MQTT magel; // สร้างออปเจค magel จากคลาส MAGELLAN_SIM7600E_MQTT
void setup() {
Serial.begin(115200); // ใช้งาน Serial ที่ความเร็ว 115200
SHT40.begin(); // สั่งให้เซ็นเซอร์วัดอุณหภูมิและความชื้น SHT40 เริ่มทำงาน
pinMode(15, OUTPUT);
magel.begin(); // สั่งให้ SIMCOM เริ่มทำงาน และเตรียมเชื่อมต่อ Magellan
magel.getControl("light", [](String value) { // หากมีข้อมูลจากตัวแปร light เข้ามาให้โปรแกรมต่อไปนี้ทำงาน
Serial.printf("Got 'light' is %s", value.c_str());
int light_i = value.toInt(); // แปลงข้อมูลตัวแปร light จากสตริง (String) เป็นตัวเลข (int)
if (light_i == 1) { // ถ้าค่าที่ส่งมาเป็น 1
digitalWrite(15, HIGH); // สั่งแอลอีดี E15 ติด
} else { // ถ้าไม่ใช่
digitalWrite(15, LOW); // สั่งแอลอีดี E15 ดับ
}
magel.control.ACK("light", value);// ตอบกลับค่า Control Key: light
});
}
void loop() {
magel.loop(); // Keep system work
magel.subscribes([](){
magel.subscribe.control(PLAINTEXT);
});
magel.interval(10, []() { // คำสั่งต่อไปนี้ทำงานทุก ๆ 10 วินาที
magel.sensor.add("temp", SHT40.readTemperature()); // เพิ่มตัวแปร temp โดยใช้ค่าอุณหภูมิที่อ่านได้จากเซ็นเซอร์ SHT40 บนบอร์ด
magel.sensor.add("humi", SHT40.readHumidity()); // เพิ่มตัวแปร humi โดยใช้ค่าความชื้นที่อ่านได้จากเซ็นเซอร์ SHT40 บนบอร์ด
magel.sensor.report(); // ส่งตัวแปรที่เพิ่ม ขึ้น Magellan
});
}
การทดสอบสั่งงาน Control Sensor ผ่าน Magellan ต้องทำผ่าน Dashboard ซึ่งจะกล่าวถึงในหัวข้อถัดไป
การสร้าง Dashboard บน Magellan
Dashboard สามารถแสดงผลข้อมูลเซ็นเซอร์ได้หลากหลายรูปแบบตามแต่จะเลือกใช้ ทั้งแสดงผลข้อมูลปัจจุบัน แสดงผลข้อมูลในรูปแบบกราฟ หรือเพิ่มสวิตช์เพื่อส่งข้อมูล Control Sensor มายัง AIS 4G board ได้
เข้าไปที่หน้า ALL PROJECT แล้วเลือกโปรเจคที่สร้างไว้
ที่หน้าย่อย DASHBOARD กด CREATE DASHBOARD
กรอกชื่อ Dashboard (1) แล้วกดปุ่ม Save (2)
ระบบจะพากลับมาที่หน้าหลักของโปรเจค เลื่อนลงมาด้านล่างจะเห็นหน้า Dashboard ใหม่ที่สร้างขึ้นมาแล้ว ให้กด ADD WIDGET เพื่อเริ่มเพิ่ม Widget
กดปุ่ม CREATE SENSOR WIDGET
กดเลือก Thing ที่ต้องการควบคุม Control Sensor หรือรับ Reporting Sensor แล้วกด NEXT
เลือกค่าที่ต้องการนำมาแสดงผลใน Widget ตัวอย่างเลือก temp แล้วกดปุ่ม Next
กดเลือกชนิดของ Widget เป็น ICON จากนั้นกด Next
ตั้งชื่อ Widget แล้วปรับแต่งรูปแบบ Widget ตามต้องการ แล้วกดปุ่ม CREATE
ระบบจะพากลับมาหน้าโปรเจค ส่วน Dashboard จะแสดงข้อมูลของ Widget ที่เพิ่มไว้ ขึ้นมาแล้ว
ทำซ้ำขั้นตอนเพิ่ม Widget อีกครั้ง โดยครั้งนี้เลือกเพิ่มค่าความชื้น (ตัวแปร humi) ผลลัพธ์ได้ตามรูปด้านล่าง
ทำซ้ำขั้นตอนการเพิ่ม Widget เพื่อเพิ่มสวิตช์ควบคุม Control Sensor: light (ที่ได้เขียนโปรแกรมรับค่าในขั้นตอนที่แล้ว) โดยครั้งนี้เลือกชื่อเซ็นเซอร์เป็น light
เลือกชนิด Widget เป็น ACTION แล้วเลือก Action Type เป็น TOGGLE แล้วกดปุ่ม NEXT
หัวข้อ Toggle On ให้ใส่ค่าเป็น 1 และหัวข้อ Toggle Off ให้ใส่ค่าเป็น 0 แล้วทำตามขั้นตอนเพิ่ม Widget จนจบ
ผลลัพธ์ได้ตามรูปด้านล่าง ทดลองกดที่สวิตซ์ ผลที่ได้จะควบคุมหลอดแอลอีดี E15 บนบอร์ด AIS 4G board ได้แล้ว
เป็นอันจบการทดลองใช้ Magellan กับ AIS 4G board โดยสามารถรับค่าเซ็นเซอร์อุณหภูมิและความชื้นมาแสดงผลบนหน้า Dashboard ได้และสามารถควบคุมการเปิดปิดแอลอีดีบนหน้า Dashboad ได้
สรุป
Magellan เป็นแพลตฟอร์ม IoT จาก AIS ที่ปัจจุบันใช้งานได้กับบอร์ด AIS 4G board แล้ว โดยใช้ไลบรารี่ประจำบอร์ดได้เลย รองรับทั้งการส่งข้อมูลเซ็นเซอร์ขึ้นไป แล้วรองรับการสั่งงานลงมา
สารจากทีมพัฒนา Magellan
สำหรับลูกค้าทั่วไปใช้ Magellan Maker ฟรีได้เลย แต่สำหรับลูกค้าที่ต้องการนำ 4G Board ไปใช้ในทางธุรกิจหรือต้องการเก็บข้อมูลมากกว่า 30 วันให้ติดต่อที่ business@ais.co.th
หากมีข้อสงสัยเพิ่มเติมเกี่ยวกับ Magellan สามารถสอบถามข้อมูลได้โดยตรงผ่านเมล์ business@ais.co.th
コメント