Atom DTU LoRaWAN 系列底座
这是 Atom DTU LoRaWAN 系列底座的驱动程序库,用于接收和发送来自 LoRaWAN 模块的数据。
支持以下产品:
UIFLOW2 应用示例:
LoRaWAN 通讯
在UiFlow2 中打开 atoms3r_dtu_lorawan_example.m5f2 项目。
本示例演示如何使用 Atom DTU LoRaWAN Base 接收和发送数据。
UiFlow2 代码块:
示例输出:
None
MicroPython 应用示例:
LoRaWAN 通讯
本示例演示如何使用 Atom DTU LoRaWAN Base 接收和发送数据。
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 base import AtomDTULoRaWANBase 9 10 11title0 = None 12base_lorawan470 = None 13 14 15def setup(): 16 global title0, base_lorawan470 17 18 M5.begin() 19 title0 = Widgets.Title("LoRaWAN", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18) 20 21 base_lorawan470 = AtomDTULoRaWANBase(2, port=(5, 6)) 22 base_lorawan470.set_join_mode(0) 23 base_lorawan470.config_otaa("xxxx", "xxxx", "xxxx") 24 base_lorawan470.set_frequency_band_mask("0400") 25 base_lorawan470.set_rx_window_param(0, 0, 505300000) 26 base_lorawan470.set_class_mode(2) 27 base_lorawan470.set_uplink_downlink_mode(1) 28 base_lorawan470.set_uplink_app_port(1) 29 base_lorawan470.join(1, 1, 20, 20) 30 print("LoRaWAN configuration complete") 31 32 33def loop(): 34 global title0, base_lorawan470 35 M5.update() 36 if BtnA.isPressed(): 37 print("Send Message") 38 base_lorawan470.send_data("11", 1, 15) 39 40 41if __name__ == "__main__": 42 try: 43 setup() 44 while True: 45 loop() 46 except (Exception, KeyboardInterrupt) as e: 47 try: 48 from utility import print_error_msg 49 50 print_error_msg(e) 51 except ImportError: 52 print("please update to latest firmware")
示例输出:
None
API参考
AtomDTULoRaWANBase
- class base.dtu_lorawan.AtomDTULoRaWANBase(id=1, port=None)
基类:
LoRaWAN_470创建 AtomDTULoRaWANBase 对象。
UiFlow2 代码块:

MicroPython 代码块:
from base import AtomDTULoRaWANBase dtu_lorawan = AtomDTULoRaWANBase(0, (6, 5))
- class driver.asr650x.LoRaWAN_470(uart, debug=False)
-
创建 LoRaWAN 对象。
MicroPython 代码块:
from driver.asr650x import LoRaWAN_470 lora = LoRaWAN_470(tx=17, rx=16)
- config_abp(devaddr, appskey, nwkskey)
配置 ABP 连接模式信息。
UiFlow2 代码块:

MicroPython 代码块:
lora.config_abp("0037CAE1FC3542B9", "70B3D57ED003B699", "67FA4ED1075A20573BCDD7594C458698")
- get_abp_config()
获取 ABP 连接模式信息。
- 返回:
ABP 连接模式信息(devaddr、appskey、newskey)。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
lora.get_abp_config()
- config_otaa(deveui, appeui, appkey)
配置 OTAA 连接模式信息。
UiFlow2 代码块:

MicroPython 代码块:
lora.config_otaa("0037CAE1FC3542B9", "70B3D57ED003B699", "67FA4ED1075A20573BCDD7594C458698")
- get_otaa_config()
获取 OTAA 连接模式信息。
- 返回:
OTAA 连接模式信息(deveui、appskey、newskey)。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
lora.get_otaa_config()
- check_join_status()
检查 LoRaWAN 网络加入状态。
- 返回:
LoRaWAN 网络加入状态。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
lora.check_join_status()
- check_uplink_status()
检查数据上行链路状态。
- 返回:
数据上行链路状态。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
lora.check_uplink_status()
- class driver.asr650x.LoRaWAN_Asr650x(uart, debug=False)
基类:
object创建 LoRaWAN 对象。
- 参数:
uart (machine.UART) – UART 对象。
debug (bool) – 是否开启调试模式
MicroPython 代码块:
from driver.asr650x import LoRaWAN_Asr650x lora = LoRaWAN_Asr650x(uart)
- set_join_mode(mode)
设置 LoRaWAN 连接模式。
- 参数:
mode (int) – LoRaWAN 连接模式。
UiFlow2 代码块:

MicroPython 代码块:
lora.set_join_mode(0)
- set_frequency_band_mask(mask)
设置频段掩码。
- 参数:
mask (str) – 频段掩码。
MicroPython 代码块:
lora.set_frequency_band_mask("0001")
- set_uplink_downlink_mode(mode)
设置上行和下行链路的频率。
- 参数:
mode (int) – 上行和下行链路的频率。
MicroPython 代码块:
lora.set_uplink_downlink_mode(1)
- set_class_mode(class_mode, branch=None, para1=None, para2=None, para3=None, para4=None)
设置class 模式,如果class模式为 0,则忽略branch、para1、para2、para3 和para4。
- 参数:
MicroPython 代码块:
lora.set_class_mode(0, 0, 0, 0, 0, 0)
- join(para1, para2=None, para3=None, para4=None)
加入 LoRaWAN 网络。
- 参数:
UiFlow2 代码块:


MicroPython 代码块:
lora.join(1, 1, 8, 1) lora.join(0)
- send_data(payload, confirm=None, nbtrials=None)
向 LoRaWAN 网关发送数据有效载荷。
UiFlow2 代码块:

MicroPython 代码块:
lora.send_data("Hello, World!", 1, 1)





