工程名称: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),可按照自己程序需求使用。
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排队的时候,随时拿出来刷一刷,休闲又护眼,多是一件美事呀~~~
一想到这,打工都更有劲了呢!
全部0条评论
快来发表一下你的评论吧 !