วันพุธที่ 24 เมษายน พ.ศ. 2562

เขียน Code บน CAT StarterKit Gravitech S76S โดยใช้ CAT-Libraries for S76S

ตอนนี้หลายๆคนคงทราบแล้วว่าทาง CAT ที่เป็นผู้ให้บริการ Lora ในประเทศไทย ได้นำอุปกรณ์ CAT Starter Kit Gravitech S767 ที่เขียนบน Arduino เข้ามาขายเพื่อให้นัก Dev ทดลองใช้งานกัน ซึ่งสามารถใช้งานบนโครงข่าย Loพa ของ CAT ได้อย่างแน่นอน
ข้อมูลสเปคของบอร์ด LoRa Starter Kit Gravitech S76S
• ไมโครคอนโทรลเลอร์ : ATSAMD21G18
• หน่วยความจา : FLASH 256 KB + SRAM 32 KB
• แรงดันไฟเลี้ยง : 3V
• อินพุต/เอาต์พุท : 9 ขา
• อะนาล็อกอินพุต : 6 ขา
• Peripheral อื่น : Serial, SPI และ I2C
• ชิป Communication : Acsip S76S
• เซ็นเซอร์บนบอร์ด : HTS221
• ขนาด : 25.4 X 76.2 มิลลิเมตร

ซึ่งอุปกรณ์ตัวนี้จะเขียนง่ายกว่า STM32 ค่อนข้างมากเพราะเขียนบน Arduino ที่หลายคนคงคุ้นเคยกันดีอยู่แล้ว โดยที่เราสามารถ Download code ตัวอย่าง ได้ตาม link นี้
https://github.com/iDemoLive/LoraIoT-by-CAT/blob/master/lora_conf.ino
โดย code ที่มีจะเป็นการกำหนดค่า frequency ให้ใช้งานบน AS923 และกำหนดค่า devEUI ต่างๆของอุปกรณ์ ซึ่งก็อาจจะงงนิดหน่อย
แต่ตอนนี้เรามี libraries ของ CAT S76S เรียบร้อยแล้ว จากเดิมที่ต้องเขียน code สำหรับ connect lora เกือบ 200 บรรทัด เราย่อมาเหลือแค่ไม่กี่บรรทัดก็สามารถใช้งานอุปกรณ์ S76S บนโครงข่าย CAT ได้แล้ว

ตัวอย่าง Code S76S แบบใช้งาน catLoRa libraries v.1 สำหรับอุปกรณ์ S76S
(สามารถ Download code ตัวอย่าง catLoRa libraries ได้ที่นี่ https://github.com/iDemoLive/CAT-Lora-libraries)
เพิ่ม libraries โดยให้ Copy folder "catLoRa" ไปวางไว้ใน C:...\Documents\Arduino\libraries\catLoRa


ในตัวอย่างเราจะส่งข้อมูลแบบ Class C และ Mode เป็น ABP
String _CLASS = "C";
String _devEUI = "XXXXXXXXXXXXXXXXX";  // 16digit
String _devADDR = "XXXXXXXX"; //8 digit
String _port = "6"; // กำหนด port ที่ใช้ในการส่งข้อมูลบน CATlora



ในส่วนของการเรียกใช้งาน catLoRa libraries
#include "catLoRa.h" // เรียกใช้งาน catLoRa libraries

catLoRa lora; // กำหนดชื่อในการเรียกใช้งาน catLoRa libraries

lora.begin(); // เริ่มต้นใช้งาน Lora AS923


lora.joinABP(_CLASS, _devEUI, _devADDR); // กำหนดค่าการใช้งาน lora ของอุปกรณ์ S767


เมื่อมีการกำหนดค่าการใช้งานต่างๆใน setup(){} แล้ว เมื่อ RUN code จะแสดงผลแบบนี้
ซึ่งการ Setup ในขั้นตอนนี้ ระบบจะต้องมีการตอบ >> Ok กลับมาเท่านั้น ถึงจะใช้งานได้

ในส่วน code loop(){} จะเป็นการเขียนเพิ่มให้อุปกรณ์ทำงานตามที่เราต้องการ เช่น รับค่าจาก Sensor และส่งข้อมูลผ่าน CATlora เพื่อให้ส่งต่อไปยัง Application Server


lora.ledBLINK(); // สั่งให้ไฟ LED กระพริบ

String temp = lora.getTemp(); // get ค่าอุณหภูมิของ Sensor บน S76S
// code จะส่งค่าเป็น String กลับมาให้ จำนวน 4 หลัก เช่น 2850 ซึ่งก็คือ 28.50 C

String humi = lora.getHumi(); // get ค่าความชื้นของ Sensor บน S76S
// code จะส่งค่าเป็น String กลับมาให้ จำนวน 4 หลัก เช่น 6050 ซึ่งก็คือ 60.50 %H

_payLoad = lora.getLPPformat(); // get ค่าอุณหภูมิและความชื้น ในรูปแบบข้อมูลของ Cayenne -> 0067011501686a

lora.sendPayload(_port,_payLoad); // ส่งข้อมูล Payload ผ่าน CATlora
// โดยระบบจะ return ค่ากลับมาเป็น true/false




สามารถ Download code ตัวอย่าง catLoRa libraries S76S ได้ที่นี่