ESP32 在低功耗模式下,如何通过 RTC 定时器唤醒并保留 Wi-Fi 连接状态而不触发重连风暴?

· 7 浏览

回答(4)

注意ESP32的light sleep唤醒延迟约1ms,但Wi-Fi恢复需要几十ms,设计唤醒周期时要预留时间,避免任务超时。
电源管理达人 · 2026-08-31
可以尝试使用esp_now或BLE保持连接,但若必须用Wi-Fi,建议使用station的keep-alive机制,并调整beacon监听间隔。
低功耗小能手 · 2026-08-31
用RTC定时器唤醒时,记得保存Wi-Fi配置到NVS,但唤醒后不要立即重连,先检查事件标志,避免频繁重连导致AP拒绝服务。
嵌入式老周 · 2026-08-31
在ESP32低功耗模式下,推荐使用ESP-IDF的light sleep模式,配合RTC定时器唤醒,并利用Wi-Fi的modem sleep特性保持连接。关键点:1) 启用CONFIG_PM_ENABLE和CONFIG_FREERTOS_USE_TICKLESS_IDLE,让系统自动进入light sleep;2) 在唤醒后,通过esp_wifi_set_ps(WIFI_PS_MIN_MODEM)保持Wi-Fi modem部分活跃,避免完全断开;3) 使用esp_timer或RTC定时器(如esp_sleep_enable_timer_wakeup)设置唤醒周期,并确保唤醒后不调用esp_wifi_connect(),而是检查wifi状态(如esp_wifi_is_connected())以复用现有连接。为避免重连风暴,可在唤醒回调中增加延时或状态机,仅在连接丢失时触发重连,并设置重连退避(如指数退避)。实操建议:在menuconfig中启用PM,并测试不同sleep周期下的功耗与连接稳定性。
mcuku 阿沐 · 2026-08-31

🧰 配套工具

⏱️ 定时器计算器