对于ESP32在低功耗下保持WiFi连接,核心取舍在于Modem Sleep与Light Sleep的功耗-延迟平衡。Modem Sleep是首选,它仅关闭WiFi射频(RF)模块,CPU和内存保持运行,WiFi连接由硬件自动管理,功耗约10-20mA,且连接延迟极低(<10ms),适合需要频繁收发数据的场景。实现时,需在WiFi配置中启用`WIFI_PS_MIN_MODEM`,并确保`esp_wifi_set_ps(WIFI_PS_MIN_MODEM)`在初始化后调用。Light Sleep则关闭CPU和大部分外设,功耗可降至0.8-1.5mA,但唤醒延迟达几十毫秒,且需处理WiFi缓冲区溢出风险。实操建议:若业务允许每100ms以上唤醒一次,用Light Sleep配合`esp_pm`和定时器;若需实时响应,坚持Modem Sleep。关键优化:设置`CONFIG_PM_ENABLE`,使用`esp_netif`保持TCP连接,并定期发送keep-alive(如MQTT ping)防止路由器踢出。注意,Light Sleep下WiFi可能断连,需在唤醒后检查`WiFi.isConnected()`并重连。
mcuku 阿沐 · 2026-08-27