MicroPython ESP32深度唤醒功能

MicroPython ESP32 深度唤醒功能


  • 📌Micropython esp32官方文档介绍:https://docs.micropython.org/en/latest/esp32/quickref.html#deep-sleep-mode
  • 🌿使用ESP32S3开发板测试。
  • 🔖本示例基于Thonny平台开发。
  • ✨所使用的固件版本:MicroPython v1.19.1
'''
程序运行后,esp32s3进入深度睡眠模式,通过按下板子上的boot0按键唤醒,重启设备。
原因码 对应原因 说明
0 ESP_SLEEP_WAKEUP_UNDEFINED 没有定义被唤醒的原因(第一次启动时会报)
2 ESP_SLEEP_WAKEUP_EXT0 被RTC_GPIO唤醒
3 ESP_SLEEP_WAKEUP_EXT1 被RTC_CNTL引脚集合的变化唤醒
4 ESP_SLEEP_WAKEUP_TIMER 被ESP的定时器唤醒
5 ESP_SLEEP_WAKEUP_TOUCHPAD 被触摸唤醒
6 ESP_SLEEP_WAKEUP_ULP 被ULP唤醒
7 ESP_SLEEP_WAKEUP_GPIO 被GPIO唤醒(仅限轻睡眠模式light sleep)
8 ESP_SLEEP_WAKEUP_UART 被串口唤醒(仅限轻睡眠模式light sleep)
'''
import esp32, machine ,time
from machine import  Pin
from machine import RTC
# from machine import TouchPad # esp32s3固件不带
# 检测设备是否从深度睡眠中唤醒
if machine.reset_cause() == machine.DEEPSLEEP_RESET:
    print('woke from a deep sleep')
'''
  HARD_RESET -- 2
  PWRON_RESET -- 1
  WDT_RESET -- 3
  DEEPSLEEP_RESET -- 4
  SOFT_RESET -- 5
'''
rtc = RTC()
rtc.datetime((2023, 11, 6, 0, 16, 35, 15, 0)) # 设置时间(年,月,日,星期,时,分,秒,微秒)
                                             # 其中星期使用0-6表示星期一至星期日。
print('time:',rtc.datetime()) # 获取当前日期和时间
pin =Pin(0, Pin.IN, Pin.PULL_UP)# ESP32S3 boot0按键
esp32.wake_on_ext0(pin, level = esp32.WAKEUP_ALL_LOW)
'''
# ESP32S3固件不带TouchPad模块
touch_pin = TouchPad(Pin(4))# 配置触摸传感器引脚
touch_pin.config(500)  # 设置触摸深度唤醒阈值为500
esp32.wake_on_touch(True)# 配置唤醒源为触摸传感器
'''
#level = esp32.WAKEUP_ALL_LOW  全都置低时触发唤醒GPIO32 - GPIO39
#level = esp32.WAKEUP_ANY_HIGH 任意置高时触发唤醒
wake_reason_code = machine.wake_reason()
'''
PIN_WAKE -- 2
  EXT0_WAKE -- 2
  EXT1_WAKE -- 3
  TIMER_WAKE -- 4
  TOUCHPAD_WAKE -- 5
  ULP_WAKE -- 6
'''
print("Wake Reason: ", wake_reason_code)

print('进入深度睡眠~~~')
#time.sleep(3)
machine.deepsleep() # 不带参数则是一直处于深度睡眠状态,一直到中断唤醒
# machine.ligthsleep() # 系统会暂停运行,直到有中断信号触发系统唤醒
#machine.deepsleep(10000)# 带参数则是定时唤醒

📓不同模式下功耗说明

  • 📋根据ESP32技术规格数上描述,ESP32 支持 5 种预设功耗模式:
    在这里插入图片描述
    • Active 模式
      – CPU 的工作时钟为 XTAL_DIV_N (40 MHz/26 MHz) 或 PLL (80 MHz/160 MHz/240 MHz)。
      – 芯片可以接收、发射或监听信号。
    • Modem-sleep 模式
      – CPU 可以工作,时钟可以配置。
      – Wi-Fi /蓝牙基带受时钟门限控制或关闭,射频模块关闭。
      – PLL 为 80 MHz 时,电流消耗:∼30 mA。
      – XTAL 为 2 MHz 时,电流消耗:∼3 mA。
      – 即刻唤醒。
  • • Light-sleep 模式
    – 内部 8 MHz 振荡器、40 MHz 高速晶振、PLL 及射频模块均禁用。
    – 数字内核时钟受门限限制,CPU 暂停工作。
    – ULP 协处理器和触摸控制器可以周期性触发,对传感器进行监测。
    – 电流消耗:∼ 800 µA。
    – 唤醒延迟:低于 1 ms。
  • • Deep-sleep 模式
    – 内部 8 MHz 振荡器、40 MHz 高速晶振、PLL 及射频模块均禁用。
    – 数字内核断电,CPU 内容丢失。
    – RTC 内核的供电电压降至 0.7V。
    – 8 x 32 位数据保存在通用保留寄存器中。
    – RTC 内存和快速 RTC 内存可以保持。
    – 电流消耗:∼ 6.5 µA。
    – 唤醒延迟:低于 1 ms。
    – 推荐用于一些非频繁连接 Wi-Fi /蓝牙的超低功耗应用场景。
  • • 休眠模式
    – 内部 8 MHz 振荡器、40 MHz 高速晶振、PLL 及射频模块均禁用。
    – 数字内核断电,CPU 内容丢失。
    – RTC 外设域断电。
    – RTC 内核的供电电压降至 0.7V。
    – 8 x 32 位数据保存在通用保留寄存器中。
    – RTC 内存和快速 RTC 内存断电。
    – 电流消耗:∼ 4.5 µA。
    – 唤醒源:仅支持 RTC 计时器。
    – 唤醒延迟:低于 1 ms。
    – 推荐用于一些非频繁连接 Wi-Fi /蓝牙的超低功耗应用场景。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值