乐鑫技术交流
直播中

杨勇

7年用户 1212经验值
私信 关注
[问答]

如何使ESP32-WROOM进入light-sleep或deep-sleep后能保持连接?

从技术参考手册上了解到,预设功耗模式除Active模式外,其他模式射频模块关闭。但有时我的应用需要Wi-Fi长连接。
目前了解两种可能的方法:
1.使用Wi-Fi唤醒,支持Light-sleep,但是我在程序中没有找到Wi-Fi唤醒的接口。
2.从预设的功耗模式修改出一种自定义功耗模式,通过调整电源控制信号。
    最后,请帮忙看下:1.低功耗模式下,Wi-Fi能保持连接的方案;2.实现的大致步骤或者参考文档。谢谢您!
                          

回帖(1)

潘飘稚

2024-6-20 17:31:27
要使ESP32-WROOM在进入light-sleep或deep-sleep后保持Wi-Fi连接,确实需要一些技巧。以下是两种可能的方案及其实现步骤:

1. 使用Wi-Fi唤醒,支持Light-sleep:

步骤:
a. 在ESP32的light-sleep模式下,Wi-Fi模块会关闭,但可以通过设置Wi-Fi唤醒功能来实现自动唤醒。
b. 在ESP-IDF中,可以通过设置`esp_wifi_set_protocol()`函数来配置Wi-Fi协议,使其支持Wi-Fi唤醒。
c. 使用`esp_wifi_set_ps()`函数设置Wi-Fi的功耗模式为`WIFI_PS_MIN_MODEM`,这样在light-sleep模式下,Wi-Fi模块会进入最小功耗模式,但仍能保持连接。
d. 调用`esp_wifi_start()`启动Wi-Fi,并连接到AP。
e. 使用`esp_wifi_connect()`函数连接到Wi-Fi网络。
f. 调用`esp_light_sleep_start()`函数进入light-sleep模式。在这种模式下,Wi-Fi模块会自动唤醒并保持连接。

2. 从预设的功耗模式修改出一种自定义功耗模式,通过调整电源控制信号:

步骤:
a. 首先,了解ESP32的电源管理模块,包括其时钟、电源和睡眠模式。
b. 根据需求,自定义一个功耗模式,该模式在deep-sleep或light-sleep状态下仍能保持Wi-Fi连接。
c. 使用`esp_sleep_enable_wifi()`函数启用Wi-Fi模块的睡眠功能。
d. 调用`esp_sleep_pd_config()`函数配置电源管理,确保在自定义功耗模式下,Wi-Fi模块和其他相关模块仍能正常工作。
e. 使用`esp_deep_sleep_start()`或`esp_light_sleep_start()`函数进入自定义的功耗模式。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分