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
    +关注

    关注

    24

    文章

    1084

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    #ESP32S3野牛小智

    ESP32
    丙丁先生
    发布于 :2025年11月25日 08:34:06

    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 1295次阅读
    乐鑫<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 461次阅读
    <b class='flag-5'>ESP32</b>-C3赋能物联网设备,开启产品智能化,乐鑫代理商飞睿科技

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

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

    ESP32-S3的MicroPython开发环境搭建

    本文通过搭建Thonny IDE开发环境,了解了如何给ESP32-S3烧录MircoPython固件和MircoPython应用程序。
    的头像 发表于 09-11 16:02 946次阅读
    <b class='flag-5'>ESP32</b>-S3的MicroPython开发环境搭建

    专为 ESP32-P4C5 核心板打造的高效开发利器

    SDK+详尽文档,新手秒上手,高手效率翻倍!双芯片设计,释放澎湃性能ESP32-P4C5核心板采用乐鑫科技的ESP32-P4+ESP32-C5双芯架构!·ESP32-P
    的头像 发表于 08-11 18:19 924次阅读
    专为 <b class='flag-5'>ESP32</b>-P4C5 核心板打造的高效开发利器

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

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

    ESP32开发板元件资料

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

    乐鑫ESP32-C5全面进入量产

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

    零知开源——ESP32语音交互系统(AI小智)开发教程

    小智AI聊天机器人是一个基于嵌入式硬件与人工智能技术深度融合的智能交互系统。该项目以ESP32开发板为核心,结合语音唤醒、自然语言处理、音频解码播放及图形化交互界面四大核心模块,实现人机交互功能
    的头像 发表于 03-29 15:33 1w次阅读
    零知开源——<b class='flag-5'>ESP32</b>语音交互系统(AI小智)开发教程

    ESP32运行网页服务器 (Web-Server)-入门篇

    什么是ESP32WebServer?ESP32WebServer是在ESP32微控制器上运行的一个嵌入式网页服务器。它能够处理HTTP请求并作出响应,使用户可以通过网络浏览器与设备进行通讯和交互
    的头像 发表于 03-09 14:24 6504次阅读
    <b class='flag-5'>ESP32</b>运行网页服务器 (Web-Server)-入门篇

    STM32和ESP32应该学哪个

    STM32 和 ESP32,哪个更适合我们学习? 这两个虽然都是单片机,但是各自的应用领域不一样,不存在谁取代谁的关系。 STM32 历史悠久,产品线非常的丰富,应用领域涉及医疗、汽车、工业自动化
    的头像 发表于 02-18 09:52 1123次阅读

    esp32如何接入豆包

    要在 ESP32 上接入豆包工具,本质上是让 ESP32 设备与豆包的 API 进行通信,以获取相关服务
    的头像 发表于 02-05 13:40 2859次阅读
    <b class='flag-5'>esp32</b>如何接入豆包