侵权投诉

ESP32深度睡眠的教程

39度创意研究所 2019-12-11 17:48 次阅读

步骤1:所需的零件

ESP32深度睡眠的教程

在本教程中,我将使用以下部分,因此,如果您想自己尝试本教程,则需要以下内容:

任何ESP32开发板▶http://educ8s.tv/part/ESP32

A Firebeetle ESP32开发板▶http://educ8s.tv/part/FireBeetle

面包板▶http://educ8s.tv/part/LargeBreadboard

电线▶http://educ8s。电视/零件/电线

LED▶http://educ8s.tv/part/LEDs

万用表▶http://educ8s.tv/part/Multimeter

步骤2:在ESP32芯片内部

在ESP32芯片内部,我们可以找到两种处理方式内核,RAMROM存储器,WiFi模块,蓝牙模块,用于加密应用程序的硬件加速模块,RTC模块以及许多外围设备。在RTC模块内部,我们可以找到一个PMU(相量测量单元),它是一种小型且低功耗的32位协处理器以及8Kbs的RAM存储器。少量的内存非常有用,因为您很快就会发现。还要注意,即使ESP32芯片的RTC内存也比Arduino Uno的内存大4倍。

WiFi模块,处理内核和蓝牙模块需要大量电流才能运行。因此,如果我们想节省电量,则必须在不使用它们时将其禁用。这就是我们现在要做的。我们将把ESP32设置为Deep – Sleep模式,在该模式下,除RTC模块外,所有功能都将禁用。有轻度睡眠模式和深度睡眠模式。在深度睡眠模式下,ESP32功耗最低。 在深度睡眠模式下仅需要0.01 mAs的电流,这就是我们今天要尝试的原因。

步骤3:ESP32深度睡眠模式

在这种模式下,如前所述,所有功能均被禁用。 CPU核心,WiFI模块,蓝牙模块,外围设备等。连同CPU一样,芯片的主内存也被禁用,因此存储在内存中的所有内容都会永远丢失。处于深度睡眠模式时,唯一仍可以工作的模块是RTC模块,超低功耗协处理器及其内存!因此,如果将要在深度睡眠模式下生存的数据保存到RTC内存中,则在唤醒芯片后它们将保持完整。

有三种方法可以唤醒芯片。我们可以使用计时器,GPIO引脚或协处理器。

今天,我们将学习如何使用计时器在特定时间后唤醒芯片。让我们看一个示例。

步骤4:深度睡眠示例

我已将两个LED连接到此ESP32板。 ESP32开机时,黄色LED会亮三秒钟,然后进入深度睡眠模式3秒钟。唤醒后,它会点亮绿色指示灯3秒钟,然后返回睡眠状态。从现在开始,它只会闪烁绿色LED,因此该芯片记住这不是它第一次启动,因为我们正在使用RTC内存来存储整数值。

让我们快速看一下。在这个项目的代码。如您所见,代码非常简单。为了使ESP32进入深度睡眠模式,我们只需要两行代码。

esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);

esp_deep_sleep_start();

我们使用esp_sleep_enable_timer_wakeup函数启用计时器,输入以秒为单位的睡眠时间,然后调用esp_deep_sleep_start函数。而已!

#define uS_TO_S_FACTOR 1000000 /* Conversion factor for micro seconds to seconds */

#define TIME_TO_SLEEP 3 /* Time ESP32 will go to sleep (in seconds) */

RTC_DATA_ATTR int bootCount = 0;

尽管与执行代码有一点不同。当我们使用深度睡眠功能时,ESP32每次唤醒时,都会再次执行设置功能。从不调用循环函数。所有变量值都会丢失,除非我们使用此前缀将它们保存在RTC内存中。在此示例中,我将bootCount int变量保存到RTC内存中,以便程序知道它是否是第一次运行并打开正确的LED。像往常一样,您可以找到此示例附带的示例代码。

步骤5:功耗

现在让我们看看该板的功耗。 ESP32处于活动模式时,会从电池汲取约60mAs的电流。 ESP32处于深度睡眠模式时,它将消耗约19mAs的电流!这大大降低了电流消耗,但是该芯片的创建者声称在深度睡眠模式下需要0.01mA的电流。我们的设置有什么问题?

罪魁祸首是主板。我使用的是DOIT ESP32板,这是大约一年前上市的第一块ESP32板。电路板的设计并未针对功耗进行优化,因此,即使在深度睡眠模式下,它也需要大量电流。幸运的是,那里有设计更好的ESP32板。

