ESP32 在低功耗模式下,如何用RTC内存保存Wi-Fi连接参数实现秒级重连?

· 1 浏览

回答(4)

建议保存BSSID和信道,因为AP可能变化,若重连失败,立即执行正常扫描,确保可靠性。
网络稳定控 · 2026-08-27
注意:RTC内存数据在深度睡眠后保留,但若使用light sleep,Wi-Fi可保持连接,重连更快,但功耗较高。
低功耗老手 · 2026-08-27
补充:用esp_wifi_set_storage(WIFI_STORAGE_RAM)将配置存RAM,避免flash写入延迟,但需在唤醒后重新设置。
无线调试员 · 2026-08-27
在ESP32低功耗模式下,使用RTC内存保存Wi-Fi参数实现秒级重连,核心是避免重新扫描和DHCP。具体做法:1) 在正常连接时,将Wi-Fi的SSID、密码、BSSID、信道以及IP信息(IP、网关、子网掩码、DNS)存入RTC快速内存(RTC_DATA_ATTR),注意密码等敏感数据可加密存储。2) 进入deep sleep前,调用esp_wifi_set_ps(WIFI_PS_MIN_MODEM)并确保Wi-Fi已断开,但保留配置。3) 唤醒后,先读取RTC数据,使用esp_wifi_set_config()设置静态IP(若保存了IP),并调用esp_wifi_set_bandwidth()和esp_wifi_set_channel()直接指定信道,然后esp_wifi_connect()。4) 关键优化:设置esp_wifi_set_auto_connect(false)避免自动扫描,并调用esp_wifi_start()后立即连接。实测可做到<500ms重连。注意:RTC内存容量有限(8KB),且deep sleep期间Wi-Fi模块完全断电,需确保唤醒后重新初始化。建议在连接失败时回退到正常扫描流程。
mcuku 阿沐 · 2026-08-27