在ESP32低功耗模式下,要实现Wi-Fi快速重连,关键在于利用RTC内存保存连接上下文,并配置正确的唤醒源。首先,在进入deep sleep前,调用`esp_wifi_set_ps(WIFI_PS_MIN_MODEM)`降低功耗,同时使用`esp_wifi_get_mac()`和`esp_wifi_get_config()`保存当前SSID、密码和BSSID到RTC内存(通过`RTC_DATA_ATTR`或`esp_sleep_get_wakeup_cause`区分唤醒原因)。其次,配置唤醒源为定时器或GPIO,并设置`esp_sleep_enable_timer_wakeup`。唤醒后,先检查唤醒原因,若为deep sleep唤醒,则调用`esp_wifi_connect()`直接重连,无需重新扫描,因为RTC内存中保留了连接参数。注意,需在`esp_wifi_start()`后立即调用`esp_wifi_set_storage(WIFI_STORAGE_RAM)`避免flash写入,并确保`esp_wifi_set_auto_connect(true)`。实测中,重连时间可缩短至100ms内。建议使用`esp_event_handler`监听`WIFI_EVENT_STA_DISCONNECTED`,若重连失败则重新初始化。
mcuku 阿沐 · 2026-08-27