0755-23080616

基于LR1120与腾讯云物联网平台实现地理定位(三):终端节点固件与应用程序部署

2025-09-17 11:50

分享到:

部署终端节点的软件是一个分为两个阶段的精确过程。必须严格按照顺序执行,因为上层应用程序的运行依赖于底层收发器固件的正确版本。这种分层架构是LoRa Edge™平台设计的核心,将射频物理层和协议栈的复杂性与用户应用逻辑解耦。

 

 第一阶段:更新LR1120收发器固件

LR1120是通过SPI接口进行控制的,内置了微处理器的协处理器。它运行着自己的固件,负责处理底层的射频控制、信号扫描和加密等任务。主控MCU(STM32)上的LoRa Basics™ Modem应用程序正是通过SPI接口,调用一套预定义的API与LR1120进行交互。如果LBM应用所期望的API版本与LR1120内部固件所提供的API版本不匹配,将导致通信失败或产生无法预期的行为。因此,在烧录主应用程序之前,必须先确保LR1120的固件是最新且兼容的版本。

  • 目标固件:我们需要为LR1120烧写版本为lr1120_trx_0x0201的收发器固件。

 

  • 固件获取:预编译好的固件二进制文件(.bin)可以在Lora-net/radio_firmware_images仓库中找到。具体文件为lr1120_trx_0x0201.bin。

 

  • 烧录流程:
    1. 编译更新工具:在Cygwin终端中,进入先前克隆的SWTL001目录。执行make命令编译固件更新工具。
      Bash
      cd /path/to/your/SWTL001
      make

      编译成功后,会在build目录下生成一个名为lr11xx-updater-tool.bin的文件。
    2. 准备更新器:将Lora-net/radio_firmware_images仓库中下载的lr1120_trx_0x0201.bin文件,重命名为image.bin,并将其复制到SWTL001项目的根目录下。更新工具默认会加载名为image.bin的固件文件。
    3. 烧录更新工具到Nucleo板:将第一步中编译生成的lr11xx-updater-tool.bin文件拖拽或复制到这个U盘中。ST-LINK会自动将此程序烧录到STM32 MCU中,并重启。此时,Nucleo板就变成了一个专门用于更新LR1120固件的工具。
      将固件更新工具的.bin文件拖拽到 U盘中进行烧录
      (将固件更新工具的.bin文件拖拽到 U盘中进行烧录)
    4. 执行更新并监控:打开一个串口终端工具(如PuTTY, Tera Term),连接到Nucleo板对应的虚拟串口。注意,此处的波特率非常高,必须设置为921600 bps。连接后,按下Nucleo板上的黑色复位按钮。您将在串口终端中看到固件更新过程的详细日志,包括擦除、写入和验证。当看到更新成功的提示信息后,表示LR1120的内部固件已成功更新。 LR1120固件成功更新至0x0201版本的过程

      (串口终端日志,显示LR1120固件成功更新至0x0201版本的过程。)

 

第二阶段:配置与编译地理定位应用程序

在收发器固件更新完毕后,我们现在可以配置并编译运行在主控MCU上的地理定位应用程序了。所有相关的配置都集中在SWL2001-master\lbm_applications\3_geolocation_on_lora_edge\main_geolocation/example_options.h文件中。

 

核心参数配置:设备身份与区域设置

LoRaWAN网络通过一组唯一的标识符来识别和验证每一个设备。这些参数的正确性是设备能否成功入网的先决条件,必须与腾讯云平台上的配置严格一致。

 

设备身份与区域设置代码

 

  • USER_LORAWAN_DEVICE_EUI: 设备的全球唯一标识符(Device EUI),一个64位的十六进制数,类似于网络设备的MAC地址,必须保证全球唯一。
  • USER_LORAWAN_JOIN_EUI: 应用的全球唯一标识符(Join EUI),它标识了处理入网请求的Join Server。
  • USER_LORAWAN_APP_KEY: 这是一个128位的AES密钥,是设备安全性的核心,用于在入网(OTAA)过程中生成会话密钥。
  • MODEM_EXAMPLE_REGION: LoRaWAN区域参数。此处设置为SMTC_MODEM_REGION_CN_470_RP_1_0,以符合中国470MHz频段的法规要求。

 

 通信信道配置:为测试设置单信道模式

