隨著物聯網的發(fā)展并在現場部署了更多的邊緣設備,無疑將在這些設備中很大一部分電池操作。電池操作的無線邊緣節(jié)點很方便且具有成本效益,因為它們不需要訪問電氣基礎設施,并且可以輕松部署。電池操作的設備的潛在問題是,當開發(fā)人員在槍支下構建設備并在門外時,電池壽命是他們腦海中的最后一件事。開發(fā)人員在整個開發(fā)周期中可以做幾件事,以確保他們能夠正確管理設備的能耗。
首先,當開發(fā)人員設計自己的硬件時,他們需要將硬件分解為子系統(tǒng),并提供添加當前的分流電阻器以測量每個子系統(tǒng)的當前消耗的能力。開發(fā)人員應考慮將當前的分流電阻添加到電路和子系統(tǒng)中,例如:
· 微控制器
· 無線控制器
· 傳感器陣列
· 電源輸入和輸出
· 以及任何可能吸引大電流的特定子系統(tǒng)
能夠監(jiān)視這些系統(tǒng)中的電流將使開發(fā)人員能夠確定能源在哪里消耗,并設計方法以最大程度地減少消費。這些目前的分流器的好處是,在生產中,它們可以被零歐姆電阻替換,或者可以將其在數字轉換的機上微控制器的類似物中連接到它們,以便可以遠程監(jiān)控能源消耗。
接下來,開發(fā)人員僅根據他們?yōu)榍度胧娇刂破骶帉懙能浖鴮δ茉聪倪M行大量控制。微控制器不僅可以管理自己的能源消耗,還可以管理無線控制器和其他機上電路。例如,具有ARM Cortex-M處理器的開發(fā)人員可以將其系統(tǒng)置于低功率模式,并等待中斷以喚醒系統(tǒng)。實施這種行為的代碼就像編寫幾行代碼一樣簡單:
while(true){_wfi();}
從字面上看,這意味著“等待中斷”,并使系統(tǒng)處于低功率狀態(tài)。該中斷可能來自無線控制器,告訴微控制器有數據要處理,或者可以從系統(tǒng)中的任何其他事件中都可以被認為很重要以喚醒系統(tǒng)。不要忘記,應該構建電池供電的設備,以便將活動驅動,否則將大部分時間睡覺等待發(fā)生事件。
可以幫助管理能源消耗的另一種最喜歡的方法是在ARM Cortex-M處理器的出口功能上使用睡眠。這實質上告訴處理器,要跳過中斷時和結束時發(fā)生的上下文開關,因為預計相同的中斷會再次發(fā)射。這可以從軟件執(zhí)行中刮掉數十個時鐘循環(huán),這些循環(huán)可以在數周和幾個月的時間內顯著加起來。通常通過在系統(tǒng)控制塊中啟用睡眠式功能來啟用此功能:如下:
SCB-> SCR = SCB | 0x2U; while(true){_wfi();}
現在,這些最后兩種技術是可以在軟件中完成的簡單事情,以幫助最大程度地減少微控制器的能耗。盡管在物聯網設備中管理能源消耗的真正秘訣在于,您必須測量能耗并將其與正在執(zhí)行的代碼相關聯。沒有進行測量,就無法理解中斷是否過于發(fā)射。意識到特定功能是否執(zhí)行比預期的更長;或確定系統(tǒng)中的能量在哪里。一旦執(zhí)行了測量,開發(fā)人員就可以智能地挖掘并確定系統(tǒng)的最佳優(yōu)化,然后可以導致精心調整和高效的無線物聯網節(jié)點。
在無線物聯網設備中優(yōu)化和管理能源消耗通常是開發(fā)人員將產品推出門之前的最后一件事。在某些情況下,上市,然后進行調整和更新更為重要。盡管如此,如果開發(fā)人員沒有考慮問題并確保可以輕松更新系統(tǒng)或監(jiān)視其現場行為,那么管理能源消耗將很困難。我們已經研究了一些簡單的想法,可以使您今天開始,這至少可以確保您有一些基本的起點來管理自己的系統(tǒng)的能耗。