续航100天?手搓ESP32墨水屏阅读器,原理其实很简单

嘉丽科技讨论 2024-05-26 05:27:08

帅小伙手搓ESP32墨水屏阅读器!可轻松续航100天!

一、阅读器功能/亮点?

具有阅读器、时钟、温湿度监测、闹钟、番茄钟功能3.7寸墨水屏,低调适合摸鱼的尺寸,看小说不费眼续航可达100+天!实测最多可待机3.5个月

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

二、硬件设计

原理图1

原理图2

PCB图

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

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

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

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

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

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

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

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

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

三、软件部分

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

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

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

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

发送屏幕初始化命令发送屏幕刷新方式命令(全刷/局刷)发送要刷新的画面发送刷新命令

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

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

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

用ESP32,就能提升续航?

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

LightSleepDeepSleep

因此,在软件中(基于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排队的时候,随时拿出来刷一刷,休闲又护眼,多是一件美事呀~~~

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

【正文完】

关注我,看一手优质开源项目!

0 阅读:0

嘉丽科技讨论

简介:感谢大家的关注