本示例演示如何使用 STM32L476RG 驱动 Ra-11 模组配置 Class A 模式入网 LoRaWAN 网络的应用。入网成功以后通过按键上报。
| 序号 | 硬件 | 说明 | 购买链接 |
|---|---|---|---|
| 1 | MCU 开发板 | STM32L476RG(推荐 NUCLEO-L476RG) | — |
| 2 | Ra-11 模组 | 被驱动的 LoRa Modem-E 模组 | 淘宝链接 |
| 3 | TTL 模块 | 安信可 FT232TTL,用于串口 LOG | 淘宝链接 |
| 4 | 按键 | 用户按键(或使用 NUCLEO 板载蓝色按键 PC13) | — |
| 5 | 杜邦线 / 电源 | 3.3 V 供电,共地 | — |
引脚定义见 Inc/boards/board-config.h。
| MCU(STM32L476RG) | 信号 | Ra-11 模组 | 说明 |
|---|---|---|---|
| PA5 | SCLK | SCK / SCLK | SPI 时钟 |
| PA6 | MISO | MISO | SPI 主机入 / 从机出 |
| PA7 | MOSI | MOSI | SPI 主机出 / 从机入 |
| PA8 | NSS | NSS / CS | SPI 片选(低有效) |
| PA0 | RESET | RESET / NRESET | 模组复位 |
| PB3 | BUSY | BUSY | SPI 忙指示 |
| PB4 | EVENT | EVENT / DIO | 事件中断(入网、下行等) |
| 3V3 | VCC | VCC / 3V3 | 3.3 V 供电 |
| GND | GND | GND | 共地 |
若模组另有天线座,请接好天线后再上电发射。
串口用于打印 LOG(波特率 921600,8N1),MCU 侧引脚为 UART_TX=PA2、UART_RX=PA3。
| MCU(STM32L476RG) | 信号 | FT232TTL 模块 | 说明 |
|---|---|---|---|
| PA2 | UART_TX | RXD | MCU 发送 → TTL 接收 |
| PA3 | UART_RX | TXD | TTL 发送 → MCU 接收 |
| GND | GND | GND | 共地 |
| — | — | USB | 接 PC,用于串口工具查看 LOG |
TX/RX 交叉连接;不要把两端的 TX 对 TX。
应用中按键定义为 EXTI_BUTTON = PC_13(下降沿触发)。
| MCU(STM32L476RG) | 信号 | 按键 | 说明 |
|---|---|---|---|
| PC13 | EXTI_BUTTON | 按键一端 | 按下后立即在端口 102 发上行 |
| GND | GND | 按键另一端 | 低电平有效 |
本工程 SDK 用于驱动 Ra-11 模组完成 LoRaWAN 入网,源码仓库地址:
获取代码示例:
git clone https://github.com/Ai-Thinker-Open/Ra-11_modem-e.git
cd Ra-11_modem-e
仓库说明与更多示例介绍也可参阅上述 GitHub 页面。
需安装 ARM GCC 工具链(工程基于 GNU Arm Embedded Toolchain)。在 gcc 目录下编译:
cd gcc
make clean
make APP=lorawan
指定区域示例:
make clean
make APP=lorawan EXTRAFLAGS='-DLORAWAN_REGION_USED=MODEM_E_LORAWAN_REGION_AS923_GRP1'
说明:
lorawan.bin)位于 gcc/build 目录。certification-otaa、certification-abp、class_b、multicast、fuota。JOINED。设备启动以后会自动向 LoRaWAN 网络服务器发送 Join-Request。
收到 Join-Accept 后,将周期性发送上行。
按下 PC13 按键会立即在端口 102 发送一帧上行。
若干常量定义在 main_lorawan.c、common_app_configuration.h 或 lorawan_commissioning.h 顶部。可通过设置这些值来配置应用的 LoRaWAN 参数。
| 常量 | 说明 |
|---|---|
PERIODICAL_UPLINK_DELAY_S |
周期性上行闹钟延时(秒)。 |
EXTI_BUTTON |
按键对应的引脚名。 |
LORAWAN_APP_DATA_MAX_SIZE |
用户应用数据缓冲区大小。 |
LORAWAN_REGION_USED |
LoRaWAN 法规区域。 |
LORAWAN_REGION_USED 支持的取值:
MODEM_E_LORAWAN_REGION_AS923_GRP1MODEM_E_LORAWAN_REGION_AS923_GRP2MODEM_E_LORAWAN_REGION_AS923_GRP3MODEM_E_LORAWAN_REGION_AS923_GRP4MODEM_E_LORAWAN_REGION_AU915MODEM_E_LORAWAN_REGION_CN470MODEM_E_LORAWAN_REGION_EU868(默认)MODEM_E_LORAWAN_REGION_IN865MODEM_E_LORAWAN_REGION_KR920MODEM_E_LORAWAN_REGION_RU864MODEM_E_LORAWAN_REGION_US915MODEM_E_LORAWAN_REGION_WW2G4LR1121 预置了 ChipEUI/DevEUI 和 JoinEUI。若 lorawan_commissioning.h 中的 USE_LR11XX_CREDENTIALS 为 true,应用将使用这些标识。
也可自行配置:将 USE_LR11XX_CREDENTIALS 设为 false,并在 Inc/apps/lorawan_commissioning/lorawan_commissioning.h 中修改 LORAWAN_DEVICE_EUI、LORAWAN_JOIN_EUI、LORAWAN_NWK_KEY 和 LORAWAN_APP_KEY。
完成静态配置后,应用无需人工干预即可运行。
信息会输出到串口控制台,起始内容包括 DevEUI、AppEUI/JoinEUI 和 PIN,可用于在 LoRa Cloud Device Join 服务中注册设备。
应用基于事件接收实现了一个相对简单的状态机:
按下蓝色按键可立即在端口 102 发送一帧上行。