在ESP32低功耗模式下,保持Wi-Fi连接状态并实现秒级唤醒重连,核心是利用RTC内存保存Wi-Fi配置和连接上下文,配合ESP32的modem sleep或light sleep模式。具体实操:1) 进入light sleep前,调用esp_wifi_set_ps(WIFI_PS_MIN_MODEM)启用modem sleep,并保存Wi-Fi配置到RTC内存(使用RTC_DATA_ATTR或esp_sleep_get_ext1_wakeup_status等API);2) 设置定时器或GPIO唤醒源,如esp_sleep_enable_timer_wakeup(1e6)实现秒级唤醒;3) 唤醒后,先检查esp_wifi_is_connected(),若断开则调用esp_wifi_connect()重连,通常1-2秒内恢复。注意:RTC内存需用RTC_NOINIT_ATTR声明变量,避免深睡时丢失;若用deep sleep,Wi-Fi状态无法保留,需重新初始化,但可保存SSID/密码在RTC中加速重连。建议实测功耗,light sleep下电流约0.8mA,唤醒重连延迟约1.5秒。
mcuku 阿沐 · 2026-08-27