睡眠模式可以降低 ESP32 的功耗

作者 Jeremy Cook

ESP32 是一款令人难以置信的器件:它能够以数百兆赫的速度处理信息,通过 WiFi 和蓝牙进行通信,并使用其 GPIO 引脚完成各种各样的任务。然而,有人可能会说,能力越大,…功耗越大。

公平地说,与十年前的类似器件相比,ESP32 的功耗实际上相当低。然而,对于现代物联网应用来说,尤其是在涉及电池的情况下,它可能是一个相对耗电的器件,在完全做功的情况下会消耗数百毫安的电流。

好消息是,ESP32 还具有睡眠和休眠模式系统。如果谨慎使用,这些模式可以使 ESP 的功率需求得到控制,或者至少在短时间的活动中得到限制。

睡眠模式

下表概述了 ESP32 深度睡眠和其他电源模式,摘自其数据表:

ESP32 有五种低功耗模式:ESP32 调制解调器睡眠、轻度睡眠、深度睡眠、休眠和断电。调制解调器睡眠和深度睡眠有几种子模式,根据有效处理能力具有不同的功耗率。休眠几乎停止了芯片的所有功能,除了 RTC 在设定的时间后将其唤醒。当 CHIP_PU 引脚设为低电平时,断电模式被激活,需要外部交互才能再次开始进行处理。

所有这些的结果是,ESP32 的低功耗模式可分别消耗 68mA 到 5µA,或 0.068A 到 0.000005A 电流,而不考虑电源关闭。缺点是每种模式都限制了 ESP32 的实用性,如下所述:

  • 调制解调器-睡眠:无线通信被切断。
  • 轻度睡眠:暂停 CPU,但保留内存状态。
  • 深度睡眠:关闭 ESP32 主存储器的电源。有限的 RTC(实时时钟)存储器被保留下来,可以在唤醒时使用。ULP(超低功耗)处理器在三种深度睡眠子模式中的两种模式下处于活动状态,支持简单的任务执行和输入监控。
  • 休眠:仅 RTC 和有限数量的 GPIO 引脚保持活动状态,以便唤醒。不保留任何存储器。
  • 断电:必须从外部启动。大多数情况下,1µA 的功耗可以忽略不计。
  • 忽略电压影响,一个 3.7V、850mAh 的小型充电电池可为处于调制解调器睡眠状态的 ESP32 供电约 12.5 小时。轻度睡眠可以持续超过 1000 小时。中级深度睡眠休眠提供 8500 小时的运行时间,这大约是一年,而休眠状态理论上可以持续近 20 年。当然,该器件需要间歇性唤醒才能使用,但通过仔细规划,ESP32 设置可以使电池充电间隔时间非常长。

    ESP32 深度睡眠开发板差异

    在讨论功耗时,ESP32 芯片或模块只是电子产品的一部分。为进行实验,您可能会使用开发板。对于更详实的电子设计,需要自行布置相关部件来运行物联网之类的“东西”。通过仔细编程,使用 ESP32 可以非常省电,但周围的电子器件需要仔细考虑。

    为了说明这一点,我将一个 Adafruit HUZZAH32 ESP32 开发板与一个电源和电流测量设备以及一个 DFRobot DFR0478 ESP32 板连接起来。这两者都出现在这篇 ESP32 复合视频时钟文章中,并且在相当小众的使用案例中表现不同。或许能效也将证明是两者之间的一个区别特征。

    为了测试这一点,我使用了一个经过修改的“TimerWakeUp” ESP32 Arduino 示例草图,它会进入深度睡眠,唤醒后点亮板载 LED 灯,然后通过进入睡眠再次开始循环。将 5.3V 电压馈入每块电路板,以转换为 ESP32 所需的大约 3.3v 电压电平。消耗结果如下:

    HUZZAH32:  睡眠 = 6.6mA    唤醒 = 43.2mA 唤醒 + LED = 44.6mA
     DFR0478:  睡眠 = 0.02mA     唤醒 = 39.7mA 唤醒 + LED = 40.0mA

    公平地说,要更好地模拟物联网的实际使用情况,可能是测量通过电池端口的电流。尽管如此,在这种情况下,DFR0478 FireBeetle 板在睡眠模式下似乎比其对应的板更高效。

    HUZZAH32 在深度睡眠期间从电池电源获得 7000µA (7mA) 的电流,这大致是我在实验中测得的值。Andreas Spiess 的一项分析发现,DFR0478 在深度睡眠时会从电池获取 53µA (0.053mA) 的电流。这明显高于我在 DFR0478 上测得的结果,然而,他的报告使用了不同的电源输入和早期版本的电路板(2.0 版,我测试的 4.0 版)。这一测量也接近我的万用表所能报告的下限,这可能是影响其准确性的一个因素。最后提醒一下,测试的 FireBeetle 使用 WROOM-32D ESP32 模块,而 HUZZAH32 使用 WROOM-32E。

    话虽如此,但测试的两种电路板之间存在数量级的差异,这很好地说明了支持 ESP32 的电路对功耗有显著影响。

    通过睡眠模式控制 ESP32 功耗

    ESP32 是一款功能强大的器件,需要相对较大的功率才能运行。然而,通过仔细的编程,也有可能让这些器件依靠电池电力持续几周、几个月甚至更长时间。关键是要了解低功耗设计中的取舍,以及在实现可接受的性能的同时可以忽略哪些因素。

    最新消息

    Sorry, your filter selection returned no results.

    请仔细阅读我们近期更改的隐私政策。当按下确认键时,您已了解并同意艾睿电子的隐私政策和用户协议。

    本网站需使用cookies以改善用户您的体验并进一步改进我们的网站。此处阅读了解关于网站cookies的使用以及如何禁用cookies。网页cookies和追踪功能或許用于市场分析。当您按下同意按钮,您已经了解并同意在您的设备上接受cookies,并给予网站追踪权限。更多关于如何取消网站cookies及追踪的信息,请点击下方“阅读更多”。尽管同意启用cookies追踪与否取决用户意愿,取消网页cookies及追踪可能导致网站运作或显示异常,亦或导致相关推荐广告减少。

    我们尊重您的隐私。请在此阅读我们的隐私政策。