(一)嵌入式低功耗設(shè)備介紹
在物聯(lián)網(wǎng)(IoT)領(lǐng)域,設(shè)備可以使用以太網(wǎng)和無線網(wǎng)進行網(wǎng)絡(luò)連接。
以太網(wǎng): 網(wǎng)絡(luò)穩(wěn)定,帶寬高,延遲低,但是以太網(wǎng)需要拉網(wǎng)布線,設(shè)備安裝鄰活便利性能差。
無線網(wǎng)絡(luò):安裝位置靈活,便利,但是網(wǎng)絡(luò)信號容易受到干擾,帶寬和速度有限。
常見的低功耗WiFi設(shè)備有:可可視門鈴,可視貓眼,智能門鎖等設(shè)備。
他們的特點是:設(shè)備依賴鋰電池供電,電池容量一般較低,對設(shè)備功耗非常敏感。
正常工作的時候,設(shè)備是處于休眠?;畹牡凸臓顟B(tài),它可以通過兩種方式喚醒設(shè)備:
通過IoT平臺遠程網(wǎng)絡(luò)喚醒設(shè)備,IoT平臺退出后,設(shè)備又進入到休眠?;顮顟B(tài)
設(shè)備自身事件觸發(fā)設(shè)備喚醒(PIR,防拆,按鍵等觸發(fā)),事件處理完后,設(shè)備重新進入休眠
通過上面介紹,我們可以知道該類設(shè)備主要的功耗消耗在于兩個方面:
設(shè)備最長時間是處于休眠保活狀態(tài),設(shè)備休眠?;罟恼急雀?/strong>
設(shè)備事件喚醒正常工作時,一般需要進行圖像等處理,消耗的功耗大
最理想的功耗控制方案是:設(shè)備休眠?;顣r的功耗非常低,設(shè)備事件觸發(fā)正常工作的頻率非常低,每次喚醒工作的時間非常短。
(二)低功耗?;罴夹g(shù)分析
低功耗?;罴夹g(shù),實際上也就是低功耗設(shè)備在休眠的時候,設(shè)備端與IoT平臺保持一個網(wǎng)絡(luò)上的連接,這樣做有兩個目的:
IoT平臺可以知道設(shè)備的在線狀態(tài),并且可以遠程網(wǎng)絡(luò)喚醒設(shè)備
設(shè)備端的WiFi模塊是處于低功耗休眠狀態(tài),如果有事件喚醒,可以很快就建立起新的網(wǎng)絡(luò)連接。
為了降低設(shè)備端的功耗,設(shè)備端一般是設(shè)置60秒或是更加長的時間周期往IoT平臺發(fā)送一個心跳包,以保持設(shè)備在線狀態(tài)。
如果IoT平臺超時沒有收到設(shè)備端的心跳,會判定設(shè)備已經(jīng)離線。
設(shè)備正常保活功耗如下圖:
(三)實際問題分析
對于上面介紹的這類通過WiFi進行休眠?;畹脑O(shè)備,在實際應(yīng)用中會出現(xiàn)各種問題,比如:
同一個設(shè)備,連接不同的路由器,其休眠?;畹墓臅嬖诤艽蟮牟町?/strong>
同一設(shè)備,連接同一路由器,在不同環(huán)境的不同時間,功耗也會存在差異
同時生產(chǎn)的同一批設(shè)備,在國內(nèi)沒問題,在國外使用就會出現(xiàn)只能用幾天的問題
為什么會出現(xiàn)這些差異?其根本原因是什么?又可以通過什么方式進行規(guī)避呢?
1.同一設(shè)備,連接不同路由器功耗會有差異
這里主要是跟路由器的beacon有關(guān)系,beacon是路由器定期廣播的一種管理幀,它攜帶了關(guān)鍵的網(wǎng)絡(luò)信息,比如SSID,Rates,DSPS等信息。下面是使用抓包工具抓的一個beacon幀信息
路由器一般是100ms廣播一次,同樣的,設(shè)備端的WiFi模塊也會以相同的周期去接收路由器的beacon,這里有兩個目的:
接收路由器的beacon包,以檢查是否有IoT網(wǎng)絡(luò)喚醒請求
通過路由器beacon包進行時間同步
那為什么設(shè)備連接不同的路由器,設(shè)備端休眠?;畹墓臅灰粯幽兀?/strong>主要原因是:路由器的beacon包規(guī)律性存在差異
路由器本身的定時器不準,100ms的定時存在偏差,導致設(shè)備端WiFi長時間的等待接收beacon包
路由器負載高的時候,可能優(yōu)先進行數(shù)據(jù)傳輸,導致beacon包延后發(fā)送,這個時候設(shè)備端的WiFi處于等待狀態(tài),會比休眠的時候功耗高
2.同一設(shè)備,連接同一個路由器功耗也會有差異
同一個設(shè)備,連接到同一個路由器功耗會存在差異,主要原因有:
路由器同信道有無線干擾
路由器與設(shè)備距離遠
路由器與設(shè)備中間有障礙物阻擋
距離與障礙物遮擋,這類問題還是比較容易被發(fā)現(xiàn),但無線干擾這個就比較難定位,無線干擾主要是指同頻段的電磁波干擾。
因為有干擾源的存在,路由器發(fā)出的beacon廣播包,設(shè)備端可能會接收不到,所以設(shè)備端會超時接收,導致功耗變大。
如何查看環(huán)境的干擾情況呢?
使用頻譜儀搜索環(huán)境信號
使用WiFi魔盒查看WiFi干擾情況(只能看出大概情況)
使用無線抓包工具,查看丟包情況
下圖是使用抓包工具去抓路由器?beacon?廣播包的情況,F(xiàn)AST_EA06?是路由器名
通過分析抓取到的beacon包,可以知道功耗偏高問題,是當前環(huán)境干擾引起的,還是設(shè)備端自身的問題。
3.其它問題
其它的一些問題,比如:同時生產(chǎn)的一批設(shè)備,在國內(nèi)沒問題,在國外使用就會出現(xiàn)只能用幾天的問題,或者是連接到某些路由器時就會出現(xiàn)電量消耗很快的情況。
這類問題的原因可能會比較多,主要是跟路由器的設(shè)置有關(guān)系,比如路由器的租期時間長短,路由器ARP緩存表更新策略等
這里分析一下路由器ARP緩存表更新引起的功耗變大的問題
路由器和主機都會維護一個ARP緩存表,目的是為了解析IP地址與MAC地址之間的關(guān)系。
如果設(shè)備剛連接上設(shè)備,路由器ARP緩存表上沒有該設(shè)備IP和MAC地址信息,那么路由器會廣播,“誰擁有這個IP地址對應(yīng)的MAC地址?”,該IP的設(shè)備收到該廣播后,正常應(yīng)該將自己的MAC地址告知路由器。
如果設(shè)備端沒有應(yīng)答該路由器的ARP請求,或者是說該應(yīng)答機制有問題,那么,有些路由器有可能會斷開該IP的所有連接,導致的結(jié)果就是設(shè)備端與IoT的保活連接被斷開
如果?;铈溌繁粩嚅_了,那么設(shè)備端需要被喚醒,重新建立保活連接,這樣一來,設(shè)備端的功耗就會變得很高。
如果一直沒有ARP應(yīng)答,那么設(shè)備可能間隔一小段時間,就會被喚醒去重新建立網(wǎng)絡(luò)。最終的結(jié)果就是設(shè)備使用幾天就沒電了。
(四)如何優(yōu)化?;罟?/strong>
要優(yōu)化嵌入式WiFi保活功耗,主要的方式有:
選擇干擾較少的無線頻段
避免物理障礙以及縮短路由器與設(shè)備間的距離
增強路由器與設(shè)備端的信號強度
控制路由器的負載,使其beacon包按規(guī)律穩(wěn)定發(fā)送
功耗控制是一個綜合性問題,與設(shè)備結(jié)構(gòu),硬件,軟件都有關(guān)系。在電池技術(shù)沒有突破性進展的前提下,要想做到超時長續(xù)航,在產(chǎn)品功能上勢必需要做一些取舍。
編輯:黃飛
?
評論