|
|
5 ani în urmă | |
|---|---|---|
| .. | ||
| README.md | 5 ani în urmă | |
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层的定时\超时服务。
app
phy
lora-radio-driver
LoRa芯片驱动使用lora-radio-driver软件包
RT-Thread 3.0.1+
LoRa-Radio-Driver
可选软件包
可选内核组件
ulog组件,开启后,可得到更详细的日志提示信息等
lorawan-ed-test-shell.c使用ulog接口,用于打印测试信息
RT-Thread Components --->
Utiliess --->
[*] Enable ulog
[*] Enable ISR log.
使能LoRaWAN-ED-Stack软件包,根据实际需要,配置LoRaWAN End-Device的相关参数:
选择LoRaWAN End-Device测试示例
LoRaWAN-ED-Test-Shell.c
Class A\Class C入网、数据通信、LoRaWAN上下行网络链路质量测试等
使用 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工作参数为出厂值 |
测试示例:
OTAA入网测试(标准CN470-OTAA-ClassA)
OTAA入网测试(CN470自定义-OTAA-ClassA)
非确认帧通信测试(CN470自定义-OTAA-ClassA)
确认帧测试(标准CN470-OTAA-ClassA)
lorawan ping测试(标准CN470-OTAA-ClassA)
入网与服务器主动下发下行数据测试(标准CN470-OTAA-Class C)

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)