丁振杰,李玉秋,趙昌友,劉玉梅
(亳州職業(yè)技術(shù)學(xué)院,安徽 亳州 236800)
隨著物聯(lián)網(wǎng)的發(fā)展,物聯(lián)網(wǎng)終端的需求越來越旺盛,在資源有限或者偏遠的應(yīng)用場景里,不可能給所有的物聯(lián)網(wǎng)終端設(shè)備拉線供電,導(dǎo)致很大部分終端需要電池供電。然而電池技術(shù)遲遲未有重大突破,電池容量有限,且頻繁更換電池勢必會增加大量的人力成本。因此,對于電池供電的應(yīng)用場景,能耗的高低直接影響產(chǎn)品的生存周期,低功耗工作方式就顯得尤為重要,尤其是針對環(huán)境相對惡劣的森林、沙漠地區(qū)等。物聯(lián)網(wǎng)設(shè)備功耗做得越低,產(chǎn)品的使用周期相應(yīng)延長,越能減少電池更換的頻次,從而節(jié)約了維護成本。
物聯(lián)網(wǎng)終端是物聯(lián)網(wǎng)的關(guān)鍵設(shè)備,一般由微控制單元(microcontroller unit, MCU)處理模塊、外圍感知接口、通信接口三部分組成[1-4]。MCU模塊對外圍感知器件采集的各種信號進行數(shù)據(jù)分析、校驗并將數(shù)據(jù)通過窄帶物聯(lián)網(wǎng)(narrow band internet of things,NB-IoT)通信模組傳輸?shù)轿锫?lián)網(wǎng)(云服務(wù)器),前端再從服務(wù)器取出相應(yīng)的傳感器數(shù)據(jù),以可視化頁面的形式呈現(xiàn)出來,系統(tǒng)框架圖見圖1。
圖1 系統(tǒng)框架圖
系統(tǒng)通過采用低功耗的MCU芯片,搭載多種低功耗傳感器,如溫濕度傳感器、紅外感應(yīng)器、RFID讀卡器等,以及低功耗NB-IoT通信模組,從而實現(xiàn)超低功耗。
處理器的功耗對于物聯(lián)網(wǎng)設(shè)備至關(guān)重要。系統(tǒng)采用的MCU是STM32L 071芯片,ARM Cortex-M0+內(nèi)核的32位微控制器,意法半導(dǎo)體的超低功耗系列,有非常優(yōu)秀的低功耗表現(xiàn)[5]。L0系列產(chǎn)品在待機模式下功耗僅為0.27 μA, 正常運行模式下功耗也僅為88 μA,有低功耗運行、睡眠、低功耗睡眠、停止、待機等多種低功耗模式;工作電壓1.65~3.6 V,時鐘頻率32 MHz。MCU模塊能完成對傳感器采集數(shù)據(jù)的處理、低功耗模式的設(shè)置等功能。
NB-IoT是物聯(lián)網(wǎng)絡(luò)的一個重要分支,具有部署成本低、待機時間長、功耗低等優(yōu)點[6]。NB-IoT只消耗大約180 kHz的帶寬,可部署于全球移動通信系統(tǒng)、通用移動通信系統(tǒng)或長期演進技術(shù)。NB-IoT主要從待機、數(shù)據(jù)傳輸、業(yè)務(wù)模型等方面控制功耗[7],是低功耗、遠距離無線通信的優(yōu)選技術(shù)。本模塊采用SIM7020,有標(biāo)準(zhǔn)的AT命令接口;電壓范圍2.1~3.6 V,典型值3.3 V;超低功耗,休眠模式下的耗流50 μA,PSM模式下僅有5 μA。
物聯(lián)網(wǎng)終端的感知部分由各種傳感器組成,傳感器與主控芯片STM32L相連,收集與周圍環(huán)境不同的信號(如溫度、濕度、光照等)發(fā)送與STM32L。本模塊測試選用SHTC3數(shù)字溫濕度傳感器,可以測量 0~100% 的相對濕度,-40℃~125℃ 的溫度,超高精確度(±2% 相對濕度,±0.2 ℃);電源電壓范圍寬1.62~3.6 V;每次測量均低于1 μJ的超低能耗預(yù)算,非常適用于由電池供電的移動或無線應(yīng)用,使設(shè)備的電池續(xù)航時間大大延長。
在MCU的低功耗模式中,待機模式最省電,進入待機模式后所有區(qū)域全部斷電,僅部分RTC區(qū)域未斷電,使喚醒源十分有限,而每次喚醒后相當(dāng)于系統(tǒng)復(fù)位。在停止(STOP)模式下,SRAM不斷電,從而保存了運行狀態(tài),無需再次重新啟動,喚醒源較多,這樣可以增加軟件設(shè)計靈活性。停止模式比較適合本項目,它可以在保持SRAM和寄存器內(nèi)容的同時實現(xiàn)微安量級的電流功耗。
停止模式下,內(nèi)核被停止,配置關(guān)閉除LSE、LSI以外的所有時鐘。低速時鐘可以為喚醒中斷源提供時鐘,為了進入停止模式,必須將SLEEP DEEP位置1,停止模式和待機模式都是由Cortex-M0+ 內(nèi)核提供的深度睡眠狀態(tài)實現(xiàn)的。不必要的GPIO管腳設(shè)置為模擬輸入,如果不進行配置,在外部連接器件時,器件的引腳可能會吸收電流,反而達不到低功耗的要求[8],此時STOP模式的電流很大。但IO引腳配置為模擬輸入時,施密特觸發(fā)器輸入被禁用,每個引腳的功耗為零,必須將每個端口的GPIOx_MODER寄存器保存,然后將每個引腳切換到模擬輸入模式。喚醒源定位RTC鬧鐘中斷、復(fù)位按鍵中斷、低功耗串口LPUART接收中斷,設(shè)備喚醒后,每個引腳都可以恢復(fù)到先前的模式。為了避免意外,保存和恢復(fù)的過程必須是原子操作,既不會被線程調(diào)度機制打斷,在執(zhí)行完畢之前也不會被任何其他任務(wù)或事件中斷。進入STOP模式的部分代碼如下:
/* Enable ultra low power mode */
LL_PWR_EnableUltraLowPower();
/** Set the regulator to low power before setting MODE_STOP.
* If the regulator remains in "main mode",
* it consumes more power without providing any additional feature. */
LL_PWR_SetRegulModeLP(LL_PWR_REGU_LPMODES_LOW_POWER);
/* Set STOP mode when CPU enters deepsleep */
LL_PWR_SetPowerMode(LL_PWR_MODE_STOP);
/* Set SLEEPDEEP bit of Cortex System Control Register */
LL_LPM_EnableDeepSleep();
/* Request Wait For Interrupt */
__WFI();
為達到最佳的低功耗狀態(tài),MCU采集完一次數(shù)據(jù)并立即通過MQTT發(fā)送至MQTT Broker,服務(wù)器再從Broker訂閱數(shù)據(jù),完成一次數(shù)據(jù)的上傳,過程結(jié)束,MCU進入休眠狀態(tài)。一次發(fā)送時間約1~2 s,發(fā)送頻次越低,電池使用壽命便越長,從而完成綠色應(yīng)用的使命。
NB-IoT 網(wǎng)絡(luò)利用eDRX技術(shù)極大降低了終端功耗。DRX為傳統(tǒng)技術(shù)模式,終端時刻在線,例如我們的手機,只要開機,就可以時刻被呼叫。eDRX是DRX模式的擴展,將網(wǎng)絡(luò)先開一會,再停一會(休眠),開的時候可以收到數(shù)據(jù),停的時候收不到數(shù)據(jù)。低功耗模式(power saving mode, PSM)可以理解為把eDRX模式中的休眠時間拉得更長,從幾小時到幾天時間,功耗大幅下降。eDRX模式相對于PSM來說,休眠時仍保持設(shè)備TCP連接在線,喚醒以后不需要重新注冊。三種模式中,PSM的模式可進行長時間的睡眠最為節(jié)電,但是尋呼時間較長,不適應(yīng)于頻繁發(fā)送數(shù)據(jù)的應(yīng)用場景,并且不能馬上收到核心網(wǎng)的下行數(shù)據(jù),主要用在遠程抄表等對下行數(shù)據(jù)實時性要求不高的產(chǎn)品。由于NB模組進入PSM模式后不保留TCP注冊,本次設(shè)計采用MQTT協(xié)議,它基于TCP/IP協(xié)議,PSM模式下,MQTT失去注冊,不適用于現(xiàn)在的工作場景。eDRX模式會兼顧上下行通信,出于性能和能耗的權(quán)衡,選用eDRX模式比較適合物聯(lián)網(wǎng)方式。
NB模塊工作方式(見圖2),實際是由基站分配網(wǎng)絡(luò)資源,基站有時候為了權(quán)衡,eDRX不一定能尋呼上;由于產(chǎn)品由電池供電,如果尋呼不上,系統(tǒng)則一直處于尋呼狀態(tài);而NB通信模組工作是極其耗電的,很容易消耗完電池的電量,所以要權(quán)衡尋呼網(wǎng)絡(luò)和節(jié)約能耗兩種情況,既節(jié)約能耗又不會造成網(wǎng)絡(luò)狀態(tài)良好的情況下設(shè)備處于離線狀態(tài)。因此,設(shè)計MCU在查詢網(wǎng)絡(luò)時,若無法獲取網(wǎng)絡(luò),則會延長自己的喚醒時間并進入休眠狀態(tài);到達自己設(shè)置的閾值喚醒時間,便不再增加喚醒時間。若在這個過程中,獲取到網(wǎng)絡(luò),便清零之前設(shè)置的喚醒時間,回歸正常喚醒時間。
圖2 系統(tǒng)流程圖
服務(wù)器采用GO語言編寫,GO語言由于其高效并發(fā)的特性特別適用于分布式服務(wù)器開發(fā),服務(wù)器程序運行于阿里云服務(wù)器上,可支持公網(wǎng)訪問。由于工作場景要求數(shù)據(jù)發(fā)送頻率不高,一次發(fā)送約1~2 s,大部分時間都是待機狀態(tài)。三種工作模式待機測試數(shù)據(jù)為:MCU STANGDLBY+NB PSM模式耗流318 uA;MCU STOP+NB PSM模式耗流374 uA;MCU STOP+NB eDRX模式耗流1.7 mA。傳感器溫濕度測試部分?jǐn)?shù)據(jù)(見圖3)。
圖3 溫濕度測試結(jié)果
通過硬件選擇低功耗的控制芯片、通信模組及無線傳感器,采用軟件控制MCU、通信模組低功耗的工作方式,實現(xiàn)物聯(lián)網(wǎng)終端的低功耗運行。未來,隨著低功耗的MCU技術(shù)、電源技術(shù)、傳感器技術(shù)等進一步發(fā)展,物聯(lián)網(wǎng)終端的能耗將會持續(xù)不斷地降低,在能源節(jié)耗方面有著重要的意義。