在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