在需要低成本、遠(yuǎn)距離、低功耗無線連接的遠(yuǎn)距離檢測應(yīng)用中,LoRa 技術(shù)比藍(lán)牙和 Wi-Fi 等可供選擇的技術(shù)更受青睞。盡管如此,開發(fā)人員仍在努力解決射頻設(shè)計存在的細(xì)微差別,以便在不影響典型物聯(lián)網(wǎng)系統(tǒng)可用的有限功率預(yù)算的情況下,有效、快速地實現(xiàn) LoRa 設(shè)計,最大限度提高檢測范圍和數(shù)據(jù)速率。
為了加快基于 LoRa 的設(shè)計,芯片供應(yīng)商開發(fā)了完整的系統(tǒng)級封裝 (SiP) 模塊及相關(guān)的 LoRaWAN 軟件堆棧,可作為遠(yuǎn)距離連接的近乎直接替代的解決方案。
本文首先會簡要討論 LoRa 方法,然后介紹合適的硬件和軟件解決方案,最后說明設(shè)計人員如何使用這些解決方案來快速啟動和運行設(shè)計。
遠(yuǎn)距離物聯(lián)網(wǎng)網(wǎng)絡(luò)
LoRa(遠(yuǎn)距離的英文 long-range 的縮寫)定義了一種超高效、低成本、低功耗的專有擴頻無線電。由于 LoRa 能夠支持電池供電的傳感器和其他低功耗應(yīng)用,因此特別適合工作距離大于 Wi-Fi 或藍(lán)牙范圍的物聯(lián)網(wǎng)應(yīng)用?;?LoRa 的設(shè)計只需一個小型電池就能運行多年,同時還能為延伸數(shù)公里的較大型網(wǎng)絡(luò)提供安全可靠的連接。
LoRaWAN 是一個位于 LoRa 無線電接口頂部的介質(zhì)訪問控制 (MAC) 層,用于定義網(wǎng)絡(luò)的運行方式并設(shè)置數(shù)據(jù)速率(通常高達(dá) 50 Kb/s)(參見 LoRaWAN 第 1 部分:如何讓物聯(lián)網(wǎng)實現(xiàn) 15 公里的無線連接范圍和 10 年的電池壽命)。LoRaWAN 廣域網(wǎng)架構(gòu)采用星型網(wǎng)絡(luò)拓?fù)?,使用網(wǎng)關(guān)來中繼多個終端設(shè)備(如物聯(lián)網(wǎng)傳感器和主機服務(wù)器)之間的消息(圖 1)。LoRa 無線電可以單獨使用,帶有一個 LoRaWAN 替代 MAC 層,但該接口將不兼容 LoRaWAN 規(guī)范。
圖 1:LoRaWAN 規(guī)范規(guī)定了終端設(shè)備與網(wǎng)絡(luò)服務(wù)器之間經(jīng)過身份驗證的加密通信,使用網(wǎng)關(guān)與終端設(shè)備建立遠(yuǎn)距離連接,以及與云中或?qū)S铆h(huán)境中的網(wǎng)絡(luò)主機建立廣域連接。(圖片來源:LoRa 聯(lián)盟)
在此架構(gòu)中,終端設(shè)備和主機服務(wù)器通過網(wǎng)關(guān)設(shè)備進(jìn)行通信,而網(wǎng)關(guān)設(shè)備可配置為僅當(dāng)做通信橋。為了與主機服務(wù)器通信,網(wǎng)關(guān)使用傳統(tǒng)的連接方式,如 Wi-Fi、以太網(wǎng)或蜂窩網(wǎng)絡(luò)。為了與終端設(shè)備通信,網(wǎng)關(guān)依靠 Semtech 專有的 LoRa 物理 (PHY) 層能力,使用千兆赫 (GHz) 以下的頻帶實現(xiàn)可靠的遠(yuǎn)距離連接。兩種情況下,LoRaWAN 均通過使用網(wǎng)絡(luò)會話或應(yīng)用會話密鑰以 AES 加密方式保護端到端通信,這些密鑰可在生產(chǎn)或調(diào)試期間生成,或通過無線 (OTA) 激活方式生成。
在 LoRaWAN 網(wǎng)絡(luò)中,所有與終端設(shè)備的通信都是雙向通信,不過,LoRaWAN 協(xié)議規(guī)范規(guī)定了三種不同的終端設(shè)備類別,使開發(fā)人員基本上能夠在功耗與響應(yīng)延遲之間取得平衡。A 類終端設(shè)備只能在每次傳輸之后的兩個短下行鏈路接收窗口期間接收數(shù)據(jù)。因為能夠限制接收器的活動周期,所以 A 類設(shè)備非常適合功率受限的設(shè)備,如物聯(lián)網(wǎng)傳感器。B 類設(shè)備在 A 類設(shè)備基礎(chǔ)上增加了更多接收窗口。因此,此類設(shè)備適合需要以更短的延遲響應(yīng)主機請求的物聯(lián)網(wǎng)驅(qū)動裝置,甚至不惜以增加接收器功耗為代價。最后,C 類設(shè)備提供幾乎連續(xù)的開放接收窗口,非常適合在 LoRaWAN 網(wǎng)關(guān)中使用。
在尋求優(yōu)化 LoRaWAN 的安全性、功率縮減和遠(yuǎn)距離連接時,開發(fā)人員可能會發(fā)現(xiàn),他們的工作進(jìn)度因配置硬件平臺和軟件系統(tǒng)所需的無數(shù)細(xì)節(jié)而被延誤。不過,Microchip Technology 的硬件和軟件簡化了 LoRaWAN 網(wǎng)絡(luò)的實現(xiàn),為部署 LoRa 技術(shù)提供了近乎直接替代的解決方案。
低功耗集成解決方案
Microchip 的 SAM R34/35 系統(tǒng)級封裝 (SiP) 模塊集成了低功耗 Arm? Cortex?-M0+、Semtech SX1276 收發(fā)器、閃存、RAM、專用低功耗 (LP) RAM 以及傳感器系統(tǒng)通常需要的各種外設(shè)(圖 2)。除了定制的可配置邏輯模塊外,SAM 34/35 還包括多通道 12 位模數(shù)轉(zhuǎn)換器 (ADC)、模擬比較器和多個串行通信模塊,這些模塊經(jīng)過編程,以支持 I2C、SPI 和其他串行接口。SAM R34 SiP 和 R35 SiP 唯一不同的地方在于:R35 未配備 R34 所附帶的 USB 接口。除此之外,這些 6 x 6 毫米 (mm) SAM R34/35 模塊均相同,只是采用了三種不同的存儲器配置:
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)級封裝模塊集成了低功耗 Arm Cortex-M0 + 處理器內(nèi)核、Semtech SX1276 收發(fā)器、存儲器和多個外設(shè)(SAM R35 不包括 USB)。(圖片來源:Microchip Technology)
這些 SiP 模塊專為低功耗應(yīng)用而設(shè)計,提供多個軟件可選選項,以降低功能活動較少期間的功耗。開發(fā)人員可將 SAM R34/R35 設(shè)置為以兩個不同的性能級別運行。在較高性能級別 (PL2),器件內(nèi)核在最高電壓下工作,從而使器件能夠以高時鐘速度運行。在較低性能級別 (PL0),內(nèi)核的電壓水平可隨工作頻率的下降而調(diào)整,從而降低整體功耗。
在給定的性能級別,開發(fā)人員還可通過編程方式,將器件切換到以不同的功耗模式運行。在空閑模式下,模塊僅消耗 4.5 毫安 (mA) 電流,短期峰值需求在 Tx 時達(dá)到 28 mA,在 Rx 時達(dá)到 10.3 mA。通過將模塊置于待機模式,開發(fā)人員可將模塊的功耗降至 1.4 微安 (μA),這樣會關(guān)閉除專門設(shè)定為保持活動狀態(tài)外的所有時鐘和功能。此外,這些模塊還支持 SleepWalking 操作,此模式允許選定的外設(shè)獨立于處理器響應(yīng)事件,執(zhí)行外設(shè)操作,并且僅在需要時喚醒處理器。為降低長時間非活動期間的功耗,開發(fā)人員可將模塊置于休眠模式,在該模式下僅消耗 790 納安 (nA) 電流。Microchip 建議不要將器件置于關(guān)閉狀態(tài),因為內(nèi)部 SPI 總線上的高阻抗會引起亞穩(wěn)態(tài)情況的發(fā)生。
設(shè)計實現(xiàn)
得益于模塊的集成功能,硬件接口要求非常簡單。除了 SAM R34/R35 SiP 的去耦電容外,開發(fā)人員只需添加一個信號開關(guān)(例如 Skyworks Solutions 的 SKY13373)以及完成發(fā)射和接收射頻信號路徑所需的無源元件便可(圖 3)。
圖 3:使用 Microchip Technology 的 R34/R35 模塊時,除射頻信號路徑所需的元件以及相關(guān)的射頻開關(guān)(如 Skyworks Solutions 的 SKY13373)外,開發(fā)人員只需額外添加少量元件即可。(圖片來源:Microchip Technology)
通過使用 Microchip Technology 的 DM320111 SAM R34 Xplained Pro 評估套件,開發(fā)人員甚至可以避免這些簡單的額外硬件要求。開發(fā)人員可使用該套件即刻評估 SAM R34,或擴展硬件參考設(shè)計來定制自己的器件。
Microchip 還可通過結(jié)合使用 SAM R34/R35 模塊固件和隨 Atmel Studio 7 集成開發(fā)環(huán)境提供的示例軟件,幫助加快軟件開發(fā)。SAM R34/R35 SiP 基于集成的 Semtech SX1276 LoRa 收發(fā)器和 PHY 而構(gòu)建,通過其內(nèi)置的 Microchip LoRaWAN 堆棧 (MLS)(圖 4)提供了一個認(rèn)證型 LoRaWAN 實現(xiàn)。
圖 4:Microchip LoRaWAN 堆棧 (MLS) 通過一組應(yīng)用編程接口 (API),為開發(fā)人員提供用于 MAC、PHY、永久存儲、電源管理等方面的固件服務(wù)。(圖片來源:Microchip Technology)
MLS 固件基于 Microchip 針對設(shè)備驅(qū)動程序和核心模塊的高級軟件框架 (ASF),為每項服務(wù)都提供了應(yīng)用編程接口 (API),具體包括:
LoRaWAN MAC,提供 LoRaWAN MAC 層功能
LoRaWAN 無線電層 (TAL),提供對 LoRa 收發(fā)器的訪問
永久數(shù)據(jù)服務(wù)器 (PDS),為閃存提供服務(wù)層,從而減少檢索 MLS 參數(shù)的訪問時間和訪問周期
電源管理器模塊 (PMM),在非活動期間將處理器置于休眠模式
硬件抽象層 (HAL),保護代碼不受硬件特性的影響
定時器庫
調(diào)度程序,將處理器資源分配給不同的模塊
使用 API 函數(shù),開發(fā)人員可以對模塊功能的各個方面進(jìn)行精細(xì)控制。例如,要將模塊置于休眠模式,開發(fā)人員可調(diào)用 PMM API 函數(shù) PMM_Sleep()。該函數(shù)采用一種包含休眠時間、休眠模式(空閑、待機、休眠或關(guān)閉)以及完成回調(diào)函數(shù)的休眠請求結(jié)構(gòu)(清單 1)。在應(yīng)用中,開發(fā)人員通常在每個任務(wù)之后調(diào)用此函數(shù)。例如,Microchip 的 ASF 發(fā)行版包括一個終端設(shè)備應(yīng)用示例,該示例在無限循環(huán)中使用此方法(清單 2)。每個 MLS API 都提供了與 MLS 固件服務(wù)相似的入口點。
/* 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 高級軟件框架 (ASF) 發(fā)行版提供的示例軟件展示了關(guān)鍵設(shè)計模式和數(shù)據(jù)結(jié)構(gòu),例如此例中將 Microchip Technology SAM R34/R35 模塊置于休眠狀態(tài)所用的結(jié)構(gòu)。(代碼來源: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 示例軟件說明了開發(fā)人員如何在非活動期間使用若干 API 調(diào)用,將 Microchip Technology 的 SAM R34/R35 模塊恢復(fù)至低功耗狀態(tài)。(代碼來源:Microchip Technology)
通過 Studio 7 或單獨通過 ASF 發(fā)行版提供的示例代碼,全面展示了在實現(xiàn) LoRaWAN 應(yīng)用時使用 MLS API 調(diào)用的情況。終端設(shè)備實現(xiàn)的演示說明了重要的高級操作,包括通過從 PDS 永久數(shù)據(jù)服務(wù)器服務(wù)檢索以前存儲的 MLS 屬性和參數(shù)來對設(shè)備進(jìn)行初始化(清單 3)。另一示例軟件提供了一套測試?yán)?,允許開發(fā)人員檢查詳細(xì)的 LoRaWAN 性能特征,以及用于提取這些值的 MLS API 調(diào)用。通過將 Microchip 的示例軟件與 SAM R34 Xplained Pro 評估套件結(jié)合起來使用,開發(fā)人員可以快速獲得總體 LoRaWAN 操作經(jīng)驗,特別是 Microchip 固件服務(wù)經(jīng)驗。
/*********************************************************************//** \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è)計模式,包括從 PDS 永久數(shù)據(jù)服務(wù)器還原可用的 LoRaWAN 屬性 (PDS_IsRestorable())。(代碼來源:Microchip Technology)
總結(jié)
LoRa 技術(shù)特別適合解決電池供電的物聯(lián)網(wǎng)傳感器對遠(yuǎn)距離連接的新興需求。但在過去,開發(fā)人員需要從事大量的硬件和軟件子系統(tǒng)開發(fā)。Microchip 的 SAM R34/R35 SiP 模塊憑借集成的硬件和固件,有效地消除了與早期方法相關(guān)的許多詳細(xì)設(shè)計要求。通過將 Microchip 基于 LoRaWAN 的硬件與軟件結(jié)合起來使用,開發(fā)人員可快速實現(xiàn)電池供電的物聯(lián)網(wǎng)設(shè)備和低功耗網(wǎng)關(guān),從而能夠與云中或?qū)S铆h(huán)境中的主機服務(wù)器完成安全的遠(yuǎn)距離通信。
評論
查看更多