干货!esp8266+ds3231低功耗解决方案,在特定时间唤醒

news2024/11/26 0:47:40

最近首次接触esp8266,也是第一次接触硬件,在一个墨水屏日历项目上遇到了低功耗问题,特此记录。
此墨水屏日历不需要一直处于启动状态,我希望它每几小时或者每天启动一次即可。

解决方案 1:仅使用内部 RTC

通过将GPIO16引脚与RST引脚连接,在内部使用ESP.deepSleep(微秒)进行倒计时唤醒,此方案有个很大的问题,就是8266内部的RTC非常不准确,受环境温度影响较大,每小时可能会偏差几分钟,同时,由于硬件限制,其最大只支持4294967295us,约 ~71 分钟左右,无法直接设置到预期时间再唤醒。

解决方案2:定期唤醒 MCU 并检查外部 RTC

通过外接ds3231高精度时钟来对时间进行精确控制,此方案需要频繁启动设备并读取外部RTC的时间(如每10分钟),时间未到则继续休眠,不是最优解

解决方案 3:在外部 RTC 上设置闹钟以唤醒 MCU

通过外接ds3231,并使用其闹钟功能唤醒MCU,但是在直接链接其SQW引脚到MUC的RST引脚上后发现,无法唤醒(中断也试过,在进入deepsleep模式后无法响应中断)
在阅读了这个页面Deep sleep wake ESP8266 with DS3231 RTC alarm后,我找到了答案
需要制作这样一个单稳态电路,小白看了也不要怕,只要认真看一看电路你也能做出来的
在这里插入图片描述
某宝下单:在这里插入图片描述
焊接,就得到了它:
在这里插入图片描述
根据电路图将引脚连接好后,测试,成功。
测试代码:
完善中

因此我可以通过设置ds3231的闹钟,然后进入deepsleep,时间到达后,唤醒设备,继续重复运行。


美中不足,继续优化

但是在进入deepsleep时,ds3231依然运行,这也是耗电的一部分,我需要将vcc引脚连接到GPIO上,deepsleep时将ds3231的外部供电关闭,以达到最佳低功耗效果。

但是当我兴奋的改完代码->编译->上传->运行时发现,在ds3231断电后,单靠纽扣电池是无法触发闹钟唤醒设备的

幸运的是,我又看到了这两篇文章:
DS3231 - No Alarm when powered Off. Why?
Using a $1 DS3231 Real-time Clock Module with Arduino

将ds3231的上拉电阻移除,即可在纽扣电池供电时也能触发闹钟

在这里插入图片描述
我只移除了图片中1的上拉电阻组,如果你想实现完全将功耗降到最低,可以将2(led)3(电池充电电阻)一同拆下。
别忘了,还需要在SQW引脚接一个10K上拉电阻(就是将一个10K电阻一头接SQW,一头接MCU供电的VCC)
或者可以这样修改单模态电路:在这里插入图片描述
这里的10K电阻在我购买的配件里正好有,接上即可

现在我可以实现在任意时间点唤醒,最长可以一个月。
此时就基本完成了。看一下我的项目运行日志:

2023-08-08 07:41:13
设备进入深度休眠,下次唤醒时间:2023-08-08 18:00:301691488830)
logTag:屏幕内容更新完成
2023-08-08 07:40:44
更新屏幕
2023-08-08 07:40:35
设备上线:{ "wakeupType": 2, "temperature": 29.75, "unixtime": 1691451635, "time": "2023-8-8 7:40:42", "lastGetdataTime": 1691424064 }

2023-08-08 00:01:13
设备进入深度休眠,下次唤醒时间:2023-08-08 07:40:3016914516302023-08-08 00:00:48
logTag:屏幕内容更新完成
2023-08-08 00:00:44
更新屏幕
2023-08-08 00:00:35
设备上线:{ "wakeupType": 2, "temperature": 30.5, "unixtime": 1691424035, "time": "2023-8-8 0:0:42", "lastGetdataTime": 1691409664 }

2023-08-07 20:01:13
设备进入深度休眠,下次唤醒时间:2023-08-08 00:00:3016914240302023-08-07 20:00:48
logTag:屏幕内容更新完成

如果您有更好的解决方案,请留言共同学习吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/848141.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android监听设备亮灭屏广播(动态广播代码)

