0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ESP32深度睡眠的教程

454398 来源:网络整理 作者:网络整理 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
    +关注

    关注

    26

    文章

    1222

    浏览量

    22308
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    乐鑫科技新品ESP32-H4亮点速递!

    近期,乐鑫科技新品发布节奏持续加快。作为乐鑫科技一级代理商,启明云端为您带来最新芯片产品ESP32-H4的详细解读。ESP32-H4隶属于乐鑫科技ESP32-H系列,在低功耗物联网应用领域展现出显著
    的头像 发表于 04-16 18:05 235次阅读
    乐鑫科技新品<b class='flag-5'>ESP32</b>-H4亮点速递!

    ESP32Cx-TINY系列立创开源啦!

    28×69mm,一个U盘的面积,覆盖ESP32-C2/C3/C5/C61四款芯片,全系列MIT协议开源。启明TINY工作室带来了C系列乐鑫口袋开发板家族。我们为什么做TINY系列我们的初衷其实很简单
    的头像 发表于 03-30 18:15 349次阅读
    <b class='flag-5'>ESP32</b>Cx-TINY系列立创开源啦!

    ESP32/ESP8266开发板单向多对一ESP-NOW无线通信

    本实验通过ESP-NOW无线通信协议实现多个ESP32/ESP 8266开发板向ESP32开发板发送数据。例如可以应用于从多个远程传感器上收集数据。
    的头像 发表于 03-30 10:14 160次阅读
    <b class='flag-5'>ESP32</b>/<b class='flag-5'>ESP</b>8266开发板单向多对一<b class='flag-5'>ESP</b>-NOW无线通信

    ESP32开发板单向点对点ESP-NOW无线通信

    本例程通过两个ESP32开发板实现单向点对点ESP-NOW无线通信,一个ESP32开发板作为Sender发送方,另一个开发板作为Receiver接收方接收发送方的数据。
    的头像 发表于 03-19 09:21 284次阅读
    <b class='flag-5'>ESP32</b>开发板单向点对点<b class='flag-5'>ESP</b>-NOW无线通信

    ESP32/ESP8266开发板单向一对多ESP-NOW无线通信

    通过ESP-NOW无线通信协议实现ESP32开发板向多个ESP32/ESP 8266开发板发送数据。
    的头像 发表于 03-13 09:23 271次阅读
    <b class='flag-5'>ESP32</b>/<b class='flag-5'>ESP</b>8266开发板单向一对多<b class='flag-5'>ESP</b>-NOW无线通信

    ESP32 Wi-Fi 控制 LED 灯的原理

    在智能家居、物联网设备中,用手机通过Wi-Fi控制灯光、风扇或插座,已经非常普遍。而在嵌入式开发中,ESP32是最常用的Wi-Fi模块之一。本文将带你系统理解:ESP32是如何通过Wi-Fi实现远程
    的头像 发表于 01-09 19:04 549次阅读
    <b class='flag-5'>ESP32</b> Wi-Fi 控制 LED 灯的原理

    ESP32蓝牙驱动MAX98357对音频音乐播放

    本文介绍了MAX98357音频模块的基本特性,并利用ESP32的蓝牙功能程序驱动此模块,最后用手机蓝牙连接ESP32播放手机音乐
    的头像 发表于 12-19 19:55 3141次阅读
    <b class='flag-5'>ESP32</b>蓝牙驱动MAX98357对音频音乐播放

    VSCode + ESP-IDF环境下给ESP32-S3项目添加头文件

    VSCode + ESP-IDF环境下给ESP32-S3项目添加头文件
    的头像 发表于 11-28 07:27 3036次阅读

    ESP32­WROOM­32 技术规格书

    电子发烧友网站提供《ESP32­WROOM­32 技术规格书.pdf》资料免费下载
    发表于 11-11 17:27 0次下载

    乐鑫ESP32-C6和ESP32-C61究竟该如何选择?一文读懂本质区别

    乐鑫科技推出的ESP32-C6和ESP32-C61均支持Wi-Fi6,但定位不同。ESP32-C6是多协议枢纽,集成Wi-Fi6、蓝牙5、Zigbee和Thread,适合智能家居网关和Matter
    的头像 发表于 10-28 14:17 2598次阅读
    乐鑫<b class='flag-5'>ESP32</b>-C6和<b class='flag-5'>ESP32</b>-C61究竟该如何选择?一文读懂本质区别

    ESP32-C3赋能物联网设备,开启产品智能化,乐鑫代理商飞睿科技

    ESP32-C3是乐鑫科技推出的高性能物联网芯片,搭载RISC-V单核处理器,支持Wi-Fi/蓝牙5(LE)双模连接。该芯片具有多层安全防护机制(安全启动、Flash加密等)和超低功耗特性(深度睡眠
    的头像 发表于 10-27 10:53 971次阅读
    <b class='flag-5'>ESP32</b>-C3赋能物联网设备,开启产品智能化,乐鑫代理商飞睿科技

    ESP32-C3赋能物联网设备,开启产品智能化,乐鑫代理商飞睿科技

    ESP32-C3是乐鑫科技推出的高性能物联网芯片,搭载RISC-V单核处理器,支持Wi-Fi/蓝牙5(LE)双模连接。该芯片具有多层安全防护机制(安全启动、Flash加密等)和超低功耗特性(深度睡眠
    的头像 发表于 10-27 10:46 774次阅读

    ESP32-运行网页服务器(Web Server)-实用篇

    在前一篇文章《ESP32-运行网页服务器(WebServer)-入门篇》,我们介绍了ESP32运行网页服务器(WebServer)的原理,然后我们基于ESP32实现了一个demo代码;看到很多同学都留言发表了自己的看法,有很多同
    的头像 发表于 07-28 18:05 4017次阅读
    <b class='flag-5'>ESP32</b>-运行网页服务器(Web Server)-实用篇

    ESP32开发板元件资料

    ESP32开发板元件
    发表于 07-21 14:47 17次下载

    乐鑫ESP32-C5全面进入量产

    乐鑫信息科技 (688018.SH) 宣布,ESP32-C5 现已全面进入量产。
    的头像 发表于 05-06 16:50 1600次阅读