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

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输出低电平引发芯片的重启,以达到唤醒的效果。

以下是在固件内引发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的低功耗方案-睡眠模式的更多相关文章

  1. FreeRTOS 低功耗之睡眠模式

    以下转载自安富莱电子: http://forum.armfly.com/forum.php 低功耗是 MCU 的一项重要的指标,比如某些可穿戴的设备,其携带的电量有限,如果整个电路消耗的电量特别大的话 ...

  2. 第21章 RTX 低功耗之睡眠模式

    低功耗是 MCU 的一项非常重要的指标,比如某些可穿戴的设备,其携带的电量有限,如果整个电路消耗的电量特别大的话,就会经常出现电量不足的情况,影响用户体验. 本章节为大家讲解 M3/4的低功耗方式之睡 ...

  3. FreeRTOS 低功耗之 tickless 模式

    以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家讲解 FreeRTOS 本身支持的低功耗模式 tickless 实现方法,tickless 低功 ...

  4. 第22章 RTX 低功耗之停机模式

    以下内容转载自安富莱电子: http://forum.armfly.com/forum.php STM32F103 停机模式介绍 本章节我们主要讲解停机模式,停机模式是在 Cortex™-M3 的深睡 ...

  5. FreeRTOS 低功耗之停机模式

    以下转载自安富莱电子: http://forum.armfly.com/forum.php STM32F103 如何进入停机模式在 FreeRTOS 系统中,让 STM32 进入停机模式比较容易,调用 ...

  6. CentOS 7合盖后黑屏但不进入睡眠模式修改

    CentOS 7合盖后黑屏但不进入睡眠模式修改 systemd 能够处理某些电源相关的 ACPI事件,你可以通过从 /etc/systemd/logind.conf 以下选项进行配置: HandleP ...

  7. STM32——项目需求之低功耗的停机模式

    在说低功耗之前,先要明白一个东西,那就是stm32中的事件和中断. 事件是中断的触发源,开放了对应的中断屏蔽位,则事件可以触发相应的中断.在STM32中,中断与事件不是等价的,一个中断肯定对应一个事件 ...

  8. 【转】教你弄清 OSX 的睡眠模式,以及合法的禁止产生 sleepimage

    原文链接 因为之前用的是网上流传的土法来禁止生成 sleepimage,尝到了苦头,而且2次! 大家知道 OSX 有几种睡眠模式,其中 hibernatemode 可以是 0 (传统睡眠方式,不生成 ...

  9. MAC的睡眠模式介绍

    因为之前用的是网上流传的土法来禁止生成 sleepimage,尝到了苦头,而且2次! 大家知道 OSX 有几种睡眠模式,其中 hibernatemode 可以是 0 (传统睡眠方式,不生成 sleep ...

随机推荐

  1. (网页)css和js的版本号问题

    HTML页面自动清理js.css文件的缓存,之前用的是?v=11每次都要找寻到网页进行更改,非常的麻烦. <script type="text/javascript"> ...

  2. 在微信小程序中使用LeanCloud(一)

    之前学习了微信小程序前端,使用到LeanCloud线上数据库 [传送门].作为一个前端开发人员,了解后端及数据库是学习工作的需要. LeanCloud直接登录,未注册直接创建账户.它是一款免费的线上数 ...

  3. windows7家庭版,专业版,旗舰版,企业版版本区别

    Windows 7包含6个版本,分别为Windows 7 Starter(初级版).Windows 7 Home Basic(家庭普通版).Windows 7 Home Premium(家庭高级版). ...

  4. SAP 维护视图创建与修改

    维护视图创建与修改 维护视图创建 T-CODE:SE54 维护ABAP数据字典 维护已生产的对象 注意:当维护视图修改后,需要删除已生成的对象,重新创建已生成的对象,否则无法显示,这个小窍门我花了半天 ...

  5. KVM使用

    这里使用的是Ubuntu18.04桌面版虚拟机 关于KVM可以看一下我之前的博客,有一些简单的介绍. 1.在打开虚拟机之前先开启此虚拟机的虚拟化功能. 2.安装KVM及其依赖项 wy@wy-virtu ...

  6. SQLServer插入数据

    使用数据库管理工具插入数据 打开数据库,选则要插入数据的表->右键点击->选择插入前200行->在右边视图中输入要插入的数据(如果字段设置为不为空,则必须输入,如果字段设置为可空,则 ...

  7. 我使用的Bem的习惯

    在基于BEM命名思想的基础上,我整理一些实用的点: BEM,B即block(块),E即element(元素),M即modifier(修饰符) 块:最顶层,可包含块和元素 元素:被块包含,通常为最终被包 ...

  8. (转)Spring Boot 2 (七):Spring Boot 如何解决项目启动时初始化资源

    http://www.ityouknow.com/springboot/2018/05/03/spring-boot-commandLineRunner.html 在我们实际工作中,总会遇到这样需求, ...

  9. java用JDBC连接MySQL数据库的详细知识点

    想实现java用JDBC连接MySQL数据库.需要有几个准备工作: 1.下载Connector/J的库文件,下载Connector/J的官网地址:http://www.mysql.com/downlo ...

  10. fabric使用

    1.入门博客https://fabric-chs.readthedocs.io/zh_CN/chs/tutorial.html 如果遇到这个问题说明你的fabric版本太高了 卸载到现在版本重新安装就 ...