Sleep AT 示例

[English]

本文档简要介绍并举例说明如何在 ESP32 和 ESP32-C3 系列产品上使用 AT 命令设置睡眠模式。

简介

ESP32 和 ESP32-C3 系列采用先进的电源管理技术,可以在不同的电源模式之间切换。当前,ESP-AT 支持以下四种功耗模式(更多休眠模式请参考技术规格书):

  1. Active 模式:芯片射频处于工作状态。芯片可以接收、发射和侦听信号。

  2. Modem-sleep 模式:CPU 可运行,时钟可被配置。Wi-Fi 基带、蓝牙基带和射频关闭。

  3. Light-sleep 模式:CPU 暂停运行。RTC 存储器和外设以及 ULP 协处理器运行。任何唤醒事件(MAC、主机、RTC 定时器或外部中断)都会唤醒芯片。

  4. Deep-sleep 模式:CPU 和大部分外设都会掉电,只有 RTC 存储器和 RTC 外设处于工作状态。

默认情况下,ESP32 和 ESP32-C3 会在系统复位后进入 Active 模式。当 CPU 不需要一直工作时,例如等待外部活动唤醒时,系统可以进入低功耗模式。

对于 ESP32 和 ESP32-C3 的功耗,请参考 ESP32 系列芯片技术规格书ESP32-C3 系列芯片技术规格书

注解

  • 将分别描述在 Wi-Fi 模式和蓝牙模式下将 ESP32 和 ESP32-C3 设置为睡眠模式。

  • 在单 Wi-Fi 模式下,只有 station 模式支持 Modem-sleep 模式和 Light-sleep 模式。

  • 对于蓝牙模式下的 Light-sleep 模式,请确保外部存在 32 KHz 晶振。如果外部不存在 32 KHz 晶振,ESP-AT 将工作在 Modem-sleep 模式。

测量方法

为避免功耗测试过程中出现一些不必要的干扰,建议使用集成芯片的乐鑫模组进行测试。

硬件连接可参考如下。

  1. ESP32 系列

ESP32 硬件连接

ESP32 硬件连接

  1. ESP32-C3 系列

ESP32-C3 硬件连接

ESP32-C3 硬件连接

在 Wi-Fi 模式下设置为 Modem-sleep 模式

  1. 设置 Wi-Fi 为 station 模式。

    命令:

    AT+CWMODE=1
    

    响应:

    OK
    
  2. 连接路由器。

    命令:

    AT+CWJAP="espressif","1234567890"
    

    响应:

    WIFI CONNECTED
    WIFI GOT IP
    
    OK
    

    说明:

    • 您输入的 SSID 和密码可能跟上述命令中的不同。请使用您的路由器的 SSID 和密码。

  3. 设置休眠模式为 Modem-sleep 模式。

    命令:

    AT+SLEEP=1
    

    响应:

    OK
    

注解

  • RF 将根据 AP 的 DTIM 定期关闭(路由器一般设置 DTIM 为 1)。

  • 当 ESP32 模组的 CPU 频率为 80 MHz 并且模组处于单 Wi-Fi 模式下时,Modem-sleep 模式下的平均电流约为 21 mA。

  • 当 ESP32-C3 模组的 CPU 频率为 160 MHz 并且模组处于单 Wi-Fi 模式下时,Modem-sleep 模式下的平均电流约为 20 mA。

在 Wi-Fi 模式下设置为 Light-sleep 模式

  1. 设置 Wi-Fi 为 station 模式。

    命令:

    AT+CWMODE=1
    

    响应:

    OK
    
  2. 连接路由器。设置监听间隔为 3。

    命令:

    AT+CWJAP="espressif","1234567890",,,,3
    

    响应:

    WIFI CONNECTED
    WIFI GOT IP
    
    OK
    

    说明:

    • 您输入的 SSID 和密码可能跟上述命令中的不同。请使用您的路由器的 SSID 和密码。

  3. 设置休眠模式为 Light-sleep 模式。

    命令:

    AT+SLEEP=2
    

    响应:

    OK
    

注解

  • CPU 将会自动休眠,RF 则会根据 AT+CWJAP 设置的监听间隔定期关闭。

  • 当 ESP32 模组处于单 Wi-Fi 模式下时,Light-sleep 模式下平均电流约为 0.8 mA。

  • 当 ESP32-C3 模组处于单 Wi-Fi 模式下时,Light-sleep 模式下平均电流约为 130 uA。

在蓝牙广播态下设置为 Modem-sleep 模式

  1. 初始化为角色为蓝牙服务端。

    命令:

    AT+BLEINIT=2
    

    响应:

    OK
    
  2. 设置蓝牙广播参数。设置蓝牙广播间隔为 1 s。

    命令:

    AT+BLEADVPARAM=1600,1600,0,0,7,0,0,"00:00:00:00:00:00"
    

    响应:

    OK
    
  3. 开始广播

    命令:

    AT+BLEADVSTART
    

    响应:

    OK
    
  4. 禁用 Wi-Fi。

    命令:

    AT+CWMODE=0
    

    响应:

    OK
    
  5. 设置休眠模式为 Modem-sleep 模式。

    命令:

    AT+SLEEP=1
    

    响应:

    OK
    

注解

  • 当 ESP32 模组的 CPU 频率为 80 MHz 时并且模组处于单蓝牙广播态模式时,Modem-sleep 模式下的平均电流约为 23 mA。

  • 当 ESP32-C3 模组的 CPU 频率为 160 MHz 时并且模组处于单蓝牙广播态模式时,Modem-sleep 模式下的平均电流约为 20 mA。