例如,DFrobot的Firebeetle ESP32板设计得更好,当使用3.3V电源供电时,其深度睡眠电流仅为0.01mAs。如果我们使用之前使用的相同电池组为电路板供电,其输出约为4.8V,则可以看到在活动模式下的电流消耗为48mAs,而在深度睡眠模式下的电流仅为0.05mAs!印象深刻不是吗!如果使用3.3V电池或电源,我们可以进一步降低电路板的功耗。我将在以后的视频中尝试。在深度睡眠模式下,该板所需的0.05mAs电流是我在功能齐全的ESP32板(具有USB至串行驱动器,调节器和电池电路)中消耗的最低电流。

如果您发现任何板子都能比Firebeetle板子取得更好的效果,请在下面的评论栏中告诉我,我想尝试一下。

Firebeetle ESP32板子的功耗在深度睡眠模式非常低。如果使用4节AA充电电池供电,则每天需要大约1.44毫安时。因此,从理论上讲,如果将其置于深度睡眠模式,则这种具有2.500mAhs容量的移动电源可以为该板供电近5年!当然,我们将不时唤醒电路板以执行需要更多功率的任务,因此电池寿命将大大减少。

步骤6:深入研究睡眠错误

不幸的是,ESP32的软件和硬件尚未成熟。使用深度睡眠模式时,我尝试在两个ESP32板上都出现了一个软件或硬件错误。随机唤醒后,ESP32会进入睡眠状态,并且不会再次唤醒。此错误可能在几次唤醒后或100次之后发生。它只是随机的。

我发现的一个简单解决方案是在唤醒后和从RTC内存读取之前添加500ms的小延迟。这样,项目就可以正常工作,但是,当然,我们要付出的代价是减少了电池寿命,因为每次唤醒时芯片处于活动模式的时间要长500ms。我认为此错误将在不久的将来通过新的软件或硬件修复得到解决。

void setup(){

pinMode(GREEN_LED_PIN,OUTPUT);

pinMode(YELLOW_LED_PIN,OUTPUT);

delay(500);

if(bootCount == 0) //Run this only the first time

{

digitalWrite(YELLOW_LED_PIN,HIGH);

bootCount = bootCount+1;

}else

{

digitalWrite(GREEN_LED_PIN,HIGH);

}

delay(3000);

digitalWrite(GREEN_LED_PIN,LOW);

digitalWrite(YELLOW_LED_PIN,LOW);

esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);

esp_deep_sleep_start();

}

步骤7:最终想法

我已经在项目中使用了深度睡眠功能。您还记得几周前我发布的In-Paper电子书温度计吗?不更新时需要60mAs的电流。现在,使用芯片的深度睡眠功能,我设法将电流消耗降低到0.43mAs。因此,有了这种移动电源,我们现在的电池寿命估计约为3个月。很好,不是吗?

但是我认为还有很多改进的余地。我的电路中某处有小电流泄漏。如果我们可以减少它,我们可以使该项目用电池运行一年以上!我认为这太神奇了!我们现在有了一块功能非常强大的板,功耗非常低。最好的是,我们要做的就是利用这一点,只需使用两行代码!我将在以后的项目中大量使用此功能。

责任编辑:wv

收藏 人收藏
分享:

评论

相关推荐

ESP32 API编程手册免费下载

本文档的主要内容详细介绍的是ESP32 API编程手册免费下载
发表于 01-03 16:38 152次 阅读
ESP32 API编程手册免费下载

乐鑫2.4 GHz Wi-Fi 和双模蓝牙模组ESP32-WROVER-B

ESP32-WROVER-B模组分为两款,分别采用了 PCB 板载天线和 IPEX 天线,还新增了 4 MB SPI flash 和 8 MB...
发表于 12-30 10:59 372次 阅读
乐鑫2.4 GHz Wi-Fi 和双模蓝牙模组ESP32-WROVER-B

ESP32的入门指南

这个特殊的ESP32使用SSD1306库与OLED显示器进行通信。通过加载以下Arduino库并测试....
的头像 39度创意研究所 发表于 12-12 11:17 635次 阅读
ESP32的入门指南

Adafruit HUZZAH32-ESP32Feather的说明

是的,是您一直在等待的羽毛! HUZZAH32是我们基于ESP32的Feather,使用官方WROO....
的头像 39度创意研究所 发表于 11-27 16:33 1066次 阅读
Adafruit HUZZAH32-ESP32Feather的说明

如何用ESP32复制经典街机游戏

