在某些时候我们设计的产品可能不具备持久供电的环境,那通常会采用锂电池、干电池一类的轻便型的非持久性电源。当遇到这种情况时,产品的续航能力可能就会成用户评估产品的一个重要指标,加大电池容量当然是最为直接的方案,但是这也意味着提高产品的生产成本。那增加产品续航能力的另一个方案就是原自产品自身——降低不必要的能源消耗。
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的低功耗方案-睡眠模式的更多相关文章
-
FreeRTOS 低功耗之睡眠模式
以下转载自安富莱电子: http://forum.armfly.com/forum.php 低功耗是 MCU 的一项重要的指标,比如某些可穿戴的设备,其携带的电量有限,如果整个电路消耗的电量特别大的话 ...
-
第21章 RTX 低功耗之睡眠模式
低功耗是 MCU 的一项非常重要的指标,比如某些可穿戴的设备,其携带的电量有限,如果整个电路消耗的电量特别大的话,就会经常出现电量不足的情况,影响用户体验. 本章节为大家讲解 M3/4的低功耗方式之睡 ...
-
FreeRTOS 低功耗之 tickless 模式
以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家讲解 FreeRTOS 本身支持的低功耗模式 tickless 实现方法,tickless 低功 ...
-
第22章 RTX 低功耗之停机模式
以下内容转载自安富莱电子: http://forum.armfly.com/forum.php STM32F103 停机模式介绍 本章节我们主要讲解停机模式,停机模式是在 Cortex™-M3 的深睡 ...
-
FreeRTOS 低功耗之停机模式
以下转载自安富莱电子: http://forum.armfly.com/forum.php STM32F103 如何进入停机模式在 FreeRTOS 系统中,让 STM32 进入停机模式比较容易,调用 ...
-
CentOS 7合盖后黑屏但不进入睡眠模式修改
CentOS 7合盖后黑屏但不进入睡眠模式修改 systemd 能够处理某些电源相关的 ACPI事件,你可以通过从 /etc/systemd/logind.conf 以下选项进行配置: HandleP ...
-
STM32——项目需求之低功耗的停机模式
在说低功耗之前,先要明白一个东西,那就是stm32中的事件和中断. 事件是中断的触发源,开放了对应的中断屏蔽位,则事件可以触发相应的中断.在STM32中,中断与事件不是等价的,一个中断肯定对应一个事件 ...
-
【转】教你弄清 OSX 的睡眠模式,以及合法的禁止产生 sleepimage
原文链接 因为之前用的是网上流传的土法来禁止生成 sleepimage,尝到了苦头,而且2次! 大家知道 OSX 有几种睡眠模式,其中 hibernatemode 可以是 0 (传统睡眠方式,不生成 ...
-
MAC的睡眠模式介绍
因为之前用的是网上流传的土法来禁止生成 sleepimage,尝到了苦头,而且2次! 大家知道 OSX 有几种睡眠模式,其中 hibernatemode 可以是 0 (传统睡眠方式,不生成 sleep ...
随机推荐
-
web移动端性能调优及16ms优化
本文只是一个索引,收集了网络上大部分关于调试及优化方面的文章,从中挑选了一些比较好的文章分享给大家. 移动端性能不及桌面浏览器性能的10分之1,特别是在android设备良莠不齐的情况下,性能显得尤为 ...
-
解决PHP下导出csv乱码小记
我们之前都是使用PHPexcel导出我们的一些数据的,由于Phpexcel对导出超出1万条数据会导至超时和内存暴涨,后来我们就改用数据导出成csv格式的. 相信很多朋友们在用PHP导出csv文件时都遇 ...
-
SVG文档的注意事项
SVG 是 HTML5 关于描述矢量图的元素.可以写在 <html> </html> 中,也可以保存为一个单独的.svg文件. 单独作为一个svg文件的时候,有一点规则需要注意 ...
-
学了一个封装的jquery插件,感觉还成
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
-
持续集成并不能消除 Bug,而是让它们非常容易发现和改正(转)
互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称 CI). 本文简要介绍持续集成的概念和做法. 一.概念 持续集成指的是 ...
-
Codeforces191 C. Fools and Roads
传送门:>Here< 题意:给出一颗树,和K次操作.每次操作给出a,b,代表从a到b的路径上所有边的权值都+1(边权最开始全部为0).最后依次输出每条边最终的权值 解题思路: 由于n非常大 ...
-
CSS3动画详解(图文教程)
本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 前言 本文主要内容: 过渡:transition 2D 转换 trans ...
-
android自定义tabhost,tabcontent用intent获得
地址:http://my.oschina.net/aowu/blog/36282 自己改的自定义tabhost组建,效果图如左.有更好的朋友可以相互交流一下,嘿嘿. 1.先上AndroidManife ...
-
【Java并发编程】:并发新特性—Lock锁和条件变量
简单使用Lock锁 Java5中引入了新的锁机制——Java.util.concurrent.locks中的显式的互斥锁:Lock接口,它提供了比synchronized更加广泛的锁定操作.Lock接 ...
-
简单响应式Bootstrap框架中文官网页面模板
链接:http://pan.baidu.com/s/1o7MQ6RC 密码:kee5