4.2寸三色墨水屏EPD日历

超低功耗设计的三色墨水屏日历,支持农历显示、天气预报和温湿度监控,单次充电可使用10-15天

一、事情的起因

事情缘起我在海鲜市场买到一个很便宜的三色墨水屏EPD,只花了十几块钱。我看这个东西做个日历还挺合适的,正好我想做一个能够监测室内空气质量的东西,然后就动手了。

事情的结果是我始料未及的,因为做成了一个纯日历,空气质量监测发现就是个鸡肋的功能,传感器做上去了但是功能没有做,该部分程序没有去写,为什么后面会讲。

这个东西的定位嘛,放在自己床头或桌面做个小摆件挺好的,拿来做小礼物送给女朋友也还是不错的。

项目成品展示

外壳使用了3D打印

这个项目最有趣的部分是发现廉价墨水屏的潜力。虽然只花了十几块钱,但经过精心设计和编程,最终创造出了一个实用且美观的桌面日历。

二、系统构架

整个日历采用超低功耗设计目标,充一次电能够用它十天半个月的,因为这种东西要是需要频繁充电,就会让人觉得很烦,和智能手表一样,要天天充电最后就是干脆不戴了。

核心设计目标:超低功耗,单次充电使用10-15天

1. 功能规划方面:

  • 日历功能:有日历界面,需要RTC芯片。能当桌面时钟,显示时间。
  • 天气预报功能:能显示最近几天的天气情况。
  • 温湿度显示:能显示室内的温湿度。
  • WEB配置功能:能实现脱离开发环境的配置功能,通过WEB来配置日历运行环境,比如联网需要的路由器信息、获取天气的API等。

2. 硬件规划

4.2寸三色墨水屏

三色墨水屏EPD

4.2英寸黑白红三色电子墨水屏,分辨率400×300,支持局部刷新,超低功耗显示。

ESP32-S3主控

ESP32-S3主控

采用ESP32-S3作为主控制器,支持WiFi和蓝牙连接,内置PSRAM用于图形处理。

  • LDO选择:鉴于电池电压和负载的电压压差并不大,所以就不考虑DC/DC了,直接使用超低压差的LDO。因为日历绝大部分时间都在低功耗休眠状态,所以必须选择静态电流尽量低的LDO。用的1117-3.3的静态电流会达到4-8mA,这是不能接受的。综合考虑选择RT9183,静态电流0.5-0.8mA,同时其低压差设计,在锂电池电压低到3.8V时仍能输出3.3V电压。但是注意容易买到假货。
  • 充电方面:选择常规TP4056就能满足要求了。设计上采用TYPE-C口充电,所以直接在TYPE-C口的CC1和CC2上各接5.1k电阻,锁定充电器的5V输出。
  • 电量监测方面:采用CW2015,单芯片实现对单节锂电池的电量监测,比较省事。采用的是电压估算法,这里我们也不需要太高的精度,已经够用了。
  • 电源管理方面:将外围用电设备的电源统一纳入CPU的控制,使用MOS管在CPU休眠期间直接关断所有电源。

3. 软件规划

整体使用Arduino开发框架,库比较丰富,提高开发效率,同时整体性能方面要求没有那么高,arduino已经满足我们的要求了。

图形方面使用LVGL来构建图形界面。其他传感器驱动都有现成的库。

系统架构图

ESP32-S3主控
墨水屏显示
WiFi连接
天气API
电源管理
低功耗设计