如何开启ESP8266深度休眠模式?定时器唤醒

在本教程中,我们将倾向于ESP8266 SoC的低功耗操作,并学习如何启用ESP8266深度睡眠模式。我们还将测量正常操作模式和深度睡眠模式的电流。

NodeMCU-On-board-LEDs
在Nodemcu上的两个板载LED

介绍

芯片(SOC)的现代微控制器和系统均采用良好的功率效率设计。这实际上是通常在电池供电系统中实现的小处理器(如MCU和SOC)的关键特征。

在产品设计中选择MCU的主要因素之一是其在低功耗模式下工作的能力,这是现代微控制器的特殊电源管理功能。

在低功耗模式下,微控制器关闭其系统的部分未被应用程序使用。这很重要,特别是如果您正在设计锂电池操作系统,您希望您的系统长时间运行电池。

当你进行与无线相关的设计时,事情会变得更加有趣,例如,基于ESP8266 Wi-Fi SoC的系统。除了普通的微控制器(如GPIO、SPI、ADC、I2C等),ESP8266 SoC还集成了Wi-Fi网络功能。

即使集成了所有Wi-Fi硬件,如RF巴伦、低噪声接收放大器、功率放大器、滤波器和天线开关,ESP8266 Wi-Fi SoC也提供了几个低功耗操作,以构建一个节能系统。

ESP8266 SOC中的操作模式

凭借其先进的电源管理技术,ESP8266EX Wi-Fi SoC支持四种不同的工作模式。

  • 活动模式
  • 调制解调器 - 睡眠模式
  • 光睡眠模式
  • 深度睡眠模式

活动模式

这是默认的操作模式,CPU正常运行,Wi-Fi和Radio也开机,这样SoC就可以发送、接收或收听Wi-Fi。当CPU正常工作时,所有的外围设备都是活动的,可以被应用程序使用。

活动模式中的功耗取决于SOC是否是通过Wi-Fi或接收数据传输数据。另外,功耗还取决于IEE 802.11协议的类型(如802.11b,802.11g或802.11n)及其相关的调制(cck,OFDM或MCS7)。

下表给出了在主动模式下各种参数的典型功耗值。电源电压为3.0V,环境温度为25℃0C。

参数

典型毫安电流

TX

802.11b - cck - 11 mbps - p出去= + 17 dBm 170.
802.11g - OFDM - 54mbps - P出去= +15 dBm.

140

802.11n - MCS7 - P出去= + 13 dBm

120

处方

802.11b - 1024B包长度- - 80dbm

50

802.11g - 1024B包长度- - 70dbm

56
802.11n - 1024b包长 - -65 dBm

56

笔记:功耗值仅用于射频模块,没有任何额外的CPU操作(如GPIO, ADC等)。

调制解调器 - 睡眠模式

这是ESP8266 SoC的第一种、最简单的低功耗模式或休眠模式。顾名思义,在Modem-Sleep模式下,ESP8266 SoC的CPU是运行的,但Wi-Fi和Radio是关闭的。

即使Wi-Fi Modem电路断电,芯片仍然保持Wi-Fi连接。这意味着没有数据传输,只有连接。

关闭Wi-Fi调制解调器将显着降低功耗,并且由于CPU仍然是可操作的,调制解调器睡眠模式可用于仅CPU必须工作的应用程序(如ADC,PWM或I2S)。

光睡眠模式

在Light-Sleep模式下,除了Wi-Fi调制解调器电路,CPU、时钟和所有内部外设都处于暂停状态,这有助于更低的功耗。

轻睡眠模式的简单应用是Wi-Fi交换机,其中CPU可以在不运行时空闲,但系统连接到Wi-Fi以接收命令(Wi-Fi传输也被禁用)。

由于ESP8266的CPU暂停在光休眠模式下,因此它无法响应信号和中断内部外围设备。因此,为了从睡眠模式唤醒,必须应用外部GPIO触发器。

笔记:GPIO16不能用于轻睡眠唤醒。

深度睡眠模式

ESP8266的深度睡眠模式是最终的低功耗模式,除RTC块外,一切都已关闭。CPU,时钟,外设,Wi-Fi,无线电都断电,以便最小功耗。

虽然Modem-Sleep Mode和Light-Sleep Mode可以由系统自动实现,但ESP8266 Deep Sleep Mode由用户(通过固件)发起。

笔记:要启用ESP8266深度睡眠模式,GPIO16和EXT_RSTB引脚必须连接在一起。ext_rstb还表示ESP-12E模块中的RST引脚以及Nodemcu。

ESP8266 Nodemcu深度睡眠模式对于低功耗应用是有用的,其中数据传输不是非常频繁的,并且CPU大部分时间都空闲。

在这种情况下,如果ESP8266激活了深度睡眠模式,那么系统在预定义的时间间隔后从深度睡眠中醒来,测量传感器的数据,通过Wi-Fi网络将数据上传到远程服务器,并返回深度睡眠模式。这个过程再次重复。

ESP8266睡眠模式比较

下表显示了esp8266 SoC中的三种睡眠模式的简单比较。

调制解调器——睡眠 浅睡眠 沉睡
CPU 暂停

离开

系统时钟

离开 离开
无线上网 离开 离开

