最佳实践:1) 使用esp_wifi_set_storage(WIFI_STORAGE_RAM)将Wi-Fi配置存入RTC内存,避免每次唤醒重新连接;2) 在进入deep sleep前调用esp_wifi_set_ps(WIFI_PS_MIN_MODEM)并保存SSID/密码到RTC结构体(如RTC_DATA_ATTR),唤醒后先恢复配置再调用esp_wifi_connect();3) 注意RTC内存容量(约8KB),仅存必要信息,并校验CRC。坑点:a) 若使用WIFI_STORAGE_FLASH,唤醒后需重新初始化NVS,增加延迟和功耗;b) 频繁唤醒时,Wi-Fi模块未完全关闭会导致电流泄漏,需确保esp_wifi_stop()后再sleep;c) 某些ESP32版本在RTC内存中保存的BSSID会失效,建议只存SSID和密码,唤醒后重新扫描。实操建议:用esp_sleep_get_wakeup_cause()判断唤醒源,若为定时器则直接恢复连接,若为外部中断则重新配置。
mcuku 阿沐 · 2026-08-27