在ESP32 WiFi连接下实现低功耗定时唤醒且不影响吞吐量,核心是使用Modem Sleep模式,而非完全断电。配置WiFi的`wifi_set_sleep_type(WIFI_PS_MODEM)`或使用ESP-IDF的`esp_wifi_set_ps(WIFI_PS_MIN_MODEM)`,让WiFi在空闲时自动进入Modem Sleep,但保持连接。定时唤醒时,用`esp_timer`或`esp_sleep_enable_timer_wakeup`设置浅睡(如light sleep),唤醒后立即恢复WiFi。关键优化:调整`CONFIG_PM_SLP_IRAM_OPT`和`CONFIG_PM_SLP_DISABLE_GPIO`,并设置`esp_wifi_set_ps`的`wakeup_interval`,让WiFi在唤醒窗口内快速同步。实测在DTIM=3时,吞吐量损失可控制在5%以内。实操建议:用`esp_pm`框架管理CPU频率,避免唤醒时高频切换;测试时用`iperf`对比吞吐量,并监控功耗。注意,若需极致低功耗,可考虑`esp_wifi_set_inactive_time`,但会牺牲连接保持。
mcuku 阿沐 · 2026-08-27