LoRaWAN868 模块
COM.LoRaWAN 是 M5Stack 可堆叠模块系列中的 LoRaWAN 通信模块,支持节点到节点或 LoRaWAN 通信。
支持以下产品:
MicroPython TX 应用示例:
1# SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD 2# 3# SPDX-License-Identifier: MIT 4 5import os, sys, io 6import M5 7from M5 import * 8from module import LoRaWAN868Module 9import time 10 11 12lorawan868_0 = None 13 14 15def setup(): 16 global lorawan868_0 17 18 M5.begin() 19 Widgets.fillScreen(0x222222) 20 21 lorawan868_0 = LoRaWAN868Module(1, (17, 16)) 22 lorawan868_0.wake_up() 23 lorawan868_0.set_parameters(0, 0, 5, 0, 1, 8, 0, 0, 0) 24 lorawan868_0.set_auto_low_power(False) 25 print(lorawan868_0.query_chip_id()) 26 print(lorawan868_0.query_lorawan_mode()) 27 print(lorawan868_0.any()) 28 lorawan868_0.set_mode(LoRaWAN868Module.MODE_LORA) 29 30 31def loop(): 32 global lorawan868_0 33 M5.update() 34 lorawan868_0.send_hex("Hello Lora!") 35 time.sleep(1) 36 37 38if __name__ == "__main__": 39 try: 40 setup() 41 while True: 42 loop() 43 except (Exception, KeyboardInterrupt) as e: 44 try: 45 from utility import print_error_msg 46 47 print_error_msg(e) 48 except ImportError: 49 print("please update to latest firmware")
MicroPython 应用示例:
1# SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD 2# 3# SPDX-License-Identifier: MIT 4 5import os, sys, io 6import M5 7from M5 import * 8from module import LoRaWAN868Module 9 10 11lorawan868_0 = None 12 13 14def setup(): 15 global lorawan868_0 16 17 M5.begin() 18 Widgets.fillScreen(0x222222) 19 20 lorawan868_0 = LoRaWAN868Module(1, (17, 16)) 21 lorawan868_0.wake_up() 22 lorawan868_0.set_parameters(0, 0, 5, 0, 1, 8, 0, 0, 0) 23 lorawan868_0.set_auto_low_power(False) 24 print(lorawan868_0.query_chip_id()) 25 print(lorawan868_0.query_lorawan_mode()) 26 print(lorawan868_0.any()) 27 lorawan868_0.set_mode(LoRaWAN868Module.MODE_LORA) 28 lorawan868_0.enable_rx(0) 29 30 31def loop(): 32 global lorawan868_0 33 M5.update() 34 if lorawan868_0.any(): 35 print(lorawan868_0.receive_data()) 36 lorawan868_0.enable_rx(0) 37 38 39if __name__ == "__main__": 40 try: 41 setup() 42 while True: 43 loop() 44 except (Exception, KeyboardInterrupt) as e: 45 try: 46 from utility import print_error_msg 47 48 print_error_msg(e) 49 except ImportError: 50 print("please update to latest firmware")
UIFLOW2 TX 应用示例:
UiFlow2 RX 应用示例:
class LoRaWAN868Module
Constructors
Methods
- LoRaWAN868Module.set_mode(mode)
设置 LoRaWAN 模块的模式。
- 参数:
mode – 要设置的模式。
UiFlow2:

- LoRaWAN868Module.set_parameters(freq, power, sf, bw, cr, preamble, crc, iq_inv, save)
设置 LoRaWAN 模块的参数。
- 参数:
freq – 设置 LoRa 监听/发送频率,单位为 Hz。
power – LoRa 信号输出功率(单位:dBm);
sf – 扩频因子,范围为 5~12。
bw – 带宽 0 – 125K、1 – 250K、2 – 500K;
cr – 1 – 4/5,2 – 4/6,3 – 4/7,4 – 4/8;
preamble – 前导码长度为 8 ~ 65535 bit;
crc – 0 – 禁用 CRC 校验,1 – 启用 CRC 校验;
iq_inv – 0 – 未反转,1 – 已反转;
save – 将参数保存到 FLASH,0 – 不保存,1 – 保存。
UiFlow2:

- LoRaWAN868Module.wake_up()
通过串口中断唤醒设备。复位后,设备处于睡眠状态。理论上,通过串口发送任意数据都可以触发中断并唤醒设备。
UiFlow2:

- LoRaWAN868Module.sleep()
将设备置于低功耗模式。
UiFlow2:

- LoRaWAN868Module.reset()
重置设备。
UiFlow2:

- LoRaWAN868Module.restore_factory_settings()
将设备恢复为出厂设置。参数将重置,并且设备将在响应结束后进入睡眠模式。
UiFlow2:

- LoRaWAN868Module.set_copyright(enable)
在启动加载程序模式开始时,启用或禁用版权信息打印。默认启用。
- 参数:
enable (bool) – 设置为 True 以启用,设置为 False 以禁用。
UiFlow2:

- LoRaWAN868Module.set_auto_low_power(enable)
启用或禁用自动低功耗模式。默认为启用。
- 参数:
enable (bool) – 设置为 True 以启用,设置为 False 以禁用。
UiFlow2:

- LoRaWAN868Module.query_chip_id()
查询芯片的唯一 ID,可用于查询对应的序列号。
UiFlow2:

