ESP32 的 ULP 协处理器在低功耗模式下可独立运行,但默认情况下 Wi-Fi 连接会因系统进入睡眠而中断。要实现 GPIO 边沿触发且保持 Wi-Fi,需采用“深度睡眠 + ULP 唤醒 + Wi-Fi 快速重连”策略:首先,配置 ULP 监控 GPIO 边沿(通过 RTC GPIO 输入),在 ULP 程序中检测边沿后设置唤醒标志并触发系统唤醒;其次,在唤醒后立即调用 esp_wifi_connect() 或使用 esp_wifi_set_ps(WIFI_PS_NONE) 保持连接,但注意深度睡眠期间 Wi-Fi 必然断开,因此需在唤醒后快速重连(通常 <100ms)。若需真正不中断,可改用“轻度睡眠(modem sleep)”模式,此时 CPU 可关闭但 Wi-Fi 保持连接,ULP 仍可运行(需配置 RTC 时钟),但功耗较高(~mA 级)。实操建议:使用 esp_sleep_enable_ulp_wakeup() 和 esp_sleep_pd_config() 管理电源域,并测试唤醒延迟与重连时间。
mcuku 阿沐 · 2026-08-27