导读:物联网中的设备能耗管理是一项具有挑战性的任务,设备可以位于远程的任何一个地方且必须需要电能方可工作。
物联网中的设备能耗管理是一项具有挑战性的任务,设备可以位于远程的任何一个地方且必须需要电能方可工作。
一、如何实现物联网设备能耗管理
物联网中的设备能耗管理涉及与设计过程相关的所有环节,并且分析设备的行为如何影响能耗非常重要。电池容量和设备行为是两个最重要的方面。通常,我们可以从三个不同的区域来模拟物联网设备的功耗:
微控制器
无线电操作
传感器和执行器
典型的物联网设备使用场景是:
从传感器获取数据
发送和接收数据
控制执行器
通常,IoT设备使用一个或多个传感器来获取与环境相关的信息。获取的数据在本地或远程使用以做出决策。使用传感器获取该信息,并且每个传感器具有特定的功耗。因此,选择相适应的传感器以优化能耗管理就尤为重要。
物联网设备在运行期间可以远程发送和接收数据。通常,几个物联网设备连接到物联网网关,该网关收集此类信息并将其发送到云端。从电源管理的角度来看,发送和接收操作是能耗最大的任务之一,因为这个过程涉及无线电连接(蜂窝,Wi-Fi,蓝牙等)。
最后,在本地或远程使用某些特定业务逻辑,IoT设备可以控制一个或多个执行器。
微控制器控制所有操作,是设备的大脑,为了工作,它需要电源。
二、在物联网中实施能耗管理
我们使用Arduino,ESP8266和其他兼容设备开发IoT应用程序的最简单方法是实现该loop() 方法中的代码 。例如,当我们必须以特定的时间间隔从传感器获取数据时,只需添加 delay(..) 方法,指定设备在再次启动之前应等待多长时间并重复相同的任务。当我们考虑电源管理方面时,这种方法并不是最好的方法。我们可以通过不同的方式来获得更好的结果。
ESP8266有四种不同的模式可以“休眠”或保存电池:
No sleep
Modem sleep
Light sleep
Deep-sleep
1. No sleep
这是使用此设备的最低效方式,因为它始终在线。
2. Modem sleep
当ESP8266连接到Wi-Fi时才会启用此模式。在该模式下,ESP8266在两个DTIM信标间隔之间关闭Wi-Fi模块。ESP8266在下一个Beacon之前再次打开Wi-Fi模块。当需要保持CPU开启时,使用睡眠模式。
3. Light sleep
这种模式和Modem sleep模式非常相似,但在该模式下,ESP8266暂停CPU并关闭时钟。此模式比以前的模式更有效。在Light sleep模式下,应使用GPIO引脚唤醒ESP8266。
4. Deep-sleep
在此模式下,除RTC(实时时钟)外,一切都将关闭,因此ESP8266可以定期打开。这是最有效的模式。深度睡眠模式可用于设备应以特定间隔发送数据的情况。这是使用传感器的应用程序的示例。应用程序读取传感器数据,发送值并进入深度睡眠模式。
三、如何在ESP8266中使用能耗管理来降低功耗
小隐用一个简单的例子来描述如何使用深度睡眠模式来处理物联网中的能耗管理。假设我们的应用程序必须读取温度并将其发送到远程IoT平台。应用程序结构则必须是:
从传感器读取数据
发送数据
进入深度睡眠模式预定义的时间间隔
从第一步开始重复
如何在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。
结语:希望此文能帮助大家认识到能耗管理在物联网设备管理中的重要性。