离开

清债信托公司

能量消耗 15个马 0.9马

20µ

笔记:该数据基于Espressif Systems提供的数据表。实时值肯定会从一个设置到另一个不同。

如何开启ESP8266深度休眠模式?

让ESP8266 SoC处于深度睡眠模式实际上非常简单。它只是调用函数ESP.deepSleep(),并将睡眠时间(以微秒为单位)作为参数传递。有趣的是如何从深度睡眠模式中醒来。

有两种方式可以从深度睡眠模式唤醒ESP8266。他们是:

  • 自动唤醒
  • 外部唤醒

自动唤醒也被称为定时器唤醒,ESP8266会在睡眠时间过去后自动从深度睡眠模式中唤醒。在外部唤醒的情况下,ESP8266从深度睡眠时,你按下RST按钮(即,当你应用一个瞬时低信号的RST引脚)。

让我们了解我们如何为ESP8266深度睡眠模式实施这些唤醒系统。我将使用ESP8266 Nodemcu Board进行演示。

笔记:如果您有ESP-01模块,那么实现外部唤醒非常容易,因为您可以访问RST引脚。由于您不能直接访问GPIO16 Pin,所以实现Timer wake有点困难。

但是,您可以始终将电线焊接到ESP8266EX SoC的GPIO16引脚以使用它。如果您想将电线焊接到GPIO16引脚,请非常小心,因为您不想与其他引脚短路。

看看ESP8266NodeMCU引出线有关ESP8266引脚的更多信息。

深度睡眠自动唤醒(定时器)

要从深度睡眠模式实现基于计时器的自动唤醒,您所要做的就是将GPIO16引脚连接到RST引脚。在NodeMCU单板上,GPIO16标识为D0。

ESP8266-深睡眠 - 自动定时器唤醒

重要的提示:在上传代码之前不要将GPIO16连接到RST,因为上传代码可能会有困难。上传代码后才能连接GPIO16到RST引脚。

解释

在正常操作条件下,ESP8266的RST引脚总是高。如果您查看Nodemcu示意图,可以通过12kΩ电阻显示RST引脚高达3.3V。

为了复位或重启ESP8266 MCU,必须将RST引脚设置为瞬时低信号。记住这一点。

现在,您可以通过调用esp.deepsleep()函数,将ESP8266分钟放入深度睡眠模式,随时睡在Micro Seconds中作为其参数。例如,如果您调用esp.deepsleep(10000000)或esp.deepsleep(10e6),那么设备被放入深度睡眠模式1000万微秒或10秒,一旦定时器结束,MCU会发出低信号GPIO16引脚。

随着我们将GPIO16与RST引脚连接,在深度睡眠定时器完成后GPIO16上的低信号将将低信号施加到RST引脚,重置微控制器。

测试代码

为了演示ESP8266中带有计时器或自动唤醒的深度睡眠模式,我编写了一个简单的代码。在这种情况下,连接到GPIO的LED打开5秒,然后SoC进入深度睡眠5秒。

当ESP8266单片机进入深度睡眠模式时,LED将关闭。5秒睡眠时间过后,GPIO16引脚将通过RST引脚复位单片机,重复此过程。

ESP8266深睡眠,外部唤醒

要使用外部信号从深度睡眠中唤醒ESP8266,必须使用一个按钮拉动RST引脚LOW。但是如果你注意到NodeMCU板,已经有一个RESET按钮连接到RST引脚。

ESP8266-深睡眠外来醒来

测试代码

代码与先前的代码非常相似,因为没有超时或预定义的休眠时间,因此您必须将0作为参数传递给eSp.deepsleep()函数。

这将使ESP8266处于无限期深度睡眠模式,直到按下外部唤醒按钮。

正常模式下的功耗和深度睡眠模式

我做了一个简单的电路来测量ESP8266 NodeMCU在正常模式和深度睡眠模式下的电流消耗。为此,我使用了外部5V电源和万用表。万用表设置为“直流电流测量模式”。

要了解更多关于万用表和如何使用它,请查看如何使用万用表教程。

5V电源正轨连接万用表红色探头。黑色探针连接NodeMCU的VIN引脚,NodeMCU的GND连接5V电源负轨。

我用的是自动或定时叫醒系统。所以,GPIO16和RST引脚连接在一起(只有在上传代码之后)。

在正常工作模式下,ESP8266 NodeMCU产生约80ma的电流。在这里,你也可以看到LED是亮的。

功耗正常模式

一旦它进入深度睡眠模式后5秒的延迟,电流下降到大约10毫安。它处于深度睡眠模式5秒,之后ESP8266被GPIO16引脚唤醒。当ESP8266进入深度睡眠模式时,LED灯熄灭。

Power-Consumption-Deep-Sleep-Mode

结论

关于ESP8266深度睡眠模式的完整教程在这里实现。了解了ESP8266 SoC不同的运行模式,ESP8266不同的休眠模式,不同模式下的功耗比较,如何将ESP8266进入深度休眠模式,以及从深度休眠模式中唤醒的不同方式。

留下一个回复

您的电子邮件地址不会被公开。必填字段已标记

Electronicshub图标
<\/i>","library":""}}" data-widget_type="nav-menu.default">
Baidu