在需要低成本、遠(yuǎn)距離、低功耗無(wú)線連接的遠(yuǎn)距離檢測(cè)應(yīng)用中,LoRa 技術(shù)比藍(lán)牙和 Wi-Fi 等可供選擇的技術(shù)更受青睞。盡管如此,開(kāi)發(fā)人員仍在努力解決射頻設(shè)計(jì)存在的細(xì)微差別,以便在不影響典型物聯(lián)網(wǎng)系統(tǒng)可用的有限功率預(yù)算的情況下,有效、快速地實(shí)現(xiàn) LoRa 設(shè)計(jì),最大限度提高檢測(cè)范圍和數(shù)據(jù)速率。
為了加快基于 LoRa 的設(shè)計(jì),芯片供應(yīng)商開(kāi)發(fā)了完整的系統(tǒng)級(jí)封裝 (SiP) 模塊及相關(guān)的 LoRaWAN 軟件堆棧,可作為遠(yuǎn)距離連接的近乎直接替代的解決方案。
本文首先會(huì)簡(jiǎn)要討論 LoRa 方法,然后介紹合適的硬件和軟件解決方案,最后說(shuō)明設(shè)計(jì)人員如何使用這些解決方案來(lái)快速啟動(dòng)和運(yùn)行設(shè)計(jì)。
遠(yuǎn)距離物聯(lián)網(wǎng)網(wǎng)絡(luò)
LoRa(遠(yuǎn)距離的英文 long-range 的縮寫(xiě))定義了一種超高效、低成本、低功耗的專有擴(kuò)頻無(wú)線電。由于 LoRa 能夠支持電池供電的傳感器和其他低功耗應(yīng)用,因此特別適合工作距離大于 Wi-Fi 或藍(lán)牙范圍的物聯(lián)網(wǎng)應(yīng)用。基于 LoRa 的設(shè)計(jì)只需一個(gè)小型電池就能運(yùn)行多年,同時(shí)還能為延伸數(shù)公里的較大型網(wǎng)絡(luò)提供安全可靠的連接。
LoRaWAN 是一個(gè)位于 LoRa 無(wú)線電接口頂部的介質(zhì)訪問(wèn)控制 (MAC) 層,用于定義網(wǎng)絡(luò)的運(yùn)行方式并設(shè)置數(shù)據(jù)速率(通常高達(dá) 50 Kb/s)(參見(jiàn) LoRaWAN 第 1 部分:如何讓物聯(lián)網(wǎng)實(shí)現(xiàn) 15 公里的無(wú)線連接范圍和 10 年的電池壽命)。LoRaWAN 廣域網(wǎng)架構(gòu)采用星型網(wǎng)絡(luò)拓?fù)洌褂镁W(wǎng)關(guān)來(lái)中繼多個(gè)終端設(shè)備(如物聯(lián)網(wǎng)傳感器和主機(jī)服務(wù)器)之間的消息(圖 1)。LoRa 無(wú)線電可以單獨(dú)使用,帶有一個(gè) LoRaWAN 替代 MAC 層,但該接口將不兼容 LoRaWAN 規(guī)范。

