ได้บอร์ด STM32 LoRa ตัวเทพมาครับ ปรากฎว่ามันเชื่อมกับ TTN ง่ายซะจนผมต้องทำคลิปสอนสั้นๆลง YouTube เลย
ง่ายมากเลย หวังว่าน้องๆจะชอบนะ!
Extreme Range Endpoints: มาดูสถาปัตยกรรมของ Seeed LoRa-E5 Mini กัน
Wi-Fi แบบเดิมๆเนี่ย พอเลย 50 เมตรไปก็แทบจะใช้การไม่ได้แล้ว ส่วนเครือข่าย Cellular ทั่วไปก็ต้องจ่ายค่าซิมรายเดือนแบบเจ็บปวด! LoRa-E5 mini ตัวนี้มาทำลายข้อจำกัดเรื่องการส่งข้อมูลระยะไกลให้แหลก ด้วยการใช้โปรโตคอล LoRaWAN (Long Range Wide Area Network)! มันทำงานบนแถบความถี่ Industrial/Scientific/Medical (ISM) ที่ต่ำมาก (เช่น 868MHz EU / 915MHz US) สถาปัตยกรรมขั้นสูงสุดๆนี้ขับเคลื่อนด้วยชิป STM32WLE5JC แบบโมโนลิธิค! โดยให้ Arduino ทำหน้าที่เป็น Master สั่งงาน SoC ของ LoRa-E5 ผ่าน UART Serial ด้วย AT-Commands ง่ายๆ เพื่อให้มันจัดการการส่งสัญญาณแบบ Chirp-Spread-Spectrum ที่โคตรจะซับซ้อนและมีการเข้ารหัส พร้อมยิงค่าจากเซนเซอร์ไปไกลถึง 5 กิโลเมตรทะลุผ่านแม้แต่ป่าทึบ ตรงเข้าไปยัง The Things Network (TTN) ได้เลย!
Serial AT-Command Execution Pipeline
LoRa-E5 ตัวนี้จัดการเรื่อง Nightmare อย่างการ Handshake แบบ LoRaWAN ที่มีการเข้ารหัส AES-128 ได้เองอัตโนมัติบน ARM Cortex-M4 ข้างใน! Arduino แค่คอยกำกับมันโดยส่งสตริงคำสั่งเฉพาะไป!
- Arduino คุยกับ E5 mini ผ่าน Hardware หรือ Software Serial
- ส่งคำสั่งเริ่มต้นที่ขาดไม่ได้คือ
AT+JOIN(Over The Air Activation - OTAA) - โมดูลจะทำการยืนยันตัวตนด้วย Hash ที่เข้ารหัสกับ Gateway ของ TTN แบบเงียบๆ (แต่จริงๆแล้วมันดุมาก)
- ถ้าผ่าน Arduino ก็สามารถยิงข้อมูล Hex ดิบๆ ตรงๆ ด้วยคำสั่ง
AT+CMSGHEX=...ได้เลย
#include <SoftwareSerial.h>
SoftwareSerial LoRaSerial(2, 3); // TX, RX Interface!
void setup() {
Serial.begin(9600);
LoRaSerial.begin(9600); // Boot the E5-Mini UART matrix!
// Set the specific cryptographic LoRaWAN AppEUI / DevEUI Keys!
LoRaSerial.println("AT+ID=AppEui,\"0102030405060708\"");
delay(100);
LoRaSerial.println("AT+KEY=APPKEY,\"01010101010101010101010101010101\"");
// Violently demand an OTAA Gateway Join handshake!
LoRaSerial.println("AT+JOIN");
delay(5000); // It takes seconds for RF waves to travel to the Gateway and back!
}
void loop() {
// Blast Hexadecimal representation of "Temperature: 28" (0x1C) over 5 Kilometers!
LoRaSerial.println("AT+CMSGHEX=1C");
delay(60000); // 1-minute deep sleep constraints specifically for regional Duty-Cycle Laws!
}
LoRaWAN The Things Network (TTN) Cloud Dashboarding
รู้มั้ยว่าน้อง LoRa node มันไม่ได้คุยกันเองตรงๆ นะ! มันส่งสัญญาณไปหาโครงสร้างพื้นฐานระดับเมืองเลยต่างหาก!
- สัญญาณ "ปิ๊ง" นี่บินไปไกลเป็นกิโลเมตร จนโดนสกัดกั้น (ในทางที่ดี) โดย The Things Network (TTN) LoRa Gateway สาธารณะ ที่มักจะติดตั้งอยู่บนตึกสูงๆ ในเมือง
- จากนั้น Gateway ก็จะส่งข้อมูลที่เข้ารหัสแล้วต่อ ผ่านอินเทอร์เน็ตธรรมดา (ผ่านสายไฟเบอร์ออปติกนับไม่ถ้วน) ไปยังระบบคลาวด์
- หน้าที่ของเราคือล็อกอินเข้า TTN Cloud Console ถอดรหัสข้อมูล AES payload แล้วก็โยนข้อมูลดิบๆ ผ่าน WebHook ตรงเข้าไปแสดงผลบนแดชบอร์ดสวยๆ ใน Ubidots หรือ Thingspeak ได้อย่างราบรื่น!
อุปกรณ์ขั้นสูงสำหรับ LPWAN Telemetry
- Arduino Uno/Nano (หรือจะใช้ LoRa-E5 Mini แบบสแตนด์อโลนเลยก็ได้ โดยโปรแกรมลงไปที่ตัวประมวลผล STM32 ในตัวมันเองผ่าน STM32CubeIDE!)
- บอร์ดพัฒนา Seeed Studio LoRa-E5 mini (เป็นโมดูลที่รับคำสั่ง AT command แบบเป๊ะๆ ได้มาตรฐานครบ!)
- สายอากาศ (Antenna) ขนาดใหญ่ ความถี่ 915MHz / 868MHz (สำคัญมาก! ถ้าบูตโมดูลหรือส่งสัญญาณแรงๆ โดยที่ยังไม่ได้ต่อสายอากาศให้แน่นหนา วงจรขยายสัญญาณ RF ด้านในอาจไหม้ได้ในทันที!)
- บัญชี TTN หรือ Helium Carrier ที่เปิดใช้งานแล้ว (เอาไว้ตั้งค่า cryptographic parameters สำคัญอย่าง Application EUI กับ Device EUI ให้ลงตัว!)