在开发和测试阶段,为了快速验证设备与网关之间的基本通信,将设备配置为仅在网关监听的单个信道上发送数据是一种高效的策略。

 

// 为了测试方便,可以调整为单信道模式
#define HYBRID_CN470_MONO_CHANNEL
#if defined( HYBRID_CN470_MONO_CHANNEL )
uint32_t freq_tx_cn470_mono_channel_mhz = 471100000;
#endif

 

通过定义HYBRID_CN470_MONO_CHANNEL宏,并设置freq_tx_cn470_mono_channel_mhz变量,可以将节点的发射频率固定在471.1MHz。这极大地简化了初始的网络连接调试,因为您只需确保网关也正在监听此频率即可。

 

注意: 在最终的生产环境中,应注释掉此宏定义,以恢复所有默认信道,从而利用LoRaWAN的跳频特性,增强网络的鲁棒性和容量。

 

射频天线开关配置

LR1120芯片需要通过外部射频(RF)开关来选择正确的天线路径(如Sub-GHz、GNSS等)。协议栈必须被告知如何控制这个开关。

 

射频天线开关配置代码

 

这段代码定义了一个lr11xx_system_rfswitch_cfg_t类型的结构体,用于精确配置RF开关在不同工作模式(如待机、接收、发射、GNSS扫描)下的状态。随后,通过调用lr11xx_system_set_dio_as_rf_switch函数将此配置应用到系统中。这个配置是高度硬件相关的,必须与您所使用的模块(如NiceRF LoRa1120)的内部电路设计相匹配,否则将导致通信失败。

 

编译并烧录最终应用程序

完成所有配置修改后,即可编译并烧录最终的应用程序。

  1. 编译:在Cygwin终端中,确保当前路径为SWL2001/lbm_applications/3_geolocation_on_lora_edge。执行以下命令进行编译:
    Bash
    make full_lr1120

    (在Cygwin终端中执行'make full_lr1120'命令来编译地理定位应用程序)
    该命令会调用ARM交叉编译器,将源代码编译链接成一个可执行的二进制文件app_lr1120.bin,并存放于build子目录中。编译成功后在build目录中生成的app_lr1120.bin文件
    (编译成功后在build目录中生成的app_lr1120.bin文件。)
  2. 烧录:再次将Nucleo开发板连接到电脑,找到NODE_L476RG U盘。将刚刚生成的app_lr1120.bin文件拖拽或复制到该U盘中。ST-LINK会自动完成烧录并重启设备。
  3. 验证:打开串口终端工具,这次将波特率设置为115200 bps。按下Nucleo板的复位按钮,您应该能看到应用程序启动的日志信息。这些信息会显示设备的DevEUI、AppEUI以及尝试加入LoRaWAN网络的日志。如果看到“JOINING”或类似的打印,说明设备端软件已正常工作。
    显示调制解调器初始化和区域参数信息

    (应用程序启动后的串口日志,显示调制解调器初始化和区域参数信息。)

 

基于LR1120与腾讯云物联网平台实现地理定位系列

基于LR1120与腾讯云物联网平台实现地理定位(一):系统架构与硬件准备

基于LR1120与腾讯云物联网平台实现地理定位(二):开发环境与源代码设置

基于LR1120与腾讯云物联网平台实现地理定位(三):终端节点固件与应用程序部署

基于LR1120与腾讯云物联网平台实现地理定位(四):腾讯云物联网平台配置

基于LR1120与腾讯云物联网平台实现地理定位(五):端到端数据验证与应用