圖 1:LoRaWAN 規(guī)范規(guī)定了終端設(shè)備與網(wǎng)絡(luò)服務(wù)器之間經(jīng)過(guò)身份驗(yàn)證的加密通信,使用網(wǎng)關(guān)與終端設(shè)備建立遠(yuǎn)距離連接,以及與云中或?qū)S铆h(huán)境中的網(wǎng)絡(luò)主機(jī)建立廣域連接。(圖片來(lái)源:LoRa 聯(lián)盟)
在此架構(gòu)中,終端設(shè)備和主機(jī)服務(wù)器通過(guò)網(wǎng)關(guān)設(shè)備進(jìn)行通信,而網(wǎng)關(guān)設(shè)備可配置為僅當(dāng)做通信橋。為了與主機(jī)服務(wù)器通信,網(wǎng)關(guān)使用傳統(tǒng)的連接方式,如 Wi-Fi、以太網(wǎng)或蜂窩網(wǎng)絡(luò)。為了與終端設(shè)備通信,網(wǎng)關(guān)依靠 Semtech 專有的 LoRa 物理 (PHY) 層能力,使用千兆赫 (GHz) 以下的頻帶實(shí)現(xiàn)可靠的遠(yuǎn)距離連接。兩種情況下,LoRaWAN 均通過(guò)使用網(wǎng)絡(luò)會(huì)話或應(yīng)用會(huì)話密鑰以 AES 加密方式保護(hù)端到端通信,這些密鑰可在生產(chǎn)或調(diào)試期間生成,或通過(guò)無(wú)線 (OTA) 激活方式生成。
在 LoRaWAN 網(wǎng)絡(luò)中,所有與終端設(shè)備的通信都是雙向通信,不過(guò),LoRaWAN 協(xié)議規(guī)范規(guī)定了三種不同的終端設(shè)備類別,使開(kāi)發(fā)人員基本上能夠在功耗與響應(yīng)延遲之間取得平衡。A 類終端設(shè)備只能在每次傳輸之后的兩個(gè)短下行鏈路接收窗口期間接收數(shù)據(jù)。因?yàn)槟軌蛳拗?a target="_blank">接收器的活動(dòng)周期,所以 A 類設(shè)備非常適合功率受限的設(shè)備,如物聯(lián)網(wǎng)傳感器。B 類設(shè)備在 A 類設(shè)備基礎(chǔ)上增加了更多接收窗口。因此,此類設(shè)備適合需要以更短的延遲響應(yīng)主機(jī)請(qǐng)求的物聯(lián)網(wǎng)驅(qū)動(dòng)裝置,甚至不惜以增加接收器功耗為代價(jià)。最后,C 類設(shè)備提供幾乎連續(xù)的開(kāi)放接收窗口,非常適合在 LoRaWAN 網(wǎng)關(guān)中使用。
在尋求優(yōu)化 LoRaWAN 的安全性、功率縮減和遠(yuǎn)距離連接時(shí),開(kāi)發(fā)人員可能會(huì)發(fā)現(xiàn),他們的工作進(jìn)度因配置硬件平臺(tái)和軟件系統(tǒng)所需的無(wú)數(shù)細(xì)節(jié)而被延誤。不過(guò),Microchip Technology 的硬件和軟件簡(jiǎn)化了 LoRaWAN 網(wǎng)絡(luò)的實(shí)現(xiàn),為部署 LoRa 技術(shù)提供了近乎直接替代的解決方案。
低功耗集成解決方案
Microchip 的 SAM R34/35 系統(tǒng)級(jí)封裝 (SiP) 模塊集成了低功耗 Arm? Cortex?-M0+、Semtech SX1276 收發(fā)器、閃存、RAM、專用低功耗 (LP) RAM 以及傳感器系統(tǒng)通常需要的各種外設(shè)(圖 2)。除了定制的可配置邏輯模塊外,SAM 34/35 還包括多通道 12 位模數(shù)轉(zhuǎn)換器 (ADC)、模擬比較器和多個(gè)串行通信模塊,這些模塊經(jīng)過(guò)編程,以支持 I2C、SPI 和其他串行接口。SAM R34 SiP 和 R35 SiP 唯一不同的地方在于:R35 未配備 R34 所附帶的 USB 接口。除此之外,這些 6 x 6 毫米 (mm) SAM R34/35 模塊均相同,只是采用了三種不同的存儲(chǔ)器配置:
ATSAMR3xJ16BT-I/7JX,配備 64 KB 閃存、8 Kbit SRAM 和 4 KB 低功耗 SRAM
ATSAMR3xJ17BT-I/7JX,配備 128 KB 閃存、16 Kbit SRAM 和 8 KB 低功耗 SRAM
ATSAMR3xJ18BT-I/7JX,配備 256 KB 閃存、32 Kbit SRAM 和 4 KB 低功耗 SRAM

