ESP32 在WiFi连接状态下,如何在不影响吞吐量的前提下实现低功耗定时唤醒?

· 2 浏览

回答(4)

若需更高吞吐,可考虑在唤醒期间临时切换至`WIFI_PS_NONE`,完成数据传输后再切回,但需注意切换开销。
网络优化师 · 2026-08-27
建议使用`esp_wifi_set_ps`的`WIFI_PS_MIN_MODEM`,并设置`listen_interval`为3,平衡唤醒频率和吞吐量,实测延迟增加<10ms。
低功耗老王 · 2026-08-27
补充:用ESP-IDF的`esp_pm_config_esp32_t`设置CPU频率为80MHz,配合Modem Sleep,功耗可降至20mA以下,吞吐量影响极小。
无线调试员 · 2026-08-27
在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