基于LR1120與騰訊云物聯(lián)網(wǎng)平臺(tái)實(shí)現(xiàn)地理定位(三):終端節(jié)點(diǎn)固件與應(yīng)用程序部署
部署終端節(jié)點(diǎn)的軟件是一個(gè)分為兩個(gè)階段的精確過(guò)程。必須嚴(yán)格按照順序執(zhí)行,因?yàn)樯蠈討?yīng)用程序的運(yùn)行依賴于底層收發(fā)器固件的正確版本。這種分層架構(gòu)是LoRa Edge™平臺(tái)設(shè)計(jì)的核心,將射頻物理層和協(xié)議棧的復(fù)雜性與用戶應(yīng)用邏輯解耦。
第一階段:更新LR1120收發(fā)器固件
LR1120是通過(guò)SPI接口進(jìn)行控制的,內(nèi)置了微處理器的協(xié)處理器。它運(yùn)行著自己的固件,負(fù)責(zé)處理底層的射頻控制、信號(hào)掃描和加密等任務(wù)。主控MCU(STM32)上的LoRa Basics™ Modem應(yīng)用程序正是通過(guò)SPI接口,調(diào)用一套預(yù)定義的API與LR1120進(jìn)行交互。如果LBM應(yīng)用所期望的API版本與LR1120內(nèi)部固件所提供的API版本不匹配,將導(dǎo)致通信失敗或產(chǎn)生無(wú)法預(yù)期的行為。因此,在燒錄主應(yīng)用程序之前,必須先確保LR1120的固件是最新且兼容的版本。
- 目標(biāo)固件:我們需要為L(zhǎng)R1120燒寫(xiě)版本為lr1120_trx_0x0201的收發(fā)器固件。
- 固件獲取:預(yù)編譯好的固件二進(jìn)制文件(.bin)可以在Lora-net/radio_firmware_images倉(cāng)庫(kù)中找到。具體文件為lr1120_trx_0x0201.bin。
- 燒錄流程:
- 編譯更新工具:在Cygwin終端中,進(jìn)入先前克隆的SWTL001目錄。執(zhí)行make命令編譯固件更新工具。
Bash
cd /path/to/your/SWTL001
make
編譯成功后,會(huì)在build目錄下生成一個(gè)名為lr11xx-updater-tool.bin的文件。 - 準(zhǔn)備更新器:將Lora-net/radio_firmware_images倉(cāng)庫(kù)中下載的lr1120_trx_0x0201.bin文件,重命名為image.bin,并將其復(fù)制到SWTL001項(xiàng)目的根目錄下。更新工具默認(rèn)會(huì)加載名為image.bin的固件文件。
- 燒錄更新工具到Nucleo板:將第一步中編譯生成的lr11xx-updater-tool.bin文件拖拽或復(fù)制到這個(gè)U盤(pán)中。ST-LINK會(huì)自動(dòng)將此程序燒錄到STM32 MCU中,并重啟。此時(shí),Nucleo板就變成了一個(gè)專門(mén)用于更新LR1120固件的工具。

(將固件更新工具的.bin文件拖拽到 U盤(pán)中進(jìn)行燒錄) - 執(zhí)行更新并監(jiān)控:打開(kāi)一個(gè)串口終端工具(如PuTTY, Tera Term),連接到Nucleo板對(duì)應(yīng)的虛擬串口。注意,此處的波特率非常高,必須設(shè)置為921600 bps。連接后,按下Nucleo板上的黑色復(fù)位按鈕。您將在串口終端中看到固件更新過(guò)程的詳細(xì)日志,包括擦除、寫(xiě)入和驗(yàn)證。當(dāng)看到更新成功的提示信息后,表示LR1120的內(nèi)部固件已成功更新。

