收藏

micropython esp32 睡眠与唤醒

分类: 基础知识篇 >> ESP32系统相关 发布于 2024-05-16 359次阅读0点赞0收藏

最近想要研究一下esp32的睡眠与唤醒,原因很简单,看图:

如图可见,light-sleep的电流只有平常工作的150分之一!!!,而deep-sleep都几乎可以跟关机持平了,如果是采用电池的项目又对续航有要求的话,那么对睡眠的需求可以说是非常高了,不过前提是工作时有长时间的休眠等待状态,一直在跑的不用考虑这个功能了。

求人不如求己,翻遍全网找了方法并且实验成功,上代码:

#by:jd3096 20210722
import machine,esp32
from machine import Pin
import time

wake1 = Pin(14, mode = Pin.IN)
#level parameter can be: esp32.WAKEUP_ANY_HIGH or esp32.WAKEUP_ALL_LOW
esp32.wake_on_ext0(pin = wake1, level = esp32.WAKEUP_ALL_LOW)

print('Im awake. Going to sleep in 2 seconds')
time.sleep(2)
print('Going to sleep now')
time.sleep_ms(100)     #这里不加延迟的话打印到一半就睡了。。。真羡慕esp32的睡眠速度
machine.lightsleep()        #OR machine.deepsleep()

简单讲解:
1.睡眠 分为 lightsleep 和 deepsleep 层级不一样
2.唤醒方式 ext0 ext1环境 RTC唤醒 WLAN唤醒
ext0 ext1的区别是 ext0是单pin ext1是多pin 而且这个pin是有要求的不是随便一个Pin都可以,多试几个吧
3.可以获取唤醒原因,有5个常量表示

VIP
购买
建议
意见
联系
客服
在线咨询

您可以与在线客服进行沟通获得帮助

工作日:8:00~22:00节假日:9:00~20:00

微信号: mpyos01

Q Q号: 1401211620

免费
福利
0.020501s