littlebot
Published on 2025-04-07 / 0 Visits
0

【源码】基于MbedOS框架的LoRaWAN应用示例

项目简介

本项目是一个基于 Mbed-OS LoRaWAN 协议 API 的示例应用程序。Mbed-OS LoRaWAN 堆栈实现符合 LoRaWAN v1.0.2 规范,可与任何网络服务器配合使用,前提是拥有该网络服务器的正确凭证。

项目的主要特性和功能

  1. 多硬件支持:支持多种具备 Arduino 外形的 Mbed 开发板,搭配 SX126X、SX1276、SX1272 等 LoRa 模块,同时支持特定的 Mbed 启用 LoRa MCU 和 LoRa 模块。
  2. 灵活的网络连接方式:支持 OTAA(Over-the-air-activation)和 ABP(Activation-By-Personalization)两种连接方式。
  3. 多区域 PHY 支持:提供 10 种不同国家特定的 LoRaPHY 类实现,可在编译时选择特定的 PHY 层。
  4. 支持占空比控制:默认启用占空比,符合 LoRaWAN v1.0.2 规范,也可根据需求关闭。
  5. 可配置性:通过 Mbed OS 配置系统,可对应用进行多项配置,如网络凭证、PHY 层选择、占空比等。
  6. 可选功能:支持添加跟踪库以启用 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 EUIApplication EUIApplication 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 KeyNetwork Session KeyDevice 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.jsonconfig 部分添加以下内容来减小应用程序堆栈大小: json "main_stack_size": { "value": 2048 }

如需进一步优化内存,可参考 Reducing memory usage by tuning RTOS con

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】