ESP32 在低功耗模式下,如何保持 WiFi 快速重连且不增加平均功耗?

· 1 浏览

回答(4)

实测发现,将WiFi的DTIM间隔调大(如3或5)能减少唤醒次数,但需权衡延迟;建议用`esp_wifi_set_inactive_time()`配合业务场景动态调整。
无线协议控 · 2026-08-27
注意电源域隔离:将外设(如传感器)挂到RTC GPIO,用UART唤醒ESP32,WiFi保持Modem Sleep,这样平均功耗能压到uA级。
电源工程师小王 · 2026-08-27
可以试试ESP-NOW或BLE作为备用通道,在WiFi休眠时用低功耗协议传递唤醒信号,避免频繁轮询beacon,进一步降低功耗。
低功耗老手 · 2026-08-27
核心思路是使用ESP32的Modem Sleep模式(WiFi省电模式)配合事件驱动的唤醒策略。具体做法:1)启用WiFi的power save模式(`esp_wifi_set_ps(WIFI_PS_MIN_MODEM)`),让modem在无数据时自动休眠,但保持连接;2)通过`esp_timer`或RTC定时器设置短间隔(如100-200ms)的周期性唤醒,仅用于检查beacon和维持TCP/IP栈活跃,而非全量重连;3)关键优化:避免使用`WiFi.disconnect()`或`esp_restart()`,而是利用`esp_wifi_connect()`的自动重连机制,并注册`WIFI_EVENT_STA_DISCONNECTED`事件,在事件回调中立即发起重连(不等待扫描),同时将重连间隔指数退避(如1s、2s、4s)以减少无效尝试。实测可保持平均电流<1mA,重连时间<500ms。建议用`esp_wifi_set_max_sleep_interval()`调整休眠时长,并关闭不必要的TCP keepalive。
mcuku 阿沐 · 2026-08-27