如果一切正常,只需连接VGA显示器,您就可以使用Snake了。
的头像 39度创意研究所 发表于 11-22 11:36 791次 阅读
如何用ESP32复制经典街机游戏

带超声波传感器的ESP32的制作

我们要检查4位显示屏上显示的距离。然后,我们擦除4个LED并使蜂鸣器静音。这种情况可用于许多应用程序....
的头像 39度创意研究所 发表于 11-20 09:39 916次 阅读
带超声波传感器的ESP32的制作

如何制作带OLED显示屏的ESP32 GPS追踪器

几秒钟后,GPS模块上的GNSS LED将开始闪烁,这意味着GPS信号被卫星锁定。现在,您还可以将位....
的头像 39度创意研究所 发表于 11-18 11:27 935次 阅读
如何制作带OLED显示屏的ESP32 GPS追踪器

ESP32内部隐藏的霍尔传感器

在循环中,我们到重新读取霍尔传感器的读取值。我们读取数据并打印测量结果。然后,我们检查读取的值是否小....
的头像 39度创意研究所 发表于 11-15 09:31 1351次 阅读
ESP32内部隐藏的霍尔传感器

如何将此ESP32 LORA模块用作发送方和接收方

发送SMS时,Arduino已断开连接,因此不再发送任何消息。
的头像 39度创意研究所 发表于 11-14 17:14 1025次 阅读
如何将此ESP32 LORA模块用作发送方和接收方

怎样用ESP32摄像头通过WiFi传输视频

打开浏览器,确保您的PC与ESP32 CAM连接到相同的网络,然后键入IP并单击流按钮,您将获得类似....
的头像 39度创意研究所 发表于 11-14 11:28 5673次 阅读
怎样用ESP32摄像头通过WiFi传输视频

ESP32组装和测试指南

仍然没有一个线索串行通讯上的调试消息。是时候详细进行 RTFM 了。
的头像 39度创意研究所 发表于 11-12 17:28 715次 阅读
ESP32组装和测试指南

带E32-433T LoRa模块的ESP32教程

我主要关注模式0和模式3。对于正常的LoRa使用,我保留模块处于模式0,并且要进行配置,我将其保持为....
的头像 39度创意研究所 发表于 11-12 11:12 912次 阅读
带E32-433T LoRa模块的ESP32教程

怎样使用UbiDots连接ESP32并发布多个传感器数据

强制门户网站是一个网页,向新连接的用户显示,然后才向他们授予对网络资源的更广泛访问权限。在这里,我们....
的头像 39度创意研究所 发表于 11-12 10:26 909次 阅读
怎样使用UbiDots连接ESP32并发布多个传感器数据

怎样将ESP32连接到物联网云

打开串行终端。您应该得到类似于上图的输出。请注意,我们得到两个代码:
的头像 39度创意研究所 发表于 11-06 11:44 1027次 阅读
怎样将ESP32连接到物联网云

怎样将ESP32处理器编程为ModbusTCPMaster

带符号-指示是否应将读取值视为带符号的编号。默认状态:True
的头像 39度创意研究所 发表于 11-05 16:50 844次 阅读
怎样将ESP32处理器编程为ModbusTCPMaster

如何使用单个ESP32构建简单的复古PC 和其他一些组件

我还按照此处的说明和示例进行操作,并使用示例代码SD_test.ino,可以在2 GB的microS....
的头像 39度创意研究所 发表于 11-04 17:50 770次 阅读
如何使用单个ESP32构建简单的复古PC 和其他一些组件

带RFID的ESP32访问控制

 在这里编写菜单。监视器显示所有选项,并等待发送数据。选择一个选项后,它将从读取的值中删除48,该值....
的头像 39度创意研究所 发表于 11-04 17:26 809次 阅读
带RFID的ESP32访问控制

如何使用连接到云的DHT11和ESP32监视房间或桌子的温度和湿度

单击“模块”,然后将图形添加到“模块1”和“模块2”。
的头像 39度创意研究所 发表于 11-04 17:14 896次 阅读
如何使用连接到云的DHT11和ESP32监视房间或桌子的温度和湿度

使用Telegram和ESP32实现自动化

打开电报并搜索botfather。选择带有蓝色标记的那个
的头像 39度创意研究所 发表于 10-21 10:39 1234次 阅读
使用Telegram和ESP32实现自动化

ESP32智能家居集线器的制作

智能家居中心该系统非常适合简单的家庭自动化和数据收集任务。它几乎可以用于任何事情,例如设置LED灯带....
的头像 39度创意研究所 发表于 10-18 11:46 1673次 阅读
ESP32智能家居集线器的制作

