当您的IoT项目由家用市电提供电源时,您不会太在乎功耗。但是,如果您要使用电池为项目供电,则需要计算每个mA电流。
这里的解决方案是利用其一种睡眠模式来减少ESP32的功耗使用情况。实际上,这是一个很好的策略,可以显著提高不需要一直活跃的项目的电池寿命。
要了解ESP32如何实现节能,首先我们需要知道芯片内部的内容。下图显示了ESP32芯片的功能框图。

ESP32芯片的核心是一个双核32位微处理器,具有448 kb的ROM、520 kb的SRAM和4MB的存储器。
该芯片还包含一个WiFi模块、一个蓝牙模块、一个加密加速器(专门设计用于执行加密操作的协调员)、一个RTC模块和许多外围设备。
ESP32的高级电源管理提供了五种可配置的电源模式。根据功耗要求,芯片可以在不同的功率模式之间切换。这些模式是:
● 活动模式
● 调制解调器睡眠模式
● 轻度睡眠模式
● 深度睡眠模式
● 休眠模式
每种模式都有自己的独特功能和节能。
正常模式也称为活动模式。在这种模式下,芯片的所有功能都保持活跃。
由于活动模式始终运行所有操作(尤其是WiFi模块、处理核心和蓝牙模块),因此操作芯片需要超过240mA的电流。还可以观察到,如果您一起使用WiFi和蓝牙,有时会出现高功率尖峰(高达790mA)。

显然,这是最低效率的模式,并消耗最多的电流。因此,如果您想节省电源,则必须利用另一种功耗模式来禁用未使用的功能。
在调制解调器睡眠模式下,除了WiFi、蓝牙和射频外,其他所有内容都是活跃的。它还可以使CPU运行,并且时钟是可配置的。
在这种模式下,芯片在慢速下消耗了约3mA,高速消耗20mA。

为了使WiFi/蓝牙连接保持活动,Wi-Fi、蓝牙和射频以预定义的间隔唤醒。这被称为关联睡眠模式(Association Sleep Pattern)。
在这种睡眠方式中,ESP32在活动模式和调制解调器睡眠模式之间切换。为此,ESP32使用DTIM信标机制在站模式下连接到路由器。
为了节省功耗,ESP32停用了两个DTIM信标间隔之间的Wi-Fi模块,并在下一个信标到达之前自动醒来。睡眠时间由路由器的DTIM信标间隔时间决定,通常为100ms至1000ms。
轻度睡眠类似于Modem睡眠,芯片也遵循其中的关联睡眠方式。
唯一的区别是,在轻度睡眠模式下,数字外围设备,大多数RAM和CPU都是时钟门控。
在轻度睡眠模式下,CPU通过关闭其时钟脉冲而暂停,而RTC和ULP-CoproCessor保持活跃。

在进入轻度睡眠模式之前,ESP32将其内部状态存储在RAM中,并在从睡眠中醒来时恢复操作。这被称为完全保留(Full RAM Retention)。
一旦配置了唤醒源,使用esp_light_sleep_start()函数进入轻度睡眠。
在深度睡眠模式下,CPU、大多数RAM和所有数字外围设备都可以关闭。芯片唯一保持运行的部分是:
● ULP协处理器
● RTC控制器
● RTC外围设备
● RTC快速而缓慢的内存
芯片将消耗约0.15 mA(如果ULP协处理器打开)至10µA。

在深度睡眠模式下,主CPU被关闭,而UltraLowPower(ULP)协处理器可以采用传感器读数,并在必要时唤醒CPU。这种睡眠模式称为ULP传感器监控模式。这对于设计应用程序需要由外部事件或计时器或两者组合唤醒的应用程序很有用,同时保持最少的功耗。
与CPU一起,芯片的主要内存也被禁用。因此,存储在该内存中的所有内容被删除且都无法访问。
由于RTC内存一直供电,因此即使在深度睡眠期间也保留了其内容,并且可以在芯片唤醒后检索。这就是为什么芯片在进入深度睡眠之前将Wi-Fi和蓝牙连接数据存储在RTC内存中的原因。
如果要在重新启动后使用数据,请通过使用RTC_DATA_ATTR属性来定义全局变量,将其存储在RTC内存中。例如,RTC_DATA_ATTR int myVar = 0;
从深度睡眠中出来后,芯片通过复位重新启动,并从一开始就开始执行程序。
与其他睡眠模式不同,系统无法自动进入深度睡眠模式。 esp_deep_sleep_start()函数用于配置唤醒源后立即进入深度睡眠。
与深度睡眠模式不同,在休眠模式下,芯片会禁用内部8 MHz振荡器以及ULP处理器。 RTC恢复内存也已关闭,这意味着我们在休眠模式下无法保留任何数据。
除了一个RTC计时器(在慢速时钟)和一些RTC GPIO外,其他所有内容都被关闭。他们负责从休眠模式中唤醒芯片。

这进一步降低了功耗。在休眠模式下芯片仅消耗约2.5μa。如果您要构建一个不需要一直活跃的项目,则此模式特别有用。
FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。
本小节使用音频开发框架实现一个音频录制到文件的示例。
I2S协议通过BCLK、LRCLK和DATA三线精准传输音频数据,但时序边沿、帧格式、时钟源等细节常引发噪声或断连。本文详解ESP32的I2S实现,从协议原理到ESP-IDF v5.x代码配置,助你避开常见陷阱,确保音频稳定传输。
本小节介绍音频的基础知识、音频开发框架和AudioCodec的简介,用一个音频播放示例来说明音频管道的使用。
MimiClaw是基于ESP32-S3芯片的超轻量级AI助手,通过Telegram或WebSocket提供Claude/GPT智能服务。
本小节是一个Web服务结合SD卡文件系统的应用示例。
本节主要讲解FileSystem类的使用,以及Flash文件系统配置和SD存储模块的使用。
本节主要讲解Wifi热点的Web服务使用,以及使用网页交互来控制LED。
本节主要讲解WifiBoard类的功能和HTTPClient库及cJSON的使用。
本节主要讲解TFT-LCD显示屏的使用和Window派生类与TFT_eSPI库的使用。
这篇文章展示了如何将化学与工程、信息技术、现代制造技术紧密结合,以“血氧指标控制的简易供氧器”为载体,组织一次真实的跨学科项目。设计中突出“从需求出发”“闭环控制”“可视化反馈”,不仅呼应了新课标中“跨学科实践”的要求,更贴近生活实际需求,尤其适用于对科技应用、健康关怀有兴趣的学生群体,可作为项目式学习或社团活动的优质课例。