- LoRaWAN868Module.set_deveui(deveui)
设置或查询 DevEui。DevEui 必须为 16 个十六进制字符(0-9、A-F)。
- 参数:
deveui – 要设置的 DevEui。如果为 None,则查询当前 DevEui。
UiFlow2:

- LoRaWAN868Module.set_appeui(appeui)
设置或查询 AppEui。AppEui 必须为 16 个十六进制字符(0-9、A-F)。
- 参数:
appeui – 要设置的 AppEui。如果为 None,则查询当前 AppEui。
UiFlow2:

- LoRaWAN868Module.set_appkey(appkey)
设置或查询 AppKey。AppKey 必须为 32 个十六进制字符(0-9、A-F)。
- 参数:
appkey – 要设置的 AppKey。如果为 None,则查询当前 AppKey。
UiFlow2:

- LoRaWAN868Module.set_nwkskey(nwkskey)
设置或查询 NwkSKey。NwkSKey 必须为 32 个十六进制字符(0-9、A-F)。
- 参数:
nwkskey – 要设置的 NwkSKey。如果为 None,则查询当前 NwkSKey。
UiFlow2:

- LoRaWAN868Module.set_appskey(appskey)
设置或查询 AppSKey。AppSKey 必须为 32 个十六进制字符(0-9、A-F)。
- 参数:
appskey – 要设置的 AppSKey。如果为 None,则查询当前的 AppSKey。
UiFlow2:

- LoRaWAN868Module.set_devaddr(devaddr)
设置或查询 DevAddr。DevAddr 必须为 8 个十六进制字符(0-9、A-F)。
- 参数:
devaddr – 要设置的 DevAddr。如果为 None,则查询当前 DevAddr。
UiFlow2:

- LoRaWAN868Module.set_otaa_mode(enable)
设置或查询 OTAA 模式。1 表示 OTAA 模式,0 表示 ABP 模式。
- 参数:
enable (bool) – 设置为 True 表示 OTAA 模式,设置为 False 表示 ABP 模式。
UiFlow2:

- LoRaWAN868Module.set_adr(enable)
启用或禁用 ADR(Adaptive Data Rate)功能。默认启用。
- 参数:
enable (bool) – 设置为 True 以启用 ADR,设置为 False 以禁用。
UiFlow2:

- LoRaWAN868Module.set_channel_mask(mask)
设置或查询 LoRaWAN 工作信道掩码。
- 参数:
mask – 十六进制格式的通道掩码,例如 0000000000000000000000FF 表示通道 0~7。
UiFlow2:

- LoRaWAN868Module.join_network()
使用 OTAA(Over-The-Air Activation)加入网络。该命令会触发加入过程。
UiFlow2:

- LoRaWAN868Module.set_duty_cycle(cycle)
设置或查询通信周期,单位为毫秒。例如,60000 表示每 60 秒通信一次。
- 参数:
cycle – 通信周期,单位为毫秒。
UiFlow2:

- LoRaWAN868Module.set_class_mode(mode)
设置或查询设备的通信模式。仅 Class A 或 Class C 有效。
- 参数:
mode – 设置为 "A" 表示 Class A,或设置为 "C" 表示 Class C。
UiFlow2:

- LoRaWAN868Module.set_ack(enable)
启用或禁用 ACK 回执功能。如果启用,设备将等待来自网关的确认。
- 参数:
enable (bool) – 设置为 True 以启用 ACK,设置为 False 以禁用。
UiFlow2:

- LoRaWAN868Module.set_app_port(port)
设置或查询上行数据的应用端口(fport)。有效范围为 0~255。
- 参数:
port – 要设置的应用端口。
UiFlow2:

- LoRaWAN868Module.set_retransmission_count(count)
设置或查询通信失败时的重传次数。有效范围为 3~8。
- 参数:
count – 要设置的重传次数。如果为 None,则查询当前设置。
UiFlow2:

- LoRaWAN868Module.send_hex(hex_data)
在 LoRaWAN 或 LoRa 模式下发送十六进制数据。十六进制字符必须成对出现(例如 “AABB”)。
- 参数:
hex_data – 要发送的十六进制数据,最多 64 字节。
UiFlow2:

- LoRaWAN868Module.send_string(string_data)
在 LoRaWAN 或 LoRa 模式下发送字符串数据。该字符串必须由 ASCII 字符组成。
- 参数:
string_data – 要发送的字符串数据,最多 64 字节。
UiFlow2:

- LoRaWAN868Module.query_lorawan_mode()
查询设备当前处于 LoRaWAN 模式还是普通 LoRa 模式。
UiFlow2:

- LoRaWAN868Module.save_parameters_to_flash()
将当前 LoRa 参数保存到 FLASH 存储器中。
UiFlow2:

- LoRaWAN868Module.at_cmd(cmd, data)
向 LoRaWAN 模块发送 AT 命令。
- 参数:
cmd – 要发送的 AT 命令。
data – 使用 AT 命令发送的数据。
UiFlow2:

- LoRaWAN868Module.at_query(cmd)
查询 LoRaWAN 模块的当前设置。
- 参数:
cmd – 用于查询的 AT 命令。
UiFlow2:

- LoRaWAN868Module.at_receive()
接收来自 LoRaWAN 模块的响应。
UiFlow2:

- LoRaWAN868Module.flush()
清空 UART 缓冲区。
UiFlow2:

- LoRaWAN868Module.any()
检查 UART 缓冲区中是否有任何数据。
UiFlow2:

- LoRaWAN868Module.receive_data()
从 LoRaWAN 模块接收数据。
UiFlow2:





