LoRaWAN-ED-Stack软件包是基于RTOS(RT-Thread)实现的LoRaWAN 终端设备侧(End-Device)的协议栈,可以非常方便进行LoRaWAN协议栈学习、快速搭建基于LoRaWAN通信的原型产品、应用产品等。 LoRaWAN-ED-Stack软件包在LoRaWAN开源协议栈LoRaMAC-Node基础上,进一步构建实现。LoRaWAN-ED-Stack使用LoRa-Radio-Driver软件包作为物理层lora芯片的底层驱动,使用Multi-Rtimer软件包或者RT-Thread内核RT_Tick提供MAC层的定时\超时服务。
- LoRaWAN-ED-Stack软件包当前主要功能特点:
- LoRaWAN技术规范版本(LoRaWAN Specification)
- LoRaWAN 1.0.x
- LoRaWAN 1.0.4
- 当前基于LoRa联盟官方 LoRaMAC-node 4.4.4
- LoRaWAN 1.0.4
- LoRaWAN 1.1.x
- LoRaMAC-node 5.x
- LoRaWAN 1.0.x
- 可通过menuconfig配置LoRaWAN MAC层、PHY层、应用层等相关参数
- LoRaWAN PHY层主要配置参数:
- LoRaWAN地区规范(region)
- CN470
- CN470自定义同频
- EU868
- AS923
- US915
- 缺省上行速率(LoRaWAN Default Datarate)
- 缺省信道列表(Channel Mask)
- LoRaWAN地区规范(region)
- LoRaWAN MAC主要配置参数:
- 设备类型(Device Type)
- Class A
- Class B
- Class C
- LoRaWAN数据消息类型(Data Message Type)
- 确认帧(Confirm Frame)
- 非确认帧(Unconfirm Frame)
- LoRaWAN应用端口号(Application Fport)
- ADR功能
- 设备类型(Device Type)
- LoRaWAN应用层当前提供如下应用实例
- lorawan-ed-test-shell
- 用于配置并测试LoRaWAN End-Device Class A \ Class C
- lorawan-ed-test-shell
- 功能按需裁剪
- 可通过宏定义对ClassA、ClassB、Class C、OTAA、ABP等功能进行灵活裁剪
- 可通过宏定义对日志信息裁剪,详细的协议层日志交互信息,便于前期调试、学习等
- APS层(入网、通信、用户数据包等)
- MAC层(MAC请求、MAC命令等)
- PHY(上下行通信频率、速率等)等的日志输出
- 支持IDE工具
- RT-Studio 1.1.4
- MDK 5
- 参数掉电保存
- LoRaWAN的配置参数支持掉电保存
- 对接LoRaWAN服务器平台
- 利尔达unicore服务器
- CN470 & Class A
- CN470自定义同频 & Class A\C
- 腾讯云IoT Explorer
- CN470 & Class A\C
- 利尔达unicore服务器
- LoRaWAN PHY层主要配置参数:
- LoRaWAN技术规范版本(LoRaWAN Specification)
- app
- lorawan-ed-test
- lorawan-ed-test-shell.c
- End-Device shell测试实现
- lorawan-ed-test-shell.c
- aps 应用支持子层,该文件提供了LoRaWAN End-Device应用层服务接口
- basic 基础功能
- lorawan-ed-aps.c
- 提供应用层状态机,包括入网、通信、认证程序
- lorawan-ed-certificate.c
- 提供LoRa联盟认证测试程序
- lorawan-ed-aps.c
- advannced 高级功能,当前尚未支持
- 提供分包、时间同步、组播等功能
- basic 基础功能
- common
- utilities.c
- 提供随机数、拷贝等常用功能函数
- lorawan-ed-debug.h
- 用于日志输出控制
- utilities.c
- mac
- LoRaWAN End-Device Speicificaition的具体实现,主要包括
- Class A
- Class B
- Class C
- Mac Command
- Ctypto
- multi-rtimer
- mac层的定时功能采用multi-rtimer软件包提供的定时服务
- 若未使能multi-rtimer软件包,则使用系统rt tick提供定时服务。
- LoRaWAN End-Device Speicificaition的具体实现,主要包括
- phy
- LoRaWAN End-Device regional parameters实现,主要包括
- CN470
- 自定义CN470S
- EU868
- AS923
- US915
- lora-radio-driver
- LoRa芯片驱动使用lora-radio-driver软件包
- LoRaWAN End-Device regional parameters实现,主要包括
- lorawan-ed-test
- RT-Thread 3.0.1+
- LoRa-Radio-Driver
- 可选软件包
- Multi-Rtimer
- 若使能multi-rtimer软件包,mac层的定时功能采用multi-rtimer提供的服务,否则使用系统rt tick提供定时功能。
- easyflash
- 硬件支持easyflash
- 用于将LoRaWAN-ED的配置参数保存到Flash,实现掉电存储
- Multi-Rtimer
- 可选内核组件
- ulog组件,开启后,可得到更详细的日志提示信息等
- lorawan-ed-stack内部使用ulog接口,使能ulog,可看到更多调试输出信息
- lorawan-ed-test-shell.c使用ulog接口,用于打印测试信息
- ulog组件,开启后,可得到更详细的日志提示信息等
RT-Thread Components --->
Utiliess --->
[*] Enable ulog
[*] Enable ISR log.
使能LoRaWAN-ED-Stack软件包,根据实际需要,配置LoRaWAN End-Device的相关参数:
- 选择LoRaWAN Specification版本,当前已测试版本1.0.X
- 配置LoRaWAN-ED mac参数,设置设备类型(Class A\Class B\Class C)、激活类型(OTAA\ABP)、数据消息类型(unConfirm\Confirm)、ADR使能\关闭等
- 配置LoRaWAN-ED phy参数,设置频段(Regional)、工作信道(Channel mask)、缺省上行速率等
- 配置LoRaWAN-ED Debug信息,根据需求,使能不同层的日志输出
- 选择LoRaWAN End-Device测试示例
- LoRaWAN-ED-Test-Shell.c
- Class A\Class C入网、数据通信、LoRaWAN上下行网络链路质量测试等
- LoRaWAN-ED-Test-Shell.c
使用 LoRaWAN-ED-Stack软件包,需要在 RT-Thread 的包管理中选中它,具体路径如下:
RT-Thread online packages --->
IoT - Internet of things --->
[*] lorawan_ed_stack: LoRaWAN End-Device Stack. │ │
Select LoRaWAN Specification (v1.0.X) ---> │ │
LoRaWAN Network Attribute (Public Network) ---> │ │
LoRaWAN Alliance Certificate Test (Disable) ---> │ │
Select LoRaWAN-ED Mac Parameters ---> │ │
Select LoRaWAN-ED Phy Parameters ---> │ │
Select LoRaWAN-ED Debug ---> │ │
Select LoRaWAN-ED-Stack Example ---> │ │
Version (latest) --->
lorawan-ed-test-shell提供了常用的shell命令,用来读写LoRaWAN End-Device相关MAC、PHY等参数,并进行LoRaWAN入网、Class A通信等测试验证。
当前支持的命令如下
| 序号 | 命令类型 | finish命令 | 说明 |
|---|---|---|---|
| 1 | 参数设置与读取 | lorawan deveui | 设置\读取DevEUI - 有,设置DevEUI的值,16进制,8个字节 - 无 para1,读取当前DevEUI的值 |
| 2 | 参数设置与读取 | lorawan appeui | 设置\读取AppEUI - 有,设置AppEUI的值,16进制,8个字节 - 无 para1,读取当前AppEUI的值 |
| 3 | 参数设置与读取 | lorawan appkey | 设置\读取AppKey - 有,设置AppKey的值,16进制,16个字节 - 无 para1,读取当前AppKey的值 |
| 4 | 参数设置与读取 | lorawan devaddr | 设置\读取DevAddr - 有,设置DevAddr的值,16进制,4个字节,仅适用于ABP - 无 para1,读取当前DevAddr的值 |
| 5 | 参数设置与读取 | lorawan appskey | 设置\读取AppSKey - 有,设置AppSKey的值,16进制,16个字节,仅适用于ABP - 无 para1,读取当前AppSKey的值 |
| 6 | 参数设置与读取 | lorawan nwkskey | 设置\读取NwkSKey(NwkSEncKey) - 有,设置NwkSKey的值,16进制,16个字节,仅适用于ABP - 无 para1,读取当前NwkSKey的值 |
| 7 | 参数设置与读取 | lorawan class | 设置\读取 Class类型 - 有,设置Class的值,1个字节 - 0 - Class A - 1 - Class B - 2 - Class C - 无 para1,读取当前Class的值 |
| 8 | 参数设置与读取 | lorawan confirm | 设置\读取 数据传输类型 Confirm\Unconfirm - 有,设置数据传输类型的值,1个字节 - 0 - UnConfirm - 1 - Confirm - 无 para1,读取当前数据传输类型的值 |
| 9 | 参数设置与读取 | lorawan activation | 设置\读取 设备激活方式 - 有,设置激活方式的值,1个字节 - 0 - OTAA - 1 - ABP - 无 para1,读取当前激活方式的值 |
| 10 | 入网 | lorawan join | 启动入网 - nbtrials:单次最大入网重试次数 - 0 - 停止入网 - 非0 - 入网重试次数 - interval:入网包之间的发送间隔,单位:秒,最小周期8s |
| 11 | 数据通信 | lorawan ping | LoRaWAN网络上下行链路质量测试 在设备入网后,执行该指令,LoRaWAN终端发送指定数量的Link Check测试数据包,测试完成后,shell输出当前上下行无线链路质量结果 - nbtrials:每次ping测试,发送的数据包总数 - 缺省nbtrials = 10 - interval:ping数据包之间的发送间隔,单位:秒 |
| 12 | 数据通信 | lorawan tx | 发送Class A数据包 - mode 发送模式 - 0 - 停止周期性发送 - 1 - 立即发送一次 - 2 ~ 1500 - 按次数发送,执行该指令后,设备发送指定次数的数据包后停止,发送间隔为10s - >1500 - 按周期发送,单位ms,执行该指令后,设备周期性发送 - cfm 数据消息类型 - 0 - 非确认帧 - 1 - 确认帧 - port 应用端口号 - 1~223 - len - 数据包长度 - data - 自定义发送数据包{x1,x2,x3...},16进制格式 |
| 13 | 保存 | lorawan save | 保存配置信息到Flash(需要硬件支持easyflash),缺省情况下,默认保存为 - type 保存类型 - dev - 设备身份信息(DevEUI、AppEUI、AppKey等) - cfg - LoRaWAN工作参数(Class Type、OTAA\ABP等) |
| 14 | 恢复出厂设置 | lorawan factory | 恢复LoRaWAN工作参数为出厂值 |
测试示例:






ABP直接通信测试(CN470自定义-ABP-Class A-掉电参数)
- 初始化lorawan协议栈
/* Configure the LoRaWAN End-Device Stack*/
lorawan_ed_stack_init(&lorawan_ed_user_app_callback, &lorawan_ed_init_params);- 启动入网
LoRaMacStatus_t lorawan_ed_start_join_network( void )- 发送上行数据包
bool lorawan_ed_send(lorawan_ed_appdata_t* AppData)- 接收下行数据
static void lorawan_ed_receive_message(lorawan_ed_appdata_t *app_data)- LoRaWAN-ED-Stack1.0.0 基于LoRaMac-node 4.4.4 released版本
- 支持lorawan regional parameters 1.0.3
- 协议栈本身的实现最大程度保持LoRaMAC-node保持一致,便于后续持续更新
- 修复下行Buffer潜在的溢出风险漏洞 (腾讯安全团队)
- 支持lorawan-ed-test-shell命令快速进行LoRaWAN End-Device参数配置与功能验证、测试等
- 支持menuconfig进行lorawan协议参数的灵活配置
- 支持LoRaWAN地区规范(region)
- CN470
- CN470自定义同频
- LoRa Allicance LoRaWAN技术规范
- LoRaMac-node官方仓库
- LoRa-Radio-Driver仓库
- Multi-Rtimer仓库
- RT-Thread官方仓库



