top of page
สนธยา นงนุช

ลองเล่น Magellan แพลตฟอร์ม IoT จาก AIS กับ AIS 4G board



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 ชนิด คือ

  1. Reporting Sensor คือ ข้อมูลที่ AIS 4G board ส่งขึ้นไปบน Magellan เช่น ค่าอุณหภูมิ ค่าความชื้น ค่าความเข้มแสง ค่าสี ค่าสถานะการเปิด-ปิดประตู เป็นต้น โดยรองรับทั้งข้อมูลแบบตัวเลขและตัวอักษร

  2. 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 ไฟล์สำคัญดังนี้

#include <Arduino.h>
#include <MAGELLAN_SIM7600E_MQTT.h>

จากนั้นสร้างออปเจค 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


ดู 791 ครั้ง0 ความคิดเห็น

コメント


bottom of page