项目简介
本项目是一个基于 Mbed-OS
LoRaWAN 协议 API 的示例应用程序。Mbed-OS LoRaWAN 堆栈实现符合 LoRaWAN v1.0.2 规范,可与任何网络服务器配合使用,前提是拥有该网络服务器的正确凭证。
项目的主要特性和功能
- 多硬件支持:支持多种具备 Arduino 外形的 Mbed 开发板,搭配 SX126X、SX1276、SX1272 等 LoRa 模块,同时支持特定的 Mbed 启用 LoRa MCU 和 LoRa 模块。
- 灵活的网络连接方式:支持 OTAA(Over-the-air-activation)和 ABP(Activation-By-Personalization)两种连接方式。
- 多区域 PHY 支持:提供 10 种不同国家特定的
LoRaPHY
类实现,可在编译时选择特定的 PHY 层。 - 支持占空比控制:默认启用占空比,符合 LoRaWAN v1.0.2 规范,也可根据需求关闭。
- 可配置性:通过 Mbed OS 配置系统,可对应用进行多项配置,如网络凭证、PHY 层选择、占空比等。
- 可选功能:支持添加跟踪库以启用 Mbed 跟踪,还可进行内存优化。
安装使用步骤
1. 准备工作
Mbed CLI 2(适用于 Mbed OS 6.5 及以上版本)
- 安装 Mbed CLI 2:Install Mbed CLI 2。
- 从命令行导入示例:
mbed-tools import mbed-os-example-lorawan
。 - 切换到项目导入的目录。
Mbed CLI 1(适用于 Mbed OS 6.5 之前的版本)
- 安装 Mbed CLI 1:Install Mbed CLI 1。
- 从命令行导入示例:
mbed import mbed-os-example-lorawan
。 - 切换到项目导入的目录。
2. 配置和选择无线电
对于 Mbed-OS 支持的 LoRa 模块,引脚设置已在 mbed_app.json
文件的 target-overrides
字段中提供。如需了解支持的模块详情,请参考 模块支持 部分。
3. 添加网络凭证
打开应用根目录下的 mbed_app.json
文件,添加网络凭证:
OTAA
添加 Device EUI
、Application EUI
和 Application Key
,示例如下:
json
"lora.device-eui": "{ YOUR_DEVICE_EUI }",
"lora.application-eui": "{ YOUR_APPLICATION_EUI }",
"lora.application-key": "{ YOUR_APPLICATION_KEY }"
ABP
修改 mbed_app.json
以启用 ABP,关闭 OTAA,示例如下:
json
"lora.over-the-air-activation": false,
此外,还需提供 Application Session Key
、Network Session Key
和 Device Address
,示例如下:
json
"lora.appskey": "{ YOUR_APPLICATION_SESSION_KEY }",
"lora.nwkskey": "{ YOUR_NETWORK_SESSION_KEY }",
"lora.device-address": " YOUR_DEVICE_ADDRESS_IN_HEX "
4. 配置应用
选择 PHY
可在编译时选择特定的 PHY 层,默认使用 EU 868 MHz
PHY,示例如下:
json
"phy": {
"help": "LoRa PHY region. 0 = EU868 (default), 1 = AS923, 2 = AU915, 3 = CN470, 4 = CN779, 5 = EU433, 6 = IN865, 7 = KR920, 8 = US915, 9 = US915_HYBRID",
"value": "0"
},
占空比控制
默认启用占空比,如需关闭,可在 mbed_app.json
中添加以下内容:
json
"target_overrides": {
"*": {
"lora.duty-cycle-on": false
}
}
5. 构建和运行
- 用 USB 线连接目标设备的 USB 端口和主机计算机。
- 运行以下命令构建示例项目并将程序烧录到微控制器闪存中:
Mbed CLI 2
bash
$ mbed-tools compile -m <TARGET> -t <TOOLCHAIN> --flash --sterm --baudrate 115200
Mbed CLI 1
bash
$ mbed compile -m <TARGET> -t <TOOLCHAIN> --flash --sterm --baudrate 115200
编译可能需要几分钟时间。编译后的二进制文件位于:
- Mbed CLI 2 - ./cmake_build/<TARGET>/develop/<TOOLCHAIN>/mbed-os-example-lorawan.bin
- Mbed CLI 1 - ./BUILD/<TARGET>/<TOOLCHAIN>/mbed-os-example-lorawan.bin
也可手动将二进制文件复制到通过 USB 挂载在主机上的目标设备,而不使用 --flash
选项。还可单独打开串口终端,而不使用 --sterm --baudrate 115200
选项,命令如下:
Mbed CLI 2
bash
$ mbed-tools sterm --baudrate 115200
Mbed CLI 1
bash
$ mbed sterm --baudrate 115200
6. 预期输出
串口终端应显示类似以下的输出: ``` Mbed LoRaWANStack initialized
CONFIRMED message retries : 3
Adaptive data rate (ADR) - Enabled
Connection - In Progress ...
Connection - Successful
Dummy Sensor Value = 2.1
25 bytes scheduled for transmission
Message Sent to Network Server ```
7. [可选] 添加跟踪库
如需启用 Mbed 跟踪,可在 mbed_app.json
中添加以下字段:
json
"target_overrides": {
"*": {
"mbed-trace.enable": true
}
}
8. [可选] 内存优化
使用 Arm CC 编译器
代替 GCC
可减少 3K 的 RAM。还可在 mbed_app.json
的 config
部分添加以下内容来减小应用程序堆栈大小:
json
"main_stack_size": {
"value": 2048
}
如需进一步优化内存,可参考 Reducing memory usage by tuning RTOS con。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】