導(dǎo)讀:物聯(lián)網(wǎng)中的設(shè)備能耗管理是一項具有挑戰(zhàn)性的任務(wù),設(shè)備可以位于遠(yuǎn)程的任何一個地方且必須需要電能方可工作。
物聯(lián)網(wǎng)中的設(shè)備能耗管理是一項具有挑戰(zhàn)性的任務(wù),設(shè)備可以位于遠(yuǎn)程的任何一個地方且必須需要電能方可工作。
一、如何實現(xiàn)物聯(lián)網(wǎng)設(shè)備能耗管理
物聯(lián)網(wǎng)中的設(shè)備能耗管理涉及與設(shè)計過程相關(guān)的所有環(huán)節(jié),并且分析設(shè)備的行為如何影響能耗非常重要。電池容量和設(shè)備行為是兩個最重要的方面。通常,我們可以從三個不同的區(qū)域來模擬物聯(lián)網(wǎng)設(shè)備的功耗:
微控制器
無線電操作
傳感器和執(zhí)行器
典型的物聯(lián)網(wǎng)設(shè)備使用場景是:
從傳感器獲取數(shù)據(jù)
發(fā)送和接收數(shù)據(jù)
控制執(zhí)行器
通常,IoT設(shè)備使用一個或多個傳感器來獲取與環(huán)境相關(guān)的信息。獲取的數(shù)據(jù)在本地或遠(yuǎn)程使用以做出決策。使用傳感器獲取該信息,并且每個傳感器具有特定的功耗。因此,選擇相適應(yīng)的傳感器以優(yōu)化能耗管理就尤為重要。
物聯(lián)網(wǎng)設(shè)備在運行期間可以遠(yuǎn)程發(fā)送和接收數(shù)據(jù)。通常,幾個物聯(lián)網(wǎng)設(shè)備連接到物聯(lián)網(wǎng)網(wǎng)關(guān),該網(wǎng)關(guān)收集此類信息并將其發(fā)送到云端。從電源管理的角度來看,發(fā)送和接收操作是能耗最大的任務(wù)之一,因為這個過程涉及無線電連接(蜂窩,Wi-Fi,藍牙等)。
最后,在本地或遠(yuǎn)程使用某些特定業(yè)務(wù)邏輯,IoT設(shè)備可以控制一個或多個執(zhí)行器。
微控制器控制所有操作,是設(shè)備的大腦,為了工作,它需要電源。
二、在物聯(lián)網(wǎng)中實施能耗管理
我們使用Arduino,ESP8266和其他兼容設(shè)備開發(fā)IoT應(yīng)用程序的最簡單方法是實現(xiàn)該loop() 方法中的代碼 。例如,當(dāng)我們必須以特定的時間間隔從傳感器獲取數(shù)據(jù)時,只需添加 delay(..) 方法,指定設(shè)備在再次啟動之前應(yīng)等待多長時間并重復(fù)相同的任務(wù)。當(dāng)我們考慮電源管理方面時,這種方法并不是最好的方法。我們可以通過不同的方式來獲得更好的結(jié)果。
ESP8266有四種不同的模式可以“休眠”或保存電池:
No sleep
Modem sleep
Light sleep
Deep-sleep
1. No sleep
這是使用此設(shè)備的最低效方式,因為它始終在線。
2. Modem sleep
當(dāng)ESP8266連接到Wi-Fi時才會啟用此模式。在該模式下,ESP8266在兩個DTIM信標(biāo)間隔之間關(guān)閉Wi-Fi模塊。ESP8266在下一個Beacon之前再次打開Wi-Fi模塊。當(dāng)需要保持CPU開啟時,使用睡眠模式。
3. Light sleep
這種模式和Modem sleep模式非常相似,但在該模式下,ESP8266暫停CPU并關(guān)閉時鐘。此模式比以前的模式更有效。在Light sleep模式下,應(yīng)使用GPIO引腳喚醒ESP8266。
4. Deep-sleep
在此模式下,除RTC(實時時鐘)外,一切都將關(guān)閉,因此ESP8266可以定期打開。這是最有效的模式。深度睡眠模式可用于設(shè)備應(yīng)以特定間隔發(fā)送數(shù)據(jù)的情況。這是使用傳感器的應(yīng)用程序的示例。應(yīng)用程序讀取傳感器數(shù)據(jù),發(fā)送值并進入深度睡眠模式。
三、如何在ESP8266中使用能耗管理來降低功耗
小隱用一個簡單的例子來描述如何使用深度睡眠模式來處理物聯(lián)網(wǎng)中的能耗管理。假設(shè)我們的應(yīng)用程序必須讀取溫度并將其發(fā)送到遠(yuǎn)程IoT平臺。應(yīng)用程序結(jié)構(gòu)則必須是:
從傳感器讀取數(shù)據(jù)
發(fā)送數(shù)據(jù)
進入深度睡眠模式預(yù)定義的時間間隔
從第一步開始重復(fù)
如何在ESP8266中啟用深度睡眠模式:
第一步是啟用深度睡眠模式。如圖:
在這種情況下,我們將引腳D0連接到RST。將代碼上傳到ESP8266時,避免將D0連接到RST。
代碼如下:
#include <ESP8266WiFi.h> const char* WIFI_SSID="---"; const char* WIFI_PWD="----"; void setup() { Serial.begin(9600); connectToWifi(); // send data Serial.println("Going to deep sleep for 15 sec"); ESP.deepSleep(15e6); } void loop() { // put your main code here, to run repeatedly: } void connectToWifi() { Serial.print("Connecting to Wifi:"); Serial.println(WIFI_SSID); WiFi.begin(WIFI_SSID, WIFI_PWD); while (WiFi.status() != WL_CONNECTED) { if (WiFi.status() == WL_CONNECT_FAILED) { Serial.println("Error during WiFi connection- "); delay(10000); } delay(1000); } Serial.print("Wifi IP:"); Serial.println(WiFi.localIP()); }
如此,ESP8266進入深度睡眠模式15秒。當(dāng)它醒來時,它會從頭開始,連接到Wi-Fi,依此類推??梢允褂眠@種方法使用按鈕啟動它來喚醒ESP8266。
結(jié)語:希望此文能幫助大家認(rèn)識到能耗管理在物聯(lián)網(wǎng)設(shè)備管理中的重要性。