|
ESP32是一款最受欢迎的基于Wi-Fi的微控制器模块之一,它是许多便携式物联网应用的热门选择。它是一个强大的控制器,支持双核编程,还具有内置的低功耗蓝牙 (BLE) ,使其成为 iBeacon设备、GPS跟踪器等便携式应用的理想选择。 然而,在这些电池供电的应用中,主要关注的是备用电池。可以通过对微控制器单元进行更智能的控制来增加这种备用电池的使用时间,就像可以在理想条件下在睡眠模式下对ESP32 进行编程以延长设备的备用电池使用时间一样。
在本篇文章中,我们将测量广受欢迎的Wi-Fi和蓝牙微控制器单元ESP32在正常工作模式和深度睡眠模式下的电流消耗。此外,我们将测试差异并检查如何 ESP32置于深度睡眠模式。
设计需求 为此,我们将使用Espressif公司的基于ESP32的Devkit V4.0,它包含一个USB转UART桥接器以及其他ESP32引出线以便于连接。编程使用Arduino IDE 完成。
本项目的要求如下—— 1. 只需按一下按钮,它就会进入深度睡眠模式。 2. 按下另一个按钮,它将从深度睡眠模式中唤醒。 3. 为了确定ESP32的状态,LED会以1秒的开启时间闪烁。在睡眠模式期间,它将熄灭。
所需的组件 ● ESP32 Devkit开发板 ● LED指示灯 ● 轻触开关 ● 电阻 ● 面包板 ● 连接导线
ESP32睡眠模式电路图 使用按钮使ESP32进入睡眠状态的示意原理图如下所示。
原理图非常简单。它有两个按钮。睡眠按钮将使ESP32进入深度睡眠模式,另一个按钮用于将ESP32从睡眠模式唤醒。两个按钮分别连接在PIN 16和PIN 33。两个按钮在按下时都配置为低电平有效,因此需要连接上拉电阻。为了检查ESP 32是处于睡眠模式还是正常工作状态模式,LED连接到IO引脚 4。
ESP32睡眠模式概览 ESP32有多种不同的功耗模式,即工作模式、调制解调器睡眠模式、浅睡眠模式、深度睡眠模式和休眠模式。
在正常工作状态下,ESP32 以工作(Active)模式运行。在ESP32工作模式下,CPU、WiFi/BT硬件、RTC内存和RTC外设、ULP协处理器都被激活并根据工作负载工作。然而,在不同的电源模式下,将关闭一个或多个外设。要检查不同的电源模式操作,请按照下表- 硬件 | 活动模式 | 调制解调器睡眠模式 | 浅睡眠模式 | 深度睡眠模式 | 休眠模式 | CPU | 打开 | 打开 | 暂停 | 关闭 | 关闭 | WiFi/BT | 打开 | 关闭 | 关闭 | 关闭 | 关闭 | RTC和RTC外设 | 打开 | 打开 | 打开 | 打开 | 关闭 | ULP-Co处理器 | 打开 | 打开 | 打开 | 关闭 | 关闭 |
正如我们在上表中看到的,在ESP32深度睡眠模式下,通常称为ULP传感器监控模式 - CPU、WiFi/BT、RTC 内存和外设、ULP 协处理器都被关闭。仅开启RTC内存和RTC 外设。
在唤醒情况时,ESP32需要收到唤醒源的通知,该唤醒源会将ESP32从深度睡眠模式唤醒。但是,由于RTC外设已开启,ESP32可以通过启用RTC的GPIO唤醒。它可以通过外部唤醒中断引脚唤醒或使用定时器唤醒ESP32。在本文中,我们在引脚33上使用ext0唤醒。 |