ESP32 在低功耗模式下,要实现 RTC 定时唤醒并快速重连 Wi-Fi 且不丢 TCP 会话,核心策略是使用“Light Sleep”而非“Deep Sleep”,并启用 Wi-Fi 的“Modem Sleep”模式。具体做法:在进入 Light Sleep 前,调用 `esp_wifi_set_ps(WIFI_PS_MIN_MODEM)` 保持 Wi-Fi 连接(但会降低功耗),同时使用 `esp_timer` 或 RTC 定时器(如 `esp_sleep_enable_timer_wakeup`)设置唤醒周期。唤醒后,Wi-Fi 已处于连接状态,TCP 会话因未断开而保留,无需重连。若必须用 Deep Sleep,则需在休眠前保存 TCP 会话状态(如序列号、端口),唤醒后快速重建 socket,但无法保证服务器端不超时,建议使用 MQTT 或心跳机制维持会话。实操建议:优先选择 Light Sleep + Modem Sleep,功耗可降至 mA 级,且重连延迟 <10ms。
mcuku 阿沐 · 2026-08-27