具有DHT22温湿度的TTGO ESP32 LoRa板的制作

我无法使LoRa32u4 II板正常工作,这让我很恼火。简而言之:概念验证有效,但是还有很多事情要做....
的头像 39度创意研究所 发表于 10-15 10:50 1016次 阅读
具有DHT22温湿度的TTGO ESP32 LoRa板的制作

唤醒ESP32的三种不同方法

要控制OLED显示,我们需要一个外部库。为此,我们将下载U8g2库。
的头像 39度创意研究所 发表于 10-12 11:00 2602次 阅读
唤醒ESP32的三种不同方法

如何使用ESP32和Bluetooth模块闪烁LED

在本教程中,将LED的阳极连接到ESP32的p21,LED的阴极连接到ESP32的GND
的头像 39度创意研究所 发表于 10-05 17:50 1467次 阅读
如何使用ESP32和Bluetooth模块闪烁LED

如何为ESP32项目选择彩色显示

如果您通读彩色显示器的数据表,可能会发现大多数彩色显示器都可以支持18位色深(每个RGB通道为6位)....
的头像 39度创意研究所 发表于 09-25 10:27 2153次 阅读
如何为ESP32项目选择彩色显示

怎样在ESP32中使用Bluetooth

 最终,这种方法不能替代正确实现的BLE库,但它可能足以完成一些项目,直到Arduino完全支持BL....
的头像 39度创意研究所 发表于 09-23 14:39 3842次 阅读
怎样在ESP32中使用Bluetooth

一个基于ESP32 Arduino的开源电子血压计项目

我们有两套放气装置,其中一个是快速放气阀,处于常闭状态,仅在测量结束后快速放气;另一个是缓慢放气阀,....
的头像 丫丫119 发表于 09-19 11:04 2331次 阅读
一个基于ESP32 Arduino的开源电子血压计项目

基于ESP32的小型机器人制作图解

 在这里,我附上了可以根据自己的目的进行修改的代码,完全归功于randomnerdtutorials....
的头像 39度创意研究所 发表于 09-09 15:42 1658次 阅读
基于ESP32的小型机器人制作图解

物联网播种机DIY图解

总的来说,我认为Plonty喜欢他的新发现! (不是吗?)我很高兴设计这个播种机,我希望你喜欢这个骑....
的头像 39度创意研究所 发表于 09-09 15:35 730次 阅读
物联网播种机DIY图解

电子血压计的开源项目,从设计到实践过程?

一个电子血压计的开源项目,如下: [table] [tr][td]组成[/td][td]型号[/td][td]注释[/td][/tr] [tr][td]单片机[/td][td]E...
发表于 09-09 10:22 779次 阅读
电子血压计的开源项目,从设计到实践过程?

如何设置和使用WeMosTTgoESP32UnoD1R32

 启动和运行WeMos D1 R32的第一步是将libarys安装到arduino IDE上。打开I....
的头像 39度创意研究所 发表于 09-02 09:29 1285次 阅读
如何设置和使用WeMosTTgoESP32UnoD1R32

如何使用ESP32和ATtiny861制作NES模拟器游戏控制台

 NES模拟器不是ESP32唯一有趣的事情。例如。你可以用它构建一个微型python控制台。您需要更....
的头像 39度创意研究所 发表于 08-27 14:20 2002次 阅读
如何使用ESP32和ATtiny861制作NES模拟器游戏控制台

如何使用ESP32板的蓝牙功能获取小米温湿度监测器的数据

现在我们知道如何从这个传感器无线获取数据,我们可以建立一个完整的电池供电气象站。由于这款小米设备是商....
的头像 39度创意研究所 发表于 08-26 10:23 4032次 阅读
如何使用ESP32板的蓝牙功能获取小米温湿度监测器的数据

如何制作ESP32电容式触摸输入器

 意味着loop()将在此时等待,直到来自InterruptService()的信号量到达。当信号量....
的头像 39度创意研究所 发表于 08-22 09:49 1645次 阅读
如何制作ESP32电容式触摸输入器

分享ESP-32S模块资料!

ESP-3212 WiFi 模块模块核心处理器 ESP32提供了一套完整的802.11 b/g/n/e/i 无线局域网(WLAN)和蓝牙4.2解决方案,...
发表于 08-22 04:35 484次 阅读
分享ESP-32S模块资料!

怎样用ESP32主板制作一个带有3.5英寸显示屏的网络收音机设备

 这个项目非常简单。 我想 一个简单的Internet广播项目框架。现在项目的第一个版本已准备好,我....