圖 2:Microchip Technology 的 SAM R34/R35 系統(tǒng)級(jí)封裝模塊集成了低功耗 Arm Cortex-M0 + 處理器內(nèi)核、Semtech SX1276 收發(fā)器、存儲(chǔ)器和多個(gè)外設(shè)(SAM R35 不包括 USB)。(圖片來(lái)源:Microchip Technology)
這些 SiP 模塊專為低功耗應(yīng)用而設(shè)計(jì),提供多個(gè)軟件可選選項(xiàng),以降低功能活動(dòng)較少期間的功耗。開(kāi)發(fā)人員可將 SAM R34/R35 設(shè)置為以兩個(gè)不同的性能級(jí)別運(yùn)行。在較高性能級(jí)別 (PL2),器件內(nèi)核在最高電壓下工作,從而使器件能夠以高時(shí)鐘速度運(yùn)行。在較低性能級(jí)別 (PL0),內(nèi)核的電壓水平可隨工作頻率的下降而調(diào)整,從而降低整體功耗。
在給定的性能級(jí)別,開(kāi)發(fā)人員還可通過(guò)編程方式,將器件切換到以不同的功耗模式運(yùn)行。在空閑模式下,模塊僅消耗 4.5 毫安 (mA) 電流,短期峰值需求在 Tx 時(shí)達(dá)到 28 mA,在 Rx 時(shí)達(dá)到 10.3 mA。通過(guò)將模塊置于待機(jī)模式,開(kāi)發(fā)人員可將模塊的功耗降至 1.4 微安 (μA),這樣會(huì)關(guān)閉除專門設(shè)定為保持活動(dòng)狀態(tài)外的所有時(shí)鐘和功能。此外,這些模塊還支持 SleepWalking 操作,此模式允許選定的外設(shè)獨(dú)立于處理器響應(yīng)事件,執(zhí)行外設(shè)操作,并且僅在需要時(shí)喚醒處理器。為降低長(zhǎng)時(shí)間非活動(dòng)期間的功耗,開(kāi)發(fā)人員可將模塊置于休眠模式,在該模式下僅消耗 790 納安 (nA) 電流。Microchip 建議不要將器件置于關(guān)閉狀態(tài),因?yàn)閮?nèi)部 SPI 總線上的高阻抗會(huì)引起亞穩(wěn)態(tài)情況的發(fā)生。
設(shè)計(jì)實(shí)現(xiàn)
得益于模塊的集成功能,硬件接口要求非常簡(jiǎn)單。除了 SAM R34/R35 SiP 的去耦電容外,開(kāi)發(fā)人員只需添加一個(gè)信號(hào)開(kāi)關(guān)(例如 Skyworks Solutions 的 SKY13373)以及完成發(fā)射和接收射頻信號(hào)路徑所需的無(wú)源元件便可(圖 3)。

圖 3:使用 Microchip Technology 的 R34/R35 模塊時(shí),除射頻信號(hào)路徑所需的元件以及相關(guān)的射頻開(kāi)關(guān)(如 Skyworks Solutions 的 SKY13373)外,開(kāi)發(fā)人員只需額外添加少量元件即可。(圖片來(lái)源:Microchip Technology)
通過(guò)使用 Microchip Technology 的 DM320111 SAM R34 Xplained Pro 評(píng)估套件,開(kāi)發(fā)人員甚至可以避免這些簡(jiǎn)單的額外硬件要求。開(kāi)發(fā)人員可使用該套件即刻評(píng)估 SAM R34,或擴(kuò)展硬件參考設(shè)計(jì)來(lái)定制自己的器件。
Microchip 還可通過(guò)結(jié)合使用 SAM R34/R35 模塊固件和隨 Atmel Studio 7 集成開(kāi)發(fā)環(huán)境提供的示例軟件,幫助加快軟件開(kāi)發(fā)。SAM R34/R35 SiP 基于集成的 Semtech SX1276 LoRa 收發(fā)器和 PHY 而構(gòu)建,通過(guò)其內(nèi)置的 Microchip LoRaWAN 堆棧 (MLS)(圖 4)提供了一個(gè)認(rèn)證型 LoRaWAN 實(shí)現(xiàn)。

