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