的头像 39度创意研究所 发表于 08-21 11:35 4437次 阅读
怎样用ESP32主板制作一个带有3.5英寸显示屏的网络收音机设备

从0到1学习M5stack系列教程(二)屏幕与按键

  上一节介绍了滚动的文字实现,这一节将继续带着大家了解M5Stack的屏幕与按键 先来看一下按键的几个函数,M5Sta...
发表于 08-15 18:18 683次 阅读
从0到1学习M5stack系列教程(二)屏幕与按键

ESP8266应该升级到ESP32吗

Espressif用于ESP8266模块的低成本ESP8266EX是一款具有完整TCP/IP堆栈和微....
的头像 39度创意研究所 发表于 08-02 17:48 4502次 阅读
ESP8266应该升级到ESP32吗

怎样用ArduinoIDE将项目从ESP8266升级到ESP32

这是两个芯片的简要比较。不同的颜色用于说明相应的引脚位置。
的头像 39度创意研究所 发表于 08-02 17:42 1239次 阅读
怎样用ArduinoIDE将项目从ESP8266升级到ESP32

如何使用ArduinoIDE设置ESP32

AmbiMate传感器模块MS4系列集成了一套传感器,用于楼宇自动化和连接家庭应用到PCB组件上。它....
的头像 39度创意研究所 发表于 07-30 11:28 2695次 阅读
如何使用ArduinoIDE设置ESP32

怎样用ESP32创建一个Web服务器 并将其连接到Wi-Fi获取IP地址

客户端与客户端之间的连接webserver是使用HTTP协议建立的。 HTTP协议如下所示:HTTP....
的头像 39度创意研究所 发表于 07-26 09:15 1342次 阅读
怎样用ESP32创建一个Web服务器 并将其连接到Wi-Fi获取IP地址

如何用ESP32连续发送数据问题?

我是拿ESP32向服务器抛大数据,固件是ESP-32S AT固件。每次操作要发送一百多KB,需要很高的速度,波特率设置是921600...
发表于 07-18 00:22 1153次 阅读
如何用ESP32连续发送数据问题?

ESP32点亮一盏LED灯的程序免费下载

  我还记得当初学51单片机导师与我们说,当你点亮一盏灯,那么你已经学会了80%,就当个笑话吧,但也....
发表于 04-18 17:27 177次 阅读
ESP32点亮一盏LED灯的程序免费下载

EZI2C从站仅发送几个值然后停止

嘿,伙计们。 我已经成功地把我的ESP32设置为一个主设备,我试图从一个连接到我的PSoC的传感器获得一个值,所以我的PSo...
发表于 09-19 14:18 425次 阅读
EZI2C从站仅发送几个值然后停止

BPI-BIT,像搭积木一样做编程的开发板(限时免费领取)

最近朋友圈流传一张某位程序员7岁儿子用电脑点灯的照片,当时我很是震惊! 才7岁大,居然学会了我大一的课程,出于好奇,我私...
发表于 08-29 12:33 1504次 阅读
BPI-BIT,像搭积木一样做编程的开发板(限时免费领取)

ESP-IDF使用:请问怎么样能测试esp32的spp example

刚入手esp32s,官方集成开发环境使用的是老版本idf,下载了3.0.3版本idf并将idf-path做了修改,尝试make example,出现以下提示。...
发表于 08-17 09:22 2635次 阅读
ESP-IDF使用:请问怎么样能测试esp32的spp example

请教ESP32模块相关问题

一定有用过的大佬。。。 请问esp32模块wifi模式和蓝牙模式能共存么? 这个模块可以支持最多多少设备稳定连接? ...
发表于 08-06 10:48 1037次 阅读
请教ESP32模块相关问题

ESP32教程——Windows开发环境搭建.pdf下载

ESP32教程——Windows开发环境搭建.pdf
发表于 04-14 10:41 616次 阅读
ESP32教程——Windows开发环境搭建.pdf下载

ESP32硬件设计指南

ESP32 芯片将 801.11 b/g/n Wi-Fi 和 BLE 合二为一,搭配双核 32 位 ....
的头像 工程师精选 发表于 03-08 14:52 3028次 阅读
ESP32硬件设计指南

ESP32硬件设计资料下载

ESP32 芯片将 801.11 b/g/n Wi-Fi 和 BLE 合二为一,搭配双核 32 位 Tensilica L108 MCU,最高主频可达 250MHz,...
发表于 03-08 14:35 2406次 阅读
ESP32硬件设计资料下载