LoRa mesh และเครือข่ายภาคสนาม
UAT 207 ระบบสื่อสารและเครือข่ายข้อมูล
บทเรียน
เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ
- อธิบายพารามิเตอร์ของ LoRa ได้แก่ spreading factor แบนด์วิดท์ และ coding rate
- คำนวณเวลาออกอากาศของ LoRa และจำนวนข้อความสูงสุดภายใต้ข้อจำกัด duty cycle
- คำนวณโอกาสส่งถึงปลายทางของเครือข่าย mesh ตามจำนวน hop และการส่งซ้ำ
- อธิบายข้อจำกัดของปริมาณงานในเครือข่ายหลายช่วงต่อ และกฎการใช้คลื่นย่าน 920–925 MHz
ทำไมต้องรู้
ในป่าชายเลนไม่มีสัญญาณโทรศัพท์ ทีมจึงต้องสร้างเครือข่ายเองเพื่อส่งข้อมูลจากเซนเซอร์และตำแหน่งของคนกลับสถานี LoRa ส่งได้ไกลด้วยพลังงานต่ำ แต่แลกด้วยอัตราข้อมูลที่ช้ามาก ส่วน mesh ให้แต่ละโหนดช่วยทวนข้อมูลต่อ หน่วยความรู้เจาะลึกเรื่อง LoRa/Mesh และการประสานฝูงโดรนผ่าน LoRa Mesh ของคลังความรู้โดรนให้ภาพรวมการใช้งานจริง โมดูลนี้ลงไปที่ตัวเลขที่ใช้ออกแบบ
พารามิเตอร์ของ LoRa
LoRa ใช้การมอดูเลตแบบกระจายสเปกตรัม spreading factor (SF) 7–12 บอกว่าแต่ละสัญลักษณ์ยาวเท่าใด SF สูงขึ้นหนึ่งขั้น สัญลักษณ์ยาวขึ้นสองเท่า ส่งได้ไกลและทนสัญญาณรบกวนกว่า แต่ใช้เวลาออกอากาศนานขึ้น datasheet ของ SX1276 ข้อ 4.1.1.7 ให้สูตรเวลาออกอากาศในกล่องสรุปสูตร โดย คือจำนวนไบต์ข้อมูล คือ coding rate (1 = 4/5) = 1 เมื่อไม่มีส่วนหัว และ = 1 เมื่อเปิด low data rate optimize
ประเทศไทยใช้แผนช่องสัญญาณ AS923-1 ย่าน 920–925 MHz ตาม LoRaWAN Regional Parameters (RP002) ของ LoRa Alliance กฎของ กสทช. ย่านนี้ สมาคมโทรคมนาคมแห่งประเทศไทยสรุปว่าอุปกรณ์ IoT ใช้ได้ถึง 500 mW e.i.r.p. โดยไม่ต้องขอใบอนุญาต และเพดานสูงสุดของย่านคือ 4 W e.i.r.p. ข้อมูลนี้มาจากแหล่งรอง ต้องตรวจกับประกาศ กสทช. ในราชกิจจานุเบกษาก่อนใช้งานจริง ส่วน duty cycle 10% ในตัวอย่างเป็นค่าที่ Meshtastic ตั้งไว้สำหรับภูมิภาค TH ไม่ใช่ข้อกำหนดที่ตรวจกับประกาศแล้ว
ตัวอย่างที่ 1 เวลาออกอากาศและจำนวนข้อความต่อชั่วโมง
ข้อความตำแหน่ง 20 ไบต์ BW 125 kHz CR 4/5 preamble 8 เปิด CRC มีส่วนหัว และเปิด DE ที่ SF11–12
import math
def time_on_air(pl, sf, bw=125e3, cr=1, n_pre=8, crc=1, ih=0):
de = 1 if sf >= 11 else 0
t_sym = 2 ** sf / bw
n_pay = 8 + max(math.ceil((8 * pl - 4 * sf + 28 + 16 * crc - 20 * ih) / (4 * (sf - 2 * de))) * (cr + 4), 0)
return (n_pre + 4.25) * t_sym + n_pay * t_sym
for sf in range(7, 13):
t = time_on_air(20, sf)
per_hour = {dc: int(dc * 3600 / t) for dc in (0.10, 0.01)}
print(f"SF{sf:<2}: {t * 1000:7.1f} ms, max {per_hour[0.10]:>5} msgs/h at 10% duty, {per_hour[0.01]:>4} at 1%")
SF7 : 56.6 ms, max 6363 msgs/h at 10% duty, 636 at 1%
SF8 : 102.9 ms, max 3498 msgs/h at 10% duty, 349 at 1%
SF9 : 185.3 ms, max 1942 msgs/h at 10% duty, 194 at 1%
SF10: 370.7 ms, max 971 msgs/h at 10% duty, 97 at 1%
SF11: 741.4 ms, max 485 msgs/h at 10% duty, 48 at 1%
SF12: 1318.9 ms, max 272 msgs/h at 10% duty, 27 at 1%
SF12 ใช้เวลานานกว่า SF7 กว่ายี่สิบเท่า ถ้าคนในสนาม 20 คนส่งตำแหน่งทุกนาทีด้วย SF12 จะใช้ 1,200 ข้อความต่อชั่วโมงซึ่งเกินที่ช่องสัญญาณเดียวรับได้แม้ duty cycle 10% ต้องลดความถี่ส่ง ลด SF ในจุดที่สัญญาณดี หรือแบ่งช่องสัญญาณ
เครือข่าย mesh
ในเครือข่าย mesh โหนดส่งต่อข้อความให้กันจนถึงเกตเวย์ แต่ละการส่งต่อเรียกว่าหนึ่ง hop Meshtastic ตั้ง hop limit เริ่มต้นไว้ 3 และสูงสุด 7 โดรนก็ทำหน้าที่เป็นโหนดทวนสัญญาณลอยฟ้าชั่วคราวได้ แต่ทุก hop เพิ่มโอกาสหายและเวลาหน่วง และใช้ช่องสัญญาณเดียวกันซ้ำ
Li และคณะ (2001) วิเคราะห์โซ่ของโหนดไร้สายที่ใช้ช่องสัญญาณเดียว พบว่าในอุดมคติโซ่ยาวได้ปริมาณงานเพียงราว 1/4 ของลิงก์เดียว และในการจำลอง 802.11 ได้ราว 1/7 เพราะโหนดส่งต่อรบกวนกันเอง
ตัวอย่างที่ 2 ส่งถึงปลายทางกี่เปอร์เซ็นต์
แต่ละ hop ส่งสำเร็จ 90% อย่างอิสระ ใช้ SF9 ข้อความ 20 ไบต์ ถ้าไม่สำเร็จส่งซ้ำได้ไม่เกิน R ครั้งต่อ hop
P_HOP, TOA_S = 0.90, 0.185 # โอกาสสำเร็จต่อ hop, เวลาออกอากาศ SF9
for hops in (1, 2, 3, 5):
row = []
for retries in (0, 2):
hop_ok = 1 - (1 - P_HOP) ** (retries + 1)
tries = sum((1 - P_HOP) ** k for k in range(retries + 1)) # จำนวนครั้งเฉลี่ยต่อ hop
row.append(f"R={retries}: {hop_ok ** hops:6.1%}, airtime {hops * tries * TOA_S:.2f} s")
print(f"{hops} hop(s): " + " | ".join(row))
1 hop(s): R=0: 90.0%, airtime 0.18 s | R=2: 99.9%, airtime 0.21 s
2 hop(s): R=0: 81.0%, airtime 0.37 s | R=2: 99.8%, airtime 0.41 s
3 hop(s): R=0: 72.9%, airtime 0.55 s | R=2: 99.7%, airtime 0.62 s
5 hop(s): R=0: 59.0%, airtime 0.93 s | R=2: 99.5%, airtime 1.03 s
ไม่มีการส่งซ้ำ ห้า hop ส่งถึงได้ไม่ถึงสามในห้า การส่งซ้ำสองครั้งทำให้เกือบทุกข้อความถึงปลายทาง โดยใช้เวลาออกอากาศเพิ่มเพียงราว 11% ค่านี้ยังไม่รวมการชนกันของข้อความที่เพิ่มขึ้นเมื่อเครือข่ายหนาแน่น ซึ่งทำให้ปริมาณงานจริงลดลงตามที่ Li และคณะแสดงไว้
ปฏิบัติการประจำโมดูล
ปฏิบัติการ: ออกแบบเครือข่ายภาคสนาม
- ใช้โค้ดตัวอย่างที่ 1 เลือก SF และอัตราส่งตำแหน่งสำหรับทีม 20 คน ให้ใช้ช่องสัญญาณไม่เกินครึ่งของ duty cycle ที่ตั้ง
- ตั้งโหนด LoRa สามตัว (เช่น Meshtastic) ในภูมิภาค TH วัดอัตราส่งถึงปลายทางเมื่อมีหนึ่งและสอง hop
- ใช้ตัวอย่างที่ 2 เทียบกับผลวัด อธิบายส่วนที่ต่าง
- ทดลองให้โดรนลอยตัวถือโหนดทวน สังเกตการเปลี่ยนเส้นทางของข้อความ
- ตรวจกฎ กสทช. ย่าน 920–925 MHz ฉบับจริง แล้วบันทึกกำลังส่งและค่าตั้งที่ใช้ให้ถูกต้องตามกฎ
ข้อผิดพลาดที่พบบ่อย
ระวัง
- ใช้ SF12 ทุกโหนด จนช่องสัญญาณเต็ม
- ตั้ง hop limit สูง โดยไม่คิดการชนกันและเวลาหน่วง
- ใช้ภูมิภาคหรือความถี่ผิด กับประเทศไทย
- คิดว่าปริมาณงานของ mesh เท่ากับลิงก์เดียว
- ส่งข้อมูลส่วนบุคคลผ่านเครือข่ายเปิดโดยไม่เข้ารหัส
สรุป
- SF สูงขึ้นหนึ่งขั้น เวลาออกอากาศเพิ่มเกือบเท่าตัว ส่งไกลขึ้นแต่รองรับข้อความน้อยลง
- ประเทศไทยใช้ AS923-1 ย่าน 920–925 MHz ต้องตรวจกำลังส่งและเงื่อนไขกับประกาศ กสทช.
- โอกาสส่งถึงลดลงแบบทวีคูณตามจำนวน hop การส่งซ้ำช่วยได้มาก
- โซ่ช่องสัญญาณเดียวได้ปริมาณงานเพียงส่วนหนึ่งของลิงก์เดียว (ราว 1/4 ในอุดมคติ)
แบบฝึกตรวจความเข้าใจ
- SF10 ที่ BW 125 kHz มีเวลาหนึ่งสัญลักษณ์เท่าใด
- ข้อความใช้เวลาออกอากาศ 0.5 s duty cycle 1% ส่งได้สูงสุดกี่ข้อความต่อชั่วโมง
- แต่ละ hop สำเร็จ 80% สาม hop ไม่ส่งซ้ำ สำเร็จเท่าใด
- hop limit เริ่มต้นของ Meshtastic คือเท่าใด
- ทำไมโซ่ของโหนดไร้สายช่องสัญญาณเดียวจึงได้ปริมาณงานต่ำกว่าลิงก์เดียว
เฉลย
- ms
- ข้อความ
- 3
- โหนดที่ส่งต่อใช้ช่องสัญญาณเดียวกันจึงส่งพร้อมกันไม่ได้และรบกวนกันเอง
สรุปสูตรสำคัญ
| เวลาหนึ่งสัญลักษณ์ของ LoRa | |
| จำนวนสัญลักษณ์ของข้อมูล | |
| เวลาออกอากาศ |
แหล่งอ้างอิงหลัก
- Semtech Corporation. (2015). SX1276/77/78/79 – 137 MHz to 1020 MHz low power long range transceiver (Datasheet Rev. 4). link
- LoRa Alliance. (2021). RP002-1.0.3 LoRaWAN regional parameters. link
- สมาคมโทรคมนาคมแห่งประเทศไทย. การใช้งาน IoT และ RFID ย่าน 920–925 MHz (สรุปประกาศ กสทช.). link
- Meshtastic. LoRa configuration. Meshtastic documentation. link
- Li, J., Blake, C., De Couto, D. S. J., Lee, H. I., & Morris, R. (2001). Capacity of ad hoc wireless networks. In Proceedings of the 7th Annual International Conference on Mobile Computing and Networking (MobiCom '01). ACM. link
อ่านเพิ่มเติม
ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล
เนื้อหาเจาะลึก: อินเทอร์เน็ตของสรรพสิ่งทางทหาร (IoT) เครือข่าย LoRa/Mesh และการประยุกต์ใช้งานจริง
เนื้อหาเจาะลึก: การประสานฝูงโดรน (Swarm Drone) ผ่านโครงข่ายสื่อสาร LoRa Mesh Network
ในชั้นเรียน / ภาคสนาม
ปฏิบัติการในห้องแล็บหรือภาคสนามตามใบงาน พร้อม checklist ความปลอดภัย
หลักฐานการเรียนรู้: ใบงานที่ผ่านการตรวจและผล quiz