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)# 带参数则是定时唤醒

你可能感兴趣的:(#,MicroPython,for,ESP32,MicroPython,esp32)