手搓了一个ESP32墨水屏阅读器,蛮简单的

描述

工程名称:3.7寸墨水屏阅读器 时钟 温湿度 TXT/Epub

前言

帅小伙手搓ESP32墨水屏阅读器!
 

可轻松续航100天!

01 阅读器功能/亮点?

 

电墨水屏

电墨水屏

 

1. 具有阅读器、时钟、温湿度监测、闹钟、番茄钟功能

2. 3.7寸墨水屏,低调适合摸鱼的尺寸,看小说不费眼

3. 续航可达100+天!实测最多可待机3.5个月

那么问题就来了,想实现上述功能+提升续航,硬件部分应该如何设计呢?

02 硬件设计

电墨水屏
 

原理图1

电墨水屏

原理图2

电墨水屏

PCB图

想提升续航,具体怎么设计电路?

经过功耗仪器测试,TF卡 在接通电源,且不工作的情况下,会消耗3-5个mA的电流,而看似低的电流,却会对设备的续航带来严重的影响。

于是,我通过在TF卡接地侧增加一个NMOS作为开关,即可提高续航。

电墨水屏

如果说,软件和电路,是续航的上限,那么电池基础容量就是使用时长的下限。

如何“恰到好处”的选择电池容量?

建议优先满足操作的舒适性,再考虑电池尺寸,一味的塞大电池并不可取。

我采用的是L型的电路板设计,因此电池采用了常见的604060电池。((6*40*60/10)*1.2 = 1728mAh

 

搞定了硬件设计,软件部分的设计原理又是怎样的?

如何通过软件设计,提升续航?

03 软件部分

 

电墨水屏

 

阅读器的软件设计原理和架构?

本阅读器采用操作-响应式作为基础,所有控制基于OneButton库完成,图像处理部分由u8g2完成,显示部分由Gxepd2库完成

驱动墨水屏的原理?具体方法是什么?

①首先,需要了解驱动流程!这是大家常接触到的SPI电子纸驱动流程。

   发送屏幕初始化命令

   发送屏幕刷新方式命令(全刷/局刷)

   发送要刷新的画面

   发送刷新命令

②在知道流程之后,找屏幕驱动手册或向卖家索要示例驱动代码。

③将对应上述流程的代码找到,并搬运到自己的驱动中(CV工程师日常?),在程序中按照顺序调用以上代码块,就能够正常驱动屏幕了。

④SPI硬驱动示例:实际使用时不需要(删除)继承标志(Epd::/EpdIf),可按照自己程序需求使用。

电墨水屏

用ESP32,就能提升续航?

ESP32具有优秀的低功耗控制能力,原理是在休眠时关闭或门控一些功能模块来降低功耗。可提供两档睡眠模式选择:

 

LightSleep

DeepSleep

 

因此,在软件中(基于Arduino提供的接口进行演示)我们可以使设备进入浅睡和深度睡眠模式:

 

Esp_light_sleep_start()

esp_deep_sleep_start()

 

如何防止系统永远“陷入睡眠”?

在睡眠之前我们需要设置唤醒方式,不然机器会永远的陷入沉睡,深度睡眠唤醒方式有如下两种:

 

定时器(Timer)唤醒:esp_sleep_enable_timer_wakeup(微秒)

RTC_GPIO唤醒:请注意不是所有IO都是RTC_IO

 

当然,使用GPIO作为唤醒源的时候还需要注意!EXT0和EXT1两个唤醒源在不同芯片上有不同的规则(如ESP32S3和ESP32)

电墨水屏
通常使机器进入睡眠模式能够降低芯片自身高达几百倍的电流消耗(40mA-10uA)

【小编OS】

话说,要是小编兜里能揣一个这样的阅读器,乘地铁or排队的时候,随时拿出来刷一刷,休闲又护眼,多是一件美事呀~~~

一想到这,打工都更有劲了呢!

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分