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

摘要:
ESP8266具有非常实用的低功耗操作模式-睡眠模式。ESP8266系列产品的睡眠模式可选择如下:无睡眠开启芯片的所有功能,使所有功能都能处理长期和持久的工作条件。此时,芯片的功耗将达到最大值。当ESP8266以AP模式连接到路由器并以调制解调器睡眠模式运行时,它将在两个DTIMeacon会话间隔内关闭WIFI电路以节省电力,并在下一个信标到达之前自动唤醒。在睡眠时,ESP8266可以保持与路由器的WI-FI连接,并通过路由器从移动电话或服务器接收交互式信息。

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

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

ESP8266有一个非常实用的低功耗运行模式 - 睡眠模式。

ESP8266系列产品的睡眠模式共有以下几种可选:

No-sleep

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

Modem-sleep

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

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

一般路由器的DTIM Beacon间隔为100ms~1,000ms

Light-sleep

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

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

Deep-sleep

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

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

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

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

以下是在固件内引发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() {
}

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

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

免责声明:文章转载自《ESP8266的低功耗方案-睡眠模式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇移动端网页点击延迟及事件穿透CDN技术之--集群服务与负载均衡下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Vue--爬坑

1.路由变化页面数据不刷新问题; 出现这种情况是因为依赖路由的params参数获取写在created生命周期里面,因为相同路由二次甚至多次加载的关系 没有达到监听,退出页面再进入另一个文章页面并不会运行created组件生命周期,导致文章数据还是第一次进入的数据。 解决方法:watch监听路由是否变化 解决方法:watch监听路由是否变化 watch: {...

SpringCloud组件介绍(一)

Spring Cloud 组件: spring 和 Alibaba 组件图: 1.Eureka: 自我保护机制: Eureka Server: 主控制类 使用 @EnableEurekaServer 注解 Eureka client: 主控制类 使用 @EnableEurekaClient 注解 负载均衡:使用 @LoadBalanced注...

5-(微信小程序篇)关于WiFi模块配网以后利用小程序绑定设备,绑定方式说明

https://www.cnblogs.com/yangfengwu/p/11625189.html 众所周知:使用微信Airkiss 只能给设备配网,并不能够获取设备的MAC地址信息,但是我在 https://www.cnblogs.com/yangfengwu/p/11624796.html 这一节确是配网以后绑定了设备的MAC 其实绑定WIFI总结起...

DDWRT "中继桥接"模式 配置方法

一直喜欢耍路由,TOMATO玩双通、3G路由,后来是DD-WRT蹭网,不过一直都没有摆脱一个问题,那就是都是“玩家”,废话少说 ,进入主题中继蹭网: 准备: 我的DD-WRT固件版本(R2):DD-WRT v24-sp2 (07/16/10) mega(至少要 V24 RC5以上) 准备蹭网的主路由(R1):ssid、连接密码 注:如果破解密码请goog...

celery redis rabbitMQ各是什么及之间的区别?

Celery:  Celery是基于Python开发的分布式任务队列。它支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度。  1、 celery工作流程: 消息中间件(message broker):Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ, Redis, MongoDB ,SQLAl...

路由表转发分析实例

动态路由表图(该图没有配置静态路由,当静态路由和动态路由发生冲突时已静态的为准)  路由表信息解释   1)名词解释: Active Routes:活动的路由 Network destination :目的网段 Netmask:子网掩码 Gateway:网关,又称下一跳路由器。在发送IP数据包时,网关定义了针对特定的网络目的地址,数据包发送到的下一跳服...