物聯(lián)網(wǎng)中設(shè)備能耗應(yīng)該怎樣去管理
物聯(lián)網(wǎng)中的設(shè)備能耗管理是一項具有挑戰(zhàn)性的任務(wù),設(shè)備可以位于遠程的任何一個地方且必須需要電能方可工作。
一、如何實現(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ù)在本地或遠程使用以做出決策。使用傳感器獲取該信息,并且每個傳感器具有特定的功耗。因此,選擇相適應(yīng)的傳感器以優(yōu)化能耗管理就尤為重要。
物聯(lián)網(wǎng)設(shè)備在運行期間可以遠程發(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,藍牙等)。
***,在本地或遠程使用某些特定業(yè)務(wù)邏輯,IoT設(shè)備可以控制一個或多個執(zhí)行器。
微控制器控制所有操作,是設(shè)備的大腦,為了工作,它需要電源。
二、在物聯(lián)網(wǎng)中實施能耗管理
我們使用Arduino,ESP8266和其他兼容設(shè)備開發(fā)IoT應(yīng)用程序的最簡單方法是實現(xiàn)該loop() 方法中的代碼 。例如,當我們必須以特定的時間間隔從傳感器獲取數(shù)據(jù)時,只需添加 delay(。.) 方法,指定設(shè)備在再次啟動之前應(yīng)等待多長時間并重復(fù)相同的任務(wù)。當我們考慮電源管理方面時,這種方法并不是***的方法。我們可以通過不同的方式來獲得更好的結(jié)果。
ESP8266有四種不同的模式可以“休眠”或保存電池:
No sleep
Modem sleep
Light sleep
Deep-sleep
1. No sleep
這是使用此設(shè)備的***效方式,因為它始終在線。
2. Modem sleep
當ESP8266連接到Wi-Fi時才會啟用此模式。在該模式下,ESP8266在兩個DTIM信標間隔之間關(guān)閉Wi-Fi模塊。ESP8266在下一個Beacon之前再次打開Wi-Fi模塊。當需要保持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ā)送到遠程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秒。當它醒來時,它會從頭開始,連接到Wi-Fi,依此類推??梢允褂眠@種方法使用按鈕啟動它來喚醒ESP8266。
結(jié)語:希望此文能幫助大家認識到能耗管理在物聯(lián)網(wǎng)設(shè)備管理中的重要性。