Esp8266提供三种睡眠模式,用户可以结合具体需求选择睡眠模式并进行配置。三种睡眠模式分别是Modem-sleep、Light-sleep、Deep-sleep。 1. Modem-sleep 1.1. 特性 esp8266的Modem-sleep仅工作在Station模式下,连接路由器后生效。esp8266通过Wi-Fi的DTIM Beacon机制与路由器保持连接。一般情况下,路由器的 DTIM Beacon间隔为100ms~1000ms。 在Modem-sleep模式下,esp8266会在两次DTIM Beacon间隔时间内,关闭Wi-Fi模块电路,达到省电效果,在下次Beacon到来前自动唤醒。睡眠时间由路由器的DTIM Beacon时间决定。睡眠同时可以保持与路由器的Wi-Fi连接,并通过路由器接收来自手机或者服务器的交互信息。 1.2. 测试Modem-sleep功耗 1. 设置esp8266为Station模式,如图所示。 2. 设置睡眠模式为Modem-sleep,出厂默认也是该睡眠模式,如图所示。 3. 连接到路由器。
4. 连接后,esp8266自动进入Modem-sleep睡眠模式,也会自动唤醒,如图所示,最大电流69.8mA,最小电流14.4mA,平均电流17.5mA。
5. 进行TCP client单连接
6. 此时电流消耗如所示,平均电流增大至19mA。如图所示。 7. esp8266进入透传模式,每隔1秒发送20字节的电流消耗,如图所示 2. Light-sleep 2.1. 特性 Light-sleep的工作模式与Modem-sleep相似,仅工作在Station模式下,连接路由器后生效。station模式不同的是,除了关闭Wi-Fi模块电路以外,在Light-sleep模式下,还会关闭时钟并暂停内部CPU,比Modem-sleep功耗更低。 在Light-sleep模式下,CPU在暂停状态下不会响应来自外围硬件接口的信号和中断,因此需要通过外部GPIO信号将esp8266唤醒,硬件唤醒过程大约为3ms。由于Wi-Fi初始化过程需要大约1ms,所以建议用户5ms之后再对芯片进行操作。 2.2. 测试Light-sleep功耗 1. 设置esp8266为station模式,如图所示。 2. 设置睡眠模式为Light-sleep,如图所示。 3. 设置Light-sleep睡眠模式的唤醒源和唤醒引脚。 相关指令如下,以GPIO唤醒为例: AT+SLEEPWKCFG=0,1000 //定时器唤醒,1000ms后唤醒 AT+SLEEPWKCFG=2,12,0 //GPIO 12唤醒,低电平
4. 连接到路由器。
5. 连接成功后,CPU处于空闲状态时,会自动进入Light-sleep状态。此时发送AT指令等操作可能失败。此时的功耗如图所示,平均电流约8.5mA。 6. 将GPIO 12保持低电平,模块被唤醒。将GPIO 12保持高电平,模块会自动进入Light-sleep状态。 3. Deep-sleep 3.1. 特性 相对于其他两种模式,系统无法自动进入deep sleep,需要由用户发送AT指令AT+GSLP来控制。在该模式下,芯片会断开所有Wi-Fi连接与数据连接,进入睡眠模式,只有RTC模块仍然工作,负责芯片的定时唤醒。 3.2. 测试Deep-sleep功耗 1. 先将esp8266的GPIO 16与RST短接,用于Deep-sleep自动唤醒。 2. 无论esp8266处于什么Wi-Fi模式,Wi-Fi是否连接,使其进入Deep-sleep,如图所示。
将AT+GSLP=900000,使模块长期处于深度睡眠,便于测试,此时功耗如图所示,平均电流约267uA。 3. 自动唤醒 进入Deep-sleep 10秒后,模块通过GPIO 16给RST引脚一个低电平脉冲,模块即可被重启并被唤醒,如图所示。 4. 外部唤醒 在Deep-sleep状态下,可以通过外部IO在模块RST引脚上产生一个低电平脉冲,模块即可被重启并被唤醒。唤醒时间 3-5s
|