(串口終端日志,顯示LR1120固件成功更新至0x0201版本的過(guò)程。)
- 編譯更新工具:在Cygwin終端中,進(jìn)入先前克隆的SWTL001目錄。執(zhí)行make命令編譯固件更新工具。
第二階段:配置與編譯地理定位應(yīng)用程序
在收發(fā)器固件更新完畢后,我們現(xiàn)在可以配置并編譯運(yùn)行在主控MCU上的地理定位應(yīng)用程序了。所有相關(guān)的配置都集中在SWL2001-master\lbm_applications\3_geolocation_on_lora_edge\main_geolocation/example_options.h文件中。
核心參數(shù)配置:設(shè)備身份與區(qū)域設(shè)置
LoRaWAN網(wǎng)絡(luò)通過(guò)一組唯一的標(biāo)識(shí)符來(lái)識(shí)別和驗(yàn)證每一個(gè)設(shè)備。這些參數(shù)的正確性是設(shè)備能否成功入網(wǎng)的先決條件,必須與騰訊云平臺(tái)上的配置嚴(yán)格一致。
微信截圖_20250917113901.jpg)
- USER_LORAWAN_DEVICE_EUI: 設(shè)備的全球唯一標(biāo)識(shí)符(Device EUI),一個(gè)64位的十六進(jìn)制數(shù),類似于網(wǎng)絡(luò)設(shè)備的MAC地址,必須保證全球唯一。
- USER_LORAWAN_JOIN_EUI: 應(yīng)用的全球唯一標(biāo)識(shí)符(Join EUI),它標(biāo)識(shí)了處理入網(wǎng)請(qǐng)求的Join Server。
- USER_LORAWAN_APP_KEY: 這是一個(gè)128位的AES密鑰,是設(shè)備安全性的核心,用于在入網(wǎng)(OTAA)過(guò)程中生成會(huì)話密鑰。
- MODEM_EXAMPLE_REGION: LoRaWAN區(qū)域參數(shù)。此處設(shè)置為SMTC_MODEM_REGION_CN_470_RP_1_0,以符合中國(guó)470MHz頻段的法規(guī)要求。
通信信道配置:為測(cè)試設(shè)置單信道模式
在開(kāi)發(fā)和測(cè)試階段,為了快速驗(yàn)證設(shè)備與網(wǎng)關(guān)之間的基本通信,將設(shè)備配置為僅在網(wǎng)關(guān)監(jiān)聽(tīng)的單個(gè)信道上發(fā)送數(shù)據(jù)是一種高效的策略。
// 為了測(cè)試方便,可以調(diào)整為單信道模式
#define HYBRID_CN470_MONO_CHANNEL
#if defined( HYBRID_CN470_MONO_CHANNEL )
uint32_t freq_tx_cn470_mono_channel_mhz = 471100000;
#endif
通過(guò)定義HYBRID_CN470_MONO_CHANNEL宏,并設(shè)置freq_tx_cn470_mono_channel_mhz變量,可以將節(jié)點(diǎn)的發(fā)射頻率固定在471.1MHz。這極大地簡(jiǎn)化了初始的網(wǎng)絡(luò)連接調(diào)試,因?yàn)槟恍璐_保網(wǎng)關(guān)也正在監(jiān)聽(tīng)此頻率即可。
注意: 在最終的生產(chǎn)環(huán)境中,應(yīng)注釋掉此宏定義,以恢復(fù)所有默認(rèn)信道,從而利用LoRaWAN的跳頻特性,增強(qiáng)網(wǎng)絡(luò)的魯棒性和容量。
射頻天線開(kāi)關(guān)配置
LR1120芯片需要通過(guò)外部射頻(RF)開(kāi)關(guān)來(lái)選擇正確的天線路徑(如Sub-GHz、GNSS等)。協(xié)議棧必須被告知如何控制這個(gè)開(kāi)關(guān)。
微信截圖_20250917113937.jpg)
這段代碼定義了一個(gè)lr11xx_system_rfswitch_cfg_t類型的結(jié)構(gòu)體,用于精確配置RF開(kāi)關(guān)在不同工作模式(如待機(jī)、接收、發(fā)射、GNSS掃描)下的狀態(tài)。隨后,通過(guò)調(diào)用lr11xx_system_set_dio_as_rf_switch函數(shù)將此配置應(yīng)用到系統(tǒng)中。這個(gè)配置是高度硬件相關(guān)的,必須與您所使用的模塊(如NiceRF LoRa1120)的內(nèi)部電路設(shè)計(jì)相匹配,否則將導(dǎo)致通信失敗。
編譯并燒錄最終應(yīng)用程序
完成所有配置修改后,即可編譯并燒錄最終的應(yīng)用程序。
- 編譯:在Cygwin終端中,確保當(dāng)前路徑為SWL2001/lbm_applications/3_geolocation_on_lora_edge。執(zhí)行以下命令進(jìn)行編譯:
Bash
make full_lr1120
(在Cygwin終端中執(zhí)行'make full_lr1120'命令來(lái)編譯地理定位應(yīng)用程序)
該命令會(huì)調(diào)用ARM交叉編譯器,將源代碼編譯鏈接成一個(gè)可執(zhí)行的二進(jìn)制文件app_lr1120.bin,并存放于build子目錄中。
(編譯成功后在build目錄中生成的app_lr1120.bin文件。) - 燒錄:再次將Nucleo開(kāi)發(fā)板連接到電腦,找到NODE_L476RG U盤(pán)。將剛剛生成的app_lr1120.bin文件拖拽或復(fù)制到該U盤(pán)中。ST-LINK會(huì)自動(dòng)完成燒錄并重啟設(shè)備。
- 驗(yàn)證:打開(kāi)串口終端工具,這次將波特率設(shè)置為115200 bps。按下Nucleo板的復(fù)位按鈕,您應(yīng)該能看到應(yīng)用程序啟動(dòng)的日志信息。這些信息會(huì)顯示設(shè)備的DevEUI、AppEUI以及嘗試加入LoRaWAN網(wǎng)絡(luò)的日志。如果看到“JOINING”或類似的打印,說(shuō)明設(shè)備端軟件已正常工作。

(應(yīng)用程序啟動(dòng)后的串口日志,顯示調(diào)制解調(diào)器初始化和區(qū)域參數(shù)信息。)
基于LR1120與騰訊云物聯(lián)網(wǎng)平臺(tái)實(shí)現(xiàn)地理定位系列
基于LR1120與騰訊云物聯(lián)網(wǎng)平臺(tái)實(shí)現(xiàn)地理定位(一):系統(tǒng)架構(gòu)與硬件準(zhǔn)備
基于LR1120與騰訊云物聯(lián)網(wǎng)平臺(tái)實(shí)現(xiàn)地理定位(二):開(kāi)發(fā)環(huán)境與源代碼設(shè)置
基于LR1120與騰訊云物聯(lián)網(wǎng)平臺(tái)實(shí)現(xiàn)地理定位(三):終端節(jié)點(diǎn)固件與應(yīng)用程序部署
基于LR1120與騰訊云物聯(lián)網(wǎng)平臺(tái)實(shí)現(xiàn)地理定位(四):騰訊云物聯(lián)網(wǎng)平臺(tái)配置
基于LR1120與騰訊云物聯(lián)網(wǎng)平臺(tái)實(shí)現(xiàn)地理定位(五):端到端數(shù)據(jù)驗(yàn)證與應(yīng)用