MainActivity中 public class MainActivity extends Activity {private WakeAndLockReceiver wakeAndLockReceiver;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//注册亮屏和息…

强化学习研究 PG

由于一些原因, 需要学习一下强化学习。用这篇博客来学习吧, 用的资料是李宏毅老师的强化学习课程。 深度强化学习(DRL)-李宏毅1-8课(全)_哔哩哔哩_bilibili 这篇文章的目的是看懂公式, 毕竟这是我的弱中弱。 强化…

想要实现高效数据复制?Paxos并不总是最佳选择!

数据复制典型的算法就是Paxo和Raft。 1 分片元数据的存储 分布式存储系统中,收到客户端请求后,承担路由功能的节点: 先访问分片元数据(简称元数据),确定分片对应节点然后才访问真正数据 元数据&#xf…

PoseiSwap 开启“Poseidon”池,治理体系或将全面开启

PoseiSwap曾在前不久分别以IDO、IEO的方式推出了POSE通证,但PoseiSwap DEX中并未向除Zepoch节点外的角色开放POSE资产的交易。而在前不久,PoseiSwap推出了全新的“Poseidon”池,该池将向所有用户开放,并允许用户自由的进行质押、交…

Python机器学习实战-建立随机森林模型预测肾脏疾病(附源码和实现效果)

实现功能 建立随机森林模型预测肾脏疾病 实现代码 import pandas as pd import warnings warnings.filterwarnings("ignore") pd.set_option(display.max_columns, 26)#读取数据 df pd.read_csv("E:\数据杂坛\datasets\kidney_disease.csv") dfpd.Data…

计算机组成原理-笔记-第二章

二、第二章——数据的表示和运算 1、进位制度(二进制、十进制) 2、BCD码(余三码、2421码) 编码方式 功能 好处 弊处 BCD码 将每个十进制数码转换为4位二进制码 精度高,适合直接用于数码管或LED等显示设备 编码…

docker 安装hive

记录一下使用docker快速搭建部署hive环境 目录 写在前面 步骤 安装docker 安装docker安装docker-compose配置docker国内镜像源(可选) 安装git & 配置github部署Hive docker-hive开始部署 使用Hive命令行收尾工作 安装vi、lrzsz关闭相关命令 END…

解锁Java迭代器:优雅遍历集合元素的秘密武器

解锁Java迭代器:优雅遍历集合元素的秘密武器 你是否曾想过,在Java的编程世界中,有没有一种方法可以优雅地遍历集合中的元素,而不需要关心底层实现?答案是肯定的,那就是——迭代器(Iterator&…

使用vite创建Vue/React前端项目,配置@别名和Sass样式,又快又方便

Vite官方网站:Vite | 下一代的前端工具链 Vite 并不是基于 Webpack 的,它有自己的开发服务器,利用浏览器中的原生 ES 模块。这种架构使得 Vite 比 Webpack 的开发服务器快了好几个数量级。Vite 采用 Rollup 进行构建,速度也更快…

【前端|CSS】5种经典布局

页面布局是样式开发的第一步,也是 CSS 最重要的功能之一。 常用的页面布局,其实就那么几个。下面我会介绍5个经典布局,只要掌握了它们,就能应对绝大多数常规页面。 这几个布局都是自适应的,自动适配桌面设备和移动设备…

【BASH】回顾与知识点梳理(十五)

【BASH】回顾与知识点梳理 十五 十五. 指令与文件的搜寻15.1 脚本文件名的搜寻which (寻找『执行档』) 15.2 文件档名的搜寻whereis (由一些特定的目录中寻找文件文件名)locate / updatedbfind与时间有关的选项与使用者或组名有关的参数与文件权限及名称有关的参数额外可进行的…

h5端获取定位

第三方api有腾讯、高德、百度&#xff0c;下面简述腾讯位置api 引入jweixin.js <script> // 方法一 把js文件放到自己服务器上 import wx from /static/jweixin-1.6.0.js;// 方法二 vue在生命周期中应用 mounted() {const oScript document.createElement("scrip…

TechTool Pro for mac(硬件监测和系统维护工具)

TechTool Pro 是为 Mac OS X 重新设计的全新工具程序&#xff0c;不但保留旧版原有的硬件侦测功能&#xff0c;还可检查系统上其他重要功能&#xff0c;如&#xff1a;网络连接&#xff0c;区域网络等。 TechTool Pro for mac随时监控和保护您的电脑&#xff0c;并可预设定期检…

C++入门(小白篇1)

前言&#xff1a; 最近想学一下一下C看了一些博客内容写的倒是很充实&#xff0c;但是&#xff0c;细节不到位&#xff0c;我是有Python基础的&#xff0c;所以学习来蛮快的&#xff0c;但是对于小白的话&#xff0c;有好多小细节大多数博客还是不够详细&#xff0c;由此我想写…

在golang中引入私有git仓库的pkg包?引入私有Git仓库的包:在Go语言项目中轻松实现

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to Golang Language.✨✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1…

CAD绘制法兰、添加光源、材质并渲染

首先绘制两个圆柱体&#xff0c;相互嵌套 在顶部继续绘制圆柱体&#xff0c;这是之后要挖掉的部分 在中央位置绘制正方形 用圆角工具&#xff1a; 将矩形的四个角分别处理&#xff0c;效果&#xff1a; 用拉伸工具 向上拉伸到和之前绘制的圆柱体高度齐平 绘制一个圆柱体&#…

性能优化必知必会

系统性能调优 分为四个层次 基础设施网络编解码分布式系统性能整体提升 一&#xff1a;基础设施优化 从提升单机进程的性能入手&#xff0c;包括高效的使用主机的CPU、内存、磁盘等硬件&#xff0c;通过提高并发编程提升吞吐量&#xff0c;根据业务特性选择合适的算法 01 …

将http协议升级为https协议——域名平台部分的设置

为远程群晖NAS的自定义域名免费申请SSL证书 文章目录 为远程群晖NAS的自定义域名免费申请SSL证书前言1. 向域名平台申请SSL证书1.1 购买“免费证书” 2. 进一步进行创建证书设置2.1 对证书的关联域名进行补充 3. 云解析DNS3.1 进行验证信息 前言 我们可以成功地将自己购买的域…

数据结构之时间复杂度-空间复杂度

大家好&#xff0c;我是深鱼~ 目录 1.数据结构前言 1.1什么是数据结构 1.2什么是算法 1.3数据结构和算法的重要性 1.4如何学好数据结构和算法 2.算法的效率 3.时间复杂度 3.1时间复杂度的概念 3.2大O的渐进表示法 【实例1】&#xff1a;双重循环的时间复杂度&#xf…

uView日历控件(u-calendar)优化

1 问题 u-calendar日历控件存在的问题&#xff1a; 不能设置默认选中值&#xff0c;打开弹窗选择起始日期&#xff0c;然后点击取消按钮或蒙版关闭弹窗时&#xff0c;日历弹窗中的选中值发生改变&#xff08;再次打开日历弹窗时&#xff0c;就可以看到选中值的错误&#xff09…