嵌入式低功耗WiFi裝置保活功耗分析

2023-07-12 21:00:37

(一)嵌入式低功耗裝置介紹

在物聯網(IoT)領域,裝置可以使用乙太網和無線網進行網路連線。

  • 乙太網: 網路穩定,頻寬高,延遲低,但是乙太網需要拉網布線,裝置安裝鄰活便利效能差。
  • 無線網路:安裝位置靈活,便利,但是網路訊號容易受到干擾,頻寬和速度有限。

常見的低功耗WiFi裝置有:可視門鈴,可視貓眼,智慧門鎖等裝置。

他們的特點是:裝置依賴鋰電池供電,電池容量一般較低,對裝置功耗非常敏感。

正常工作的時候,裝置是處於休眠保活的低功耗狀態,它可以通過兩種方式喚醒裝置:

  • 通過IoT平臺遠端網路喚醒裝置,IoT平臺退出後,裝置又進入到休眠保活狀態
  • 裝置自身事件觸發裝置喚醒(PIR,防拆,按鍵等觸發),事件處理完後,裝置重新進入休眠

通過上面介紹,我們可以知道該類裝置主要的功耗消耗在於兩個方面:

  • 裝置最長時間是處於休眠保活狀態,裝置休眠保活功耗佔比高
  • 裝置事件喚醒正常工作時,一般需要進行影象等處理,消耗的功耗大

最理想的功耗控制方案是:裝置休眠保活時的功耗非常低,裝置事件觸發正常工作的頻率非常低,每次喚醒工作的時間非常短。

我們可以看下面360可視門鈴對功耗和續航的描述:

(二)低功耗保活技術分析

低功耗保活技術,實際上也就是低功耗裝置在休眠的時候,裝置端與IoT平臺保持一個網路上的連線,這樣做有兩個目的:

  • IoT平臺可以知道裝置的線上狀態,並且可以遠端網路喚醒裝置
  • 裝置端的WiFi模組是處於低功耗休眠狀態,如果有事件喚醒,可以很快就建立起新的網路連線。

為了降低裝置端的功耗,裝置端一般是設定60秒或是更加長的時間週期往IoT平臺傳送一個心跳包,以保持裝置線上狀態。

如果IoT平臺超時沒有收到裝置端的心跳,會判定裝置以及離線。

正常保活功耗圖如下:

(三)實際問題分析

對於上面介紹的這類通過WiFi進行休眠保活的裝置,在實際應用中會出現各種問題,比如:

  1. 同一個裝置,連線不同的路由器,其休眠保活的功耗會存在很大的差異
  2. 同一裝置,連線同一路由器,在不同環境的不同時間,功耗也會存在差異
  3. 同時生產的同一批裝置,在國內沒問題,在國外使用就會出現只能用幾天的問題

為什麼會出現這些差異?其根本原因是什麼?又可以通過什麼方式進行規避呢?

1.同一裝置,連線不同路由器功耗會有差異

這裡主要是跟路由器的beacon有關係,beacon是路由器定期廣播的一種管理幀,它攜帶了關鍵的網路資訊,比如SSID,Rates,DSPS等資訊。下面是使用抓包工具抓得一個beacon幀資訊

路由器一般是100ms廣播一次,同樣的,裝置端的WiFi模組也會以相同的週期去接受路由器的beacon,這裡有兩個目的:

  • 接收路由器的beacon包,以檢查是否有IoT網路喚醒請求
  • 通過路由器beacon包進行時間同步

那為什麼裝置連線不同的路由器,裝置端休眠保活的功耗會不一樣呢?
主要原因是:路由器的beacon包規律性存在差異

  • 路由器本身的定時器不準,100ms的定時存在偏差,導致裝置端WiFi長時間的等待接收beacon包
  • 路由器負載高的時候,可能優先進行資料傳輸,導致beacon包延後傳送,這個時候裝置端的WiFi處於等待狀態,會比休眠的時候功耗高

2.同一裝置,連線同一個路由器功耗也會有差異

同一個裝置,連線到同一個路由器功耗會存在差異,主要原因有:

  • 路由器同通道有無線干擾
  • 路由器與裝置距離遠
  • 路由器與裝置中間有障礙物阻擋

距離與障礙物遮擋,這類問題還是比較容易被發現,但無線干擾這個就比較難定位,無線干擾主要是指同頻段的電磁波干擾。

因為有干擾源的存在,路由器發出的beacon廣播包,裝置端可能會接收不到,所以裝置端會超時接收,導致功耗變大。

如何檢視環境的干擾情況呢?

  • 使用頻譜儀搜尋環境訊號
  • 使用WiFi魔盒檢視WiFi干擾情況(只能看出大概情況)
  • 使用無線抓包工具,檢視丟包情況

下圖是使用抓包工具去抓路由器 beacon 廣播包的情況,FAST_EA06 是路由器名

通過分析抓取到的beacon包,可以知道功耗偏高問題,是當前環境干擾引起的,還是裝置端自身的問題。

3.其它問題

其它的一些問題,比如:同時生產的一批裝置,在國內沒問題,在國外使用就會出現只能用幾天的問題,或者是連線到某些路由器時就會出現電量消耗很快的情況

這類問題的原因可能會比較多,主要是跟路由器的設定有關係,比如路由器的租期時間長短,路由器ARP快取表更新策略等

這裡分析一下路由器ARP快取表更新引起的功耗變大問題

路由器和主機都會維護一個ARP快取表,目的是為了解析IP地址與MAC地址之間的關係。

如果裝置剛連線上裝置,路由器ARP快取表上沒有該裝置IP和MAC地址資訊,那麼路由器會廣播,「誰擁有這個IP地址對應的MAC地址?」,該IP的裝置收到該廣播後,正常應該將自己的MAC地址告知路由器。

如果裝置端沒有應答該路由器的ARP請求,或者是說該應答機制有問題,那麼,有些路由器有可能會斷開該IP的所有連線,導致的結果就是裝置端與IoT的保活連線被斷開

如果保活鏈路被斷開了,那麼裝置端需要被喚醒,重新建立保活連線,這樣一來,裝置端的功耗就會變得很高。

如果一直沒有ARP應答,那麼裝置可能間隔一小段時間,就會被喚醒去重新建立網路。最終的結果就是裝置使用幾天就沒電了。

(四)如何優化保活功耗

要優化嵌入式WiFi保活功耗,主要的方式有:

  • 選擇干擾較少的無線頻段
  • 避免物理障礙以及縮短路由器與裝置間的距離
  • 增強路由器與裝置端的訊號強度
  • 控制路由器的負載,使其beacon包按規律穩定傳送

功耗控制是一個綜合性問題,與裝置結構,硬體,軟體都有關係。在電池技術沒有突破性進展的前提下,要想做到超時長續航,在產品功能上勢必需要做一些取捨。

---------------------------End---------------------------
如需獲取更多內容
請關注 liwen01 公眾號