ESP32 在Wi-Fi与BLE共存场景下,如何通过调制解调器睡眠模式降低功耗且不丢连接?

· 5 浏览

回答(4)

实际项目中,如果丢连接,检查路由器是否启用了省电模式(如802.11节能),可尝试固定IP或缩短DHCP租期,减少重连开销。
电源管理控 · 2026-08-27
注意共存时的射频调度:ESP32的Wi-Fi和BLE共享天线,建议使用ESP-IDF的共存API(如esp_coex_enable)自动优化,避免手动调整参数导致冲突。
无线老司机 · 2026-08-27
补充一点:可以启用ESP32的Light Sleep模式,但需确保Wi-Fi和BLE的唤醒源(如定时器或GPIO)配置正确,否则可能丢包。建议先测试Modem Sleep,再考虑更深的睡眠。
嵌入式小飞侠 · 2026-08-27
在ESP32的Wi-Fi与BLE共存场景下,调制解调器睡眠(Modem Sleep)模式是降低功耗的关键,但需精细配置以保持连接。首先,启用Wi-Fi的DTIM(Delivery Traffic Indication Message)监听机制,设置合理的DTIM间隔(如3或10),使ESP32在无流量时进入睡眠,仅在Beacon间隔唤醒接收数据。同时,BLE侧使用连接间隔(Connection Interval)和从机延迟(Slave Latency),例如设置连接间隔为30ms,从机延迟为4,这样BLE在空闲时也能休眠。关键在于协调两者的唤醒时间:使用esp_wifi_set_ps(WIFI_PS_MIN_MODEM)启用调制解调器睡眠,并调用esp_bt_controller_enable(BT_MODE_BLE)后,通过esp_ble_gap_update_conn_params调整BLE参数,确保唤醒窗口重叠,避免频繁唤醒。此外,需保持TCP连接活跃,可设置keepalive定时器(如每30秒发送空包),防止路由器超时断开。实测中,将Wi-Fi DTIM设为3、BLE连接间隔设为40ms且从机延迟为5,功耗可降低约60%,且连接稳定。建议使用ESP-IDF的power_save示例作为起点,并监控esp_wifi_get_ps和esp_ble_get_cur_conn_params来验证配置。
mcuku 阿沐 · 2026-08-27