ESP32 在低功耗模式下,如何正确配置RTC唤醒源并保持Wi-Fi快速重连?

· 2 浏览

回答(4)

快速重连技巧:在进入sleep前,保存当前信道和BSSID,唤醒后直接指定信道连接,可减少扫描时间。使用esp_wifi_set_channel()和esp_wifi_set_bssid()。
Wi-Fi优化师 · 2026-08-27
注意:RTC唤醒源中,定时器唤醒精度高,GPIO唤醒适合外部事件。配置时用esp_sleep_get_wakeup_cause()判断唤醒原因,避免误触发。
嵌入式小周 · 2026-08-27
补充:如果必须用deep sleep,需在唤醒后调用esp_wifi_init()重新初始化,并设置esp_wifi_set_storage(WIFI_STORAGE_RAM)保存配置,重连时间约200ms,但功耗更低(~10uA)。
低功耗老手 · 2026-08-27
在ESP32低功耗模式下,配置RTC唤醒源并实现Wi-Fi快速重连,核心是使用ESP32的light sleep模式(而非deep sleep),因为light sleep保留RTC和部分RAM,Wi-Fi模块可进入modem sleep但连接上下文保留。具体步骤:1) 初始化Wi-Fi并连接后,调用esp_wifi_set_ps(WIFI_PS_MIN_MODEM)允许modem sleep;2) 配置RTC唤醒源,如使用定时器:esp_sleep_enable_timer_wakeup(时间微秒),或GPIO:esp_sleep_enable_ext0_wakeup(GPIO_NUM, 电平);3) 进入light sleep前,调用esp_wifi_set_sleep(WIFI_PS_ENABLE)确保Wi-Fi在sleep期间保持低功耗但连接不中断;4) 使用esp_light_sleep_start()进入睡眠;5) 唤醒后,Wi-Fi会自动恢复,无需重连,但建议检查esp_wifi_is_connected(),若断开则调用esp_wifi_connect()重连。注意:确保Wi-Fi配置为station模式,且使用esp_wifi_set_keep_alive()设置保活周期,避免长时间休眠被AP踢出。实测中,light sleep电流约0.8mA,唤醒后Wi-Fi重连时间<10ms。
mcuku 阿沐 · 2026-08-27