在蓝牙连接态下设置为 Modem-sleep 模式

  1. 初始化为角色为蓝牙服务端。

    命令:

    AT+BLEINIT=2
    

    响应:

    OK
    
  2. 开启蓝牙广播。

    命令:

    AT+BLEADVSTART
    

    响应:

    OK
    
  3. 等待连接。

    如果连接建立成功,则 AT 将会提示:

    +BLECONN:0,"47:3f:86:dc:e4:7d"
    +BLECONNPARAM:0,0,0,6,0,500
    +BLECONNPARAM:0,0,0,24,0,500
    
    OK
    

    说明:

    • 在这个示例中,蓝牙客户端的地址为 47:3f:86:dc:e4:7d。

    • 对于提示信息(+BLECONN and +BLECONNPARAM),请参考 AT+BLECONNAT+BLECONNPARAM 获取更多信息。

  4. 更新蓝牙连接参数。设置蓝牙连接间隔为 1 s。

    命令:

    AT+BLECONNPARAM=0,800,800,0,500
    

    响应:

    OK
    

    如果连接参数更新成功,则 AT 将会提示:

    +BLECONNPARAM:0,800,800,800,0,500
    

    说明:

    • 对于提示信息(+BLECONNPARAM),请参考 AT+BLECONNPARAM 获取更多信息。

  5. 禁用 Wi-Fi。

    命令:

    AT+CWMODE=0
    

    响应:

    OK
    
  6. 设置休眠模式为 Modem-sleep 模式。

    命令:

    AT+SLEEP=1
    

    响应:

    OK
    

注解

  • 当 ESP32 的 CPU 频率为 80 MHz 时并且处于蓝牙连接态模式时,Modem-sleep 模式下的平均电流约为 23 mA。

  • 当 ESP32-C3 的 CPU 频率为 160 MHz 时并且处于蓝牙连接态模式时,Modem-sleep 模式下的平均电流约为 20 mA。

在蓝牙广播态下设置为 Light-sleep 模式

  1. 初始化为角色为蓝牙服务端。

    命令:

    AT+BLEINIT=2
    

    响应:

    OK
    
  2. 设置蓝牙广播参数。设置蓝牙广播间隔为 1 s。

    命令:

    AT+BLEADVPARAM=1600,1600,0,0,7,0,0,"00:00:00:00:00:00"
    

    响应:

    OK
    
  3. 开始广播。

    命令:

    AT+BLEADVSTART
    

    响应:

    OK
    
  4. 禁用 Wi-Fi。

    命令:

    AT+CWMODE=0
    

    响应:

    OK
    
  5. 设置休眠模式为 Light-sleep 模式。

    命令:

    AT+SLEEP=2
    

    响应:

    OK
    

注解

  • 当 ESP32 模组处于蓝牙广播态模式时,Light-sleep 模式下的平均电流约为 0.8 mA。

  • 当 ESP32-C3 模组处于蓝牙广播态模式时,Light-sleep 模式下的平均电流约为 130 uA。

在蓝牙连接态下设置为 Light-sleep 模式

  1. 初始化为角色为蓝牙服务端。

    命令:

    AT+BLEINIT=2
    

    响应:

    OK
    
  2. 开始广播。

    命令:

    AT+BLEADVSTART
    

    响应:

    OK
    
  3. 等待连接。

    如果连接建立成功,则 AT 将会提示:

    +BLECONN:0,"47:3f:86:dc:e4:7d"
    +BLECONNPARAM:0,0,0,6,0,500
    +BLECONNPARAM:0,0,0,24,0,500
    
    OK
    

    说明:

    • 在这个示例中,蓝牙客户端的地址为 47:3f:86:dc:e4:7d。

    • 对于提示信息(+BLECONN and +BLECONNPARAM),请参考 AT+BLECONNAT+BLECONNPARAM 获取更多信息。

  4. 更新蓝牙连接参数。设置蓝牙连接间隔为 1 s。

    命令:

    AT+BLECONNPARAM=0,800,800,0,500
    

    响应:

    OK
    

    如果连接参数更新成功,则 AT 将会提示:

    +BLECONNPARAM:0,800,800,800,0,500
    

    说明:

    • 对于提示信息(+BLECONNPARAM),请参考 AT+BLECONNPARAM 获取更多信息。

  5. 禁用 Wi-Fi。

    命令:

    AT+CWMODE=0
    

    响应:

    OK
    
  6. 设置休眠模式为 Light-sleep 模式。

    命令:

    AT+SLEEP=2
    

    响应:

    OK
    

注解

  • 当 ESP32 模组处于蓝牙连接态模式时,Light-sleep 模式下的平均电流约为 0.8 mA。

  • 当 ESP32-C3 模组处于蓝牙连接态模式时,Light-sleep 模式下的平均电流约为 130 uA。

设置为 Deep-sleep 模式

  1. 设置休眠模式为 Deep-sleep 模式。设置 deep-sleep 时间为 3600000 ms。

    命令:

    AT+GSLP=3600000
    

    响应:

    OK
    

    说明:

    • 设定时间到后,设备自动唤醒,调用深度睡眠唤醒桩,然后加载应用程序。

    • 对于 Deep-sleep 模式,唯一的唤醒方法是定时唤醒。

注解

  • 当 ESP32 模组处于 Deep-sleep 模式时,Deep-sleep 模式下的平均电流约为 10 uA。

  • 当 ESP32-C3 模组处于 Deep-sleep 模式时,Deep-sleep 模式下的平均电流约为 5 uA。