玩转 ESP32 + Arduino (十七) deepsleep深睡眠模式

玩转 ESP32 + Arduino (十七) deepsleep深睡眠模式,第1张

ESP32 有强大的超低功耗处理器 (ULP co-processor)

ULP 协处理器是一个功耗极低的协处理器设备,无论主 CPU 是处于正常运行模式还是 Deep-sleep 模式,ULP 协处理器都可以独立运行。超低功耗协处理器的补充使得 ESP32 能够胜任一些对低功耗要求较高的应用场合。

ULP 协处理器的主要特性有:

采用 8 MHz 频率和 8 KB 内存

内建 ADC 和 I2C 接口

支持正常模式和 Deep-sleep 模式

可唤醒主 CPU 或向主 CPU 发送中断

能够访问主 CPU 的外围设备、内部传感器及 RTC 寄存器

鉴于以上的特性,ULP 协处理器能够在消耗较低电流的情况下,完成 ADC 采样,进行 I2C Sensor 的读写,驱动 RTC GPIO 口动作,可以在某些超低功耗场景中完全替代主 CPU。

参考文档: https://blog.csdn.net/espressif/article/details/79131076

可以看到ESP32在深睡眠模式下可以启动或停止ULP协处理器

这是一个ESP-IDF的原生方法, 如果我们想用, 需要引入头文件

注意: #include <esp_deep_sleep.h>即将被弃用, 所以不要再用这个头文件了

返回: 被唤醒原因码:

ESP32有8KB的RTC存储器

在RTC memory里的变量不会因为deepsleep被清除, 创建方法:

注意, RTC memory会被硬件reset清除

参数:

例子:

首先,并不是每个GPIO都是RTC_GPIO, 详见下表

注意: 我们填写的GPIO引脚号是真正的引脚号 不是其RTC_GPIO编号

思考一个问题, 如果我们有8个GPIO引脚想唤醒ESP32, 难道要用上一节的方法 *** 作8遍吗?

当然不是, 我们可以直接 *** 作引脚集合, (我们用一个mask片选想 *** 作的引脚,然后这些引脚都具有了唤醒ESP32的能力)

我们可以设置这些引脚是 每个都能触发(每个葫芦娃都能自己去救爷爷), 还是一起共同发力才能触发(集齐七龙珠??)

参数:

如: 我们想让 32 33 35 39触发, 这样计算mask

注意: 我们不要使用 37 38

值得注意的是,

这个要做一个专门的ULP专题

首先真正停止Arduino的程序执行是不可能的,一般是使用一个死循环的方式让程序不再执行下去。最基本的方法是用while循环,比如:

while(1){

}

这样当程序执行到这一段代码后,就会在里面死循环,不再跳出来。

如果需要跳出也可以在while条件里面增加跳出的判断,比如可以增加从串口到数据后跳出,某一个信号脚被按下跳出等等

int sensorPin1 = A0 // 传感器A

int sensorPin2 = A1 // 传感器B

int ledPin = 13 // LED

int MPin1 = 9 // 电机1

int MPin2 = 10 // 电机2

int sensorValue1 = 0 //

int sensorValue2 = 0; //

void setup() {

pinMode(sensorPin1, INPUT)

pinMode(sensorPin2, INPUT)

pinMode(ledPin, OUTPUT)

pinMode(MPin1, OUTPUT)

pinMode(MPin2, OUTPUT)

}

void loop() {

sensorValue1 = analogRead(sensorPin1)

sensorValue2 = analogRead(sensorPin2)

if (sensorValue1 == sensorValue2) {

digitalWrite(ledPin, HIGH)

digitalWrite(MPin1, LOW)

digitalWrite(MPin2, LOW)

}

if (sensorValue1 <sensorValue2) {

digitalWrite(ledPin, LOW)

digitalWrite(MPin1, LOW)

digitalWrite(MPin2, HIGH)

}

if (sensorValue1 >sensorValue2) {

digitalWrite(ledPin, LOW)

digitalWrite(MPin1, HIGH)

digitalWrite(MPin2, LOW)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11538295.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存