圖 4:Microchip LoRaWAN 堆棧 (MLS) 通過(guò)一組應(yīng)用編程接口 (API),為開(kāi)發(fā)人員提供用于 MAC、PHY、永久存儲(chǔ)、電源管理等方面的固件服務(wù)。(圖片來(lái)源:Microchip Technology)
MLS 固件基于 Microchip 針對(duì)設(shè)備驅(qū)動(dòng)程序和核心模塊的高級(jí)軟件框架 (ASF),為每項(xiàng)服務(wù)都提供了應(yīng)用編程接口 (API),具體包括:
LoRaWAN MAC,提供 LoRaWAN MAC 層功能
LoRaWAN 無(wú)線電層 (TAL),提供對(duì) LoRa 收發(fā)器的訪問(wèn)
永久數(shù)據(jù)服務(wù)器 (PDS),為閃存提供服務(wù)層,從而減少檢索 MLS 參數(shù)的訪問(wèn)時(shí)間和訪問(wèn)周期
電源管理器模塊 (PMM),在非活動(dòng)期間將處理器置于休眠模式
硬件抽象層 (HAL),保護(hù)代碼不受硬件特性的影響
定時(shí)器庫(kù)
調(diào)度程序,將處理器資源分配給不同的模塊
使用 API 函數(shù),開(kāi)發(fā)人員可以對(duì)模塊功能的各個(gè)方面進(jìn)行精細(xì)控制。例如,要將模塊置于休眠模式,開(kāi)發(fā)人員可調(diào)用 PMM API 函數(shù) PMM_Sleep()。該函數(shù)采用一種包含休眠時(shí)間、休眠模式(空閑、待機(jī)、休眠或關(guān)閉)以及完成回調(diào)函數(shù)的休眠請(qǐng)求結(jié)構(gòu)(清單 1)。在應(yīng)用中,開(kāi)發(fā)人員通常在每個(gè)任務(wù)之后調(diào)用此函數(shù)。例如,Microchip 的 ASF 發(fā)行版包括一個(gè)終端設(shè)備應(yīng)用示例,該示例在無(wú)限循環(huán)中使用此方法(清單 2)。每個(gè) MLS API 都提供了與 MLS 固件服務(wù)相似的入口點(diǎn)。
/* Structure of sleep request */ typedef struct _PMM_SleepReq_t { /* Sleep time requested to PMM.Unit is milliseconds */ uint32_t sleepTimeMs;
/* Sleep Modes */ HAL_SleepMode_t sleep_mode; /* Callback from sleep request */ void (*pmmWakeupCallback)(uint32_t sleptDuration);
} PMM_Sleep
清單 1:Microchip 高級(jí)軟件框架 (ASF) 發(fā)行版提供的示例軟件展示了關(guān)鍵設(shè)計(jì)模式和數(shù)據(jù)結(jié)構(gòu),例如此例中將 Microchip Technology SAM R34/R35 模塊置于休眠狀態(tài)所用的結(jié)構(gòu)。(代碼來(lái)源:Microchip Technology)
while (1) { serial_data_handler(); SYSTEM_RunTasks();
#ifdef CONF_PMM_ENABLE if (false == certAppEnabled)
{ if(bandSelected == true)
{ PMM_SleepReq_t sleepReq; /* Put the application to sleep */ sleepReq.sleepTimeMs = DEMO_CONF_DEFAULT_APP_SLEEP_TIME_MS;
sleepReq.pmmWakeupCallback = appWakeup; sleepReq.sleep_mode = CONF_PMM_SLEEPMODE_WHEN_IDLE;
if (CONF_PMM_SLEEPMODE_WHEN_IDLE == SLEEP_MODE_STANDBY)
{ deviceResetsForWakeup = false; } if (true == LORAWAN_ReadyToSleep(deviceResetsForWakeup))
{ app_resources_uninit(); if (PMM_SLEEP_REQ_DENIED == PMM_Sleep(&sleepReq))
{ HAL_Radio_resources_init(); sio2host_init();
/*printf(“\r\nsleep_not_ok\r\n”);*/ } } } } #endif } 。。。
清單 2:Microchip 示例軟件說(shuō)明了開(kāi)發(fā)人員如何在非活動(dòng)期間使用若干 API 調(diào)用,將 Microchip Technology 的 SAM R34/R35 模塊恢復(fù)至低功耗狀態(tài)。(代碼來(lái)源:Microchip Technology)
通過(guò) Studio 7 或單獨(dú)通過(guò) ASF 發(fā)行版提供的示例代碼,全面展示了在實(shí)現(xiàn) LoRaWAN 應(yīng)用時(shí)使用 MLS API 調(diào)用的情況。終端設(shè)備實(shí)現(xiàn)的演示說(shuō)明了重要的高級(jí)操作,包括通過(guò)從 PDS 永久數(shù)據(jù)服務(wù)器服務(wù)檢索以前存儲(chǔ)的 MLS 屬性和參數(shù)來(lái)對(duì)設(shè)備進(jìn)行初始化(清單 3)。另一示例軟件提供了一套測(cè)試?yán)蹋试S開(kāi)發(fā)人員檢查詳細(xì)的 LoRaWAN 性能特征,以及用于提取這些值的 MLS API 調(diào)用。通過(guò)將 Microchip 的示例軟件與 SAM R34 Xplained Pro 評(píng)估套件結(jié)合起來(lái)使用,開(kāi)發(fā)人員可以快速獲得總體 LoRaWAN 操作經(jīng)驗(yàn),特別是 Microchip 固件服務(wù)經(jīng)驗(yàn)。
/*********************************************************************//** \brief Initialization the Demo application
*************************************************************************/ void mote_demo_init(void)
{ bool status = false; /* Initialize the resources */ resource_init();
/* Read DEV EUI from EDBG */ dev_eui_read(); startReceiving = false;
/* Initialize the LORAWAN Stack */ LORAWAN_Init(demo_appdata_callback,
demo_joindata_callback);
printf(“\n\n\r*******************************************************\n\r”);
printf(“\n\rMicrochip LoRaWAN Stack %s\r\n”,STACK_VER);
printf(“\r\nInit - Successful\r\n”); status = PDS_IsRestorable(); if(status)
{ static uint8_t prevBand = 0xFF; uint8_t prevChoice = 0xFF; PDS_RestoreAll();
LORAWAN_GetAttr(ISMBAND,NULL,&prevBand); for (uint32_t i = 0;
i 《 sizeof(bandTable) -1; i++)
{ if(bandTable[i] == prevBand) { prevChoice = i; break; } } memset(rxchar,0,sizeof(rxchar));
sio2host_rx(rxchar,10); printf (“Last configured Regional band %s\r\n”,bandStrings[prevChoice]);
printf(“Press any key to change band\r\n Continuing in %s in ”, bandStrings[prevChoice]);
SwTimerStart(demoTimerId,MS_TO_US(1000),SW_TIMEOUT_RELATIVE,(void *)demoTimerCb,NULL);
} else { appTaskState = DEMO_CERT_APP_STATE; appPostTask(DISPLAY_TASK_HANDLER); } }
清單 3:此代碼片段取自 Microchip 的終端設(shè)備示例應(yīng)用,展示了與初始化設(shè)備相關(guān)的基本設(shè)計(jì)模式,包括從 PDS 永久數(shù)據(jù)服務(wù)器還原可用的 LoRaWAN 屬性 (PDS_IsRestorable())。(代碼來(lái)源:Microchip Technology)
總結(jié)
LoRa 技術(shù)特別適合解決電池供電的物聯(lián)網(wǎng)傳感器對(duì)遠(yuǎn)距離連接的新興需求。但在過(guò)去,開(kāi)發(fā)人員需要從事大量的硬件和軟件子系統(tǒng)開(kāi)發(fā)。Microchip 的 SAM R34/R35 SiP 模塊憑借集成的硬件和固件,有效地消除了與早期方法相關(guān)的許多詳細(xì)設(shè)計(jì)要求。通過(guò)將 Microchip 基于 LoRaWAN 的硬件與軟件結(jié)合起來(lái)使用,開(kāi)發(fā)人員可快速實(shí)現(xiàn)電池供電的物聯(lián)網(wǎng)設(shè)備和低功耗網(wǎng)關(guān),從而能夠與云中或?qū)S铆h(huán)境中的主機(jī)服務(wù)器完成安全的遠(yuǎn)距離通信。
評(píng)論