ESP8266的低功耗方案-睡眠模式

在某些时候咱们设计的产品可能不具有持久供电的环境,那一般会采用锂电池、干电池一类的轻便型的非持久性电源。当遇到这种状况时,产品的续航能力可能就会成用户评估产品的一个重要指标,加大电池容量固然是最为直接的方案,可是这也意味着提升产品的生产成本。那增长产品续航能力的另外一个方案就是原自产品自身——下降没必要要的能源消耗。服务器

ESP8266有一个很是实用的低功耗运行模式 - 睡眠模式。oop

ESP8266系列产品的睡眠模式共有如下几种可选:大数据

No-sleep

打开芯片全部的功能使全部功能处理长期持久的工做状态,此时芯片的功耗将处于最大状态。显然,这并非一种推荐的用法,除非ESP8266芯片要处理长时间的实时性任务(此场景在真实的产品应用中并很少见)。设计

Modem-sleep

Modem-sleep是ESP8266的默认睡眠方式且仅工做于Station模式(即中继器模式 AP),并且只有链接到路由器后才会生效。3d

当ESP8266以AP方式链接到路由器且运行于Modem-sleep模式时,它会在两次DTIM Beacon间隔内关闭WIFI电路以达到省电效果,在下次Beacon到来前自动唤醒。睡眠时间由路由器的DTIM Beacon时间决定。睡眠的同时ESP8266能够保持与路由器的WI-FI链接,并通路由器接受来自手机或者服务器的交互信息。code

通常路由器的DTIM Beacon间隔为100ms~1,000msblog

Light-sleep

Light-sleep的工做模式与Modem-sleep类似,而不一样的是除了关闭WI-FI模块电路之外,在该模下还会关闭时间并暂停内部CPU,从而达到比Modem-sleep模式更低的功耗。ip

Light-sleep模式可用于须要保持与路由器的链接,能够实时响应路由器发来的数据的场合。而且在未接收到命令时,CPU能够处于空闲状态。好比WI-FI开关的应用,大数据时间CPU是空闲的,直到收到控制命令,CPU才须要进行GPIO的操做。路由

Deep-sleep

Deep-sleep则是最狠的一种省电模式了,但此模式下ESP8266将会关闭除GPIO状态外的全部的电路,此时ESP8266几乎就处于假死状态,其电流的消耗仅仅为20uAget

而事实上ESP8266并不会持续地维持这种深度睡眠状态,而是在一个指定间隔内关闭全部其它电路,当达到指定时间间隔后ESP8266将会自动从新启动一次,这个最大时间间隔为 4,294,967,295 µs 约合71分钟,其实也真的算得上睡得够久了。但这种模式很是适合于那种对时间间隔要求很长的场合,例如最长见的温度湿度检测,河水水位检测等。

要启用Deep-sleep模式不能单单经过固件控制而须要进行跳线,具体办法就是将D0(GPIO16)与RST脚相连。只要RST脚处于低电平状态时就会引起ESP8266重启,而Deep-sleep的真正实现方法就是在固件所指定的时间间隔内向GPIO16输出低电平引起芯片的重启,以达到唤醒的效果。

如下是在固件内引起Deep-sleep的代码:

void setup() {
  Serial.begin(115200);
  Serial.setTimeout(2000);

  // Wait for serial to initialize.
  while(!Serial) { }
  
  Serial.println("I'm awake.");

  Serial.println("Going into deep sleep for 20 seconds");

  // 一但遇到如下方法ESP就会进入deepSleep状态
  ESP.deepSleep(20e6); // 20e6 is 20 microseconds
}

void loop() {
}

下表为三种模式的具体对比:

相关文章
相关标签/搜索