ESP32 低功耗模式下,如何保持 RTC 定时器唤醒且不丢失 Wi-Fi 连接状态?

· 2 浏览

回答(4)

补充:实测中,Wi-Fi Modem Sleep的DTIM间隔影响功耗,若路由器支持,设置DTIM=3可进一步降低功耗,但唤醒延迟增加,需根据业务容忍度调整。
无线协议控 · 2026-08-27
补充:Light Sleep时,建议关闭蓝牙(esp_bt_controller_disable),否则Wi-Fi和蓝牙共存会额外增加功耗,且可能干扰唤醒时序。
低功耗小能手 · 2026-08-27
补充:若必须用Deep Sleep,Wi-Fi状态必然丢失,需在睡眠前保存SSID和密码到NVS,唤醒后快速重连(约200ms),但TCP连接会断开,需应用层处理重连逻辑。
嵌入式老张 · 2026-08-27
ESP32在低功耗模式下保持RTC定时器唤醒且不丢失Wi-Fi连接状态,核心是使用ESP32的Light Sleep(浅睡眠)模式,而非Deep Sleep。在Light Sleep中,RTC外设和Wi-Fi模块的电源域保持供电,但CPU暂停,功耗可降至约0.8mA(相比Active模式降低90%以上)。具体实现:1)调用esp_wifi_set_ps(WIFI_PS_MIN_MODEM)启用Wi-Fi Modem Sleep,让Wi-Fi在空闲时自动进入低功耗;2)配置RTC定时器(如esp_sleep_enable_timer_wakeup)设置唤醒周期;3)进入Light Sleep前,调用esp_wifi_set_sleep_type(WIFI_PS_NONE)确保Wi-Fi不主动断开,并保持连接状态;4)使用esp_light_sleep_start()进入睡眠。唤醒后,Wi-Fi连接通常自动恢复,无需重连。若需更可靠,可注册Wi-Fi事件回调,在WIFI_EVENT_STA_DISCONNECTED时自动重连。注意:Light Sleep下Wi-Fi连接会短暂中断(毫秒级),但TCP会话通常保持,适合IoT周期上报场景。实测建议:将唤醒周期设为1-10秒,功耗和响应平衡最佳。
mcuku 阿沐 · 2026-08-27

🧰 配套工具

⏱️ 定时器计算器