墨水屏日历,采用三色4.2寸墨水屏,展示基本月历信息,支持农历、公共假期、倒计日、天气(实时天气、每日天气)、课程表展示。
项目以低难度、低成本的方式,方便爱好者实现属于自己的低功耗月历。


Bilibili连接:https://www.bilibili.com/video/BV1wHDhYoE3G/
注:固件仅供个人下载免费使用,禁止商用。
- esp32开发板(建议lolin32 lite,其他esp32开发板亦可)
- 4.2寸三色墨水屏(400*300)。
- 通用墨水屏驱动板。
- 锂电池,需要做ph2.0接头,建议购买带保护板的电池。(推荐603048, 900mah)
- 金属底座亚克力台卡,95*80mm。
- 轻触开关,(12*12*7.3,带键帽)
- 工具:电烙铁、电线若干。
- 开发板接线
- 墨水屏驱动板
- Busy->4
- RST->16
- DC->17
- CS->5
- SCK->18
- SDA->23
- GND->GND
- VCC->3V
- 其他
- 按钮->(PIN_14, GND)
- LED->22(板载)
- 电池ADC->32
- 墨水屏驱动板
- 三色墨水屏排线插入时注意针脚方向,屏幕排线和驱动板排线1号针脚均是悬空,注意对齐。
- 电池接口需要是ph2.0,且注意正负极(开发板上有标注),如果电池的正负极反了,可以用镊子调整电池插头。
- 烧录固件
使用ESP32的烧录工具flash_download_tool烧录固件. Flash Download Tools- 选择烧录的文件和烧录地址(bootloader.bin与partitions.bin烧录过一次后,就不需要重复烧录了)
- 选择Flash的配置信息
- 选择连接的串口以及波特率(波特率可以根据实际情况调整)
- 擦除Flash。
- 开始烧录。
注:文件前面一定要打勾,否则不会刷进flash的!!!
(参考下图)
- 安装盒,3D打印,用PLA或ABS均可。E-ink box2 v22.3mf
- 单点
如果处在休眠中,唤醒系统,并刷新月历。 如果处在运行中,强制刷新/切换日历。 如果处在配置中,不做任何处理。 - 双击
系统正常运行中,双击进入系统配置。(并强制停止WIFI相关操作,如获取天气。) 系统配置状态中,双击重启系统。 - 长按
系统运行中,长按清除配置信息(WIFI密钥除外)和缓存,并重启。
(板载LED,PIN-22)
- 快闪: LED每秒闪约两次,系统启动中(正在连接WIFI)
- 常亮: WIFI连接完成。
- 慢闪: LED每两秒闪一次,WIFI连接失败(10秒钟后休眠)。
- 三短闪一长灭: 系统配置中。(3分钟后超时休眠)
- 熄灭: 系统休眠。
通过在开机状态下(LED常亮)双击,即可进入配置状态,这时系统会生成一个名为J-Calendar的ap,默认密码为:password。(默认超时时间为180秒) 连接上ap后会直接弹出配置页面。(或者直接通过浏览器输入地址 http://192.168.4.1进入)。 配置页面:
- Config Wifi. Wifi配置
进入配置wifi页面,选择搜索到的ap,并输入密码,并保存。 - Setup. 系统配置
- 周首日:
- 0: 周日(默认); 1: 周一;
- 和风天气:
- 输入和风天气的API Key和城市id(城市对应的id请在和风天气的官网查找。)系统会每2小时刷新当前天气,如果Key置空,天气将不会被刷新。
- 天气类型:0:每日天气(默认,每天凌晨刷新一次); 1: 实时天气(每两个小时刷新一次天气)
- 位置:城市id或者经纬度 例1: 101010100 例2: 116.41,39.92
城市id列表
- 输入和风天气的API Key和城市id(城市对应的id请在和风天气的官网查找。)系统会每2小时刷新当前天气,如果Key置空,天气将不会被刷新。
- 倒数日:
输入倒数日名称和日期,名称不能超过4个中文字符,时间以yyyyMMdd的格式填入。配置正确的话,日历每天会显示倒数“距****还有**天”。如果倒数日名称为空,系统将不显示倒数日信息。 - 日期Tag:
- 输入格式,yyyyMMddx,yyyy为年,每年显示设为0000,MM为月份,每月显示设为00,dd为日期,x为tag的图标(a:书签;b:金钱;c:笑脸;d:警告)。例如:00000015b,每年每月15日旁边显示$符号;00000312a,每年3月12日,显示书签符号。
- 最多可以设置三个tag,中间以分号隔开。例如:00000015b;00000312a
- 课程表:
输入格式,分多段,每段用“;”隔开。- 课程数段。"000",三位数字,分别代表上午、下午、晚上课程数,不可省略。如:“430”,代表上午4课,下午三课,晚上无课。
- 每日课程(多段)。首位为星期数,后接当日的课程,以“,”分隔。如:“二,数学,语文,英语,体育,音乐,德法,”,表示周二的课程为数学、语文...等。
- 样例: 430;一,语文,数学,体育,美术,科学,综合;二,数学,语文,英语,体育,音乐,德法;三,数学,英语,科学,语文,体育,书法,音乐;四,语文,数学,信息,劳动,德法,体育;五,英语,语文,数学,美术,心理,体育;
- 注意:分隔用的“,”“;”,必须为英文符号,不可用中文符号。
- 保存配置后,系统自动重启。
- 周首日:
- Update. OTA升级
此项需要在浏览器内完成,通过ip地址访问配置页面,然后进入Update,选择固件文件后上传,等待。刷新完成后,页面会有成功提示。 - Restart. 重启
在所有配置完后,需要重启生效。(也可以在配置状态下,双击按钮重启) - Info. 系统信息 可以监控系统的硬件情况,也可以在里面清除配置的Wifi密钥。
- Exit. 退出
退出配置状态。
- Q: 刷完机后,如何配置?启动流程是如何的?
A: 需要在系统运行状态下(状态灯常亮或慢闪时)双击按键,即可进入配置状态。LED灯变成三短闪一长灭时说明进入配置状态了。 - Q: 刷完机后,没有反应该如何处理?
A: 观察22针脚的LED是否点亮,有闪烁说明固件已经刷入,如果没有闪烁可以尝试点击重置按钮重启,或者拔掉电源线和usb线,重插来重启。此外,还可使用串口工具通过usb的com口获取启动日志来进一步确认故障原因。 - Q: 可以支持哪种屏?
A: 仅4.2寸三色屏(目前仅支持黑白红,将来支持黑白黄)。 - Q: 我使用的屏应该烧录哪个固件?
A: 从经验上预估,大部分比较新一些的选1680,新一点的拆机屏选z98。SES的拆机屏选z21,如果是非常老的屏,选z15。实在不行的话,三个固件都刷一遍试试。
明确的丝印对应如下:
丝印 固件 P420010 1680 E042A43-A0 z98 A13600** z21 - Q: 使用flash download tool刷新固件时,报错,连接串口失败。
A: 1. 检查USB线连接是否正常。
2. app的串口下拉框里是否检测到COM口。
3. 把其他串口工具关闭,防止占用COM口。 - Q: 刷新固件的过程中提示报错。
A: 1. 换根质量较好的或短一些的USB线,或换个USB口插入。
2. 可以将刷新的波特率降低一点,如选择速率低一点的115200。 - Q: 刷新固件后,需要重新配置吗?
A: 仅刷新app固件后,配置是保留的,所以,无需重新配置。如果刷新了分区表partition.bin,会将esp的nvs区刷新,这时候需要重新配置。 - Q: 填入和风天气的API Key和位置ID后,没有成功获取天气信息。
A: 2025年3月1日后注册的和风天气账户有API Host限制,请下载1.0.25以后版本,在配置时配置API Host信息。 - Q: 如何切换日历和课程表显示?
A: 在系统运行状态下(状态灯常亮),单击按键,稍等即可切换课程表的展示。 - Q: 充一次电能使用多久?
A: 这个取决于选用的电池和使用场景,以及开发板的质量。正常情况下休眠的电流为120ua左右,刷新一次需要1.6mah。以900mah的电池、每日刷新一次举例,理论上大概可以待机半年。 - Q: 为何我的日历待机时间很短?
A: 可能是开发板或驱动板的质量问题,实际发现有些板子休眠功耗能达2ma,这会极大影响待机时长。另外,由于电池容量的虚标,待机时长与理论计算值也有较大偏差。建议,增加电池测量电路,及时显示电池电量情况。
- Fix: 内置节日信息未展现。
- Fix: 课程表页面星期显示位置不当。
- Fix: 将1680驱动加入GxEPD2,并放入项目的lib目录。
- Refine: 电池检测、功耗优化
- New: 增加1680驱动版本
- Fix: some bugs.
- Refine: 功耗
- New Featue: 增加对电池的测量和显示。
- New Feature: 课程表。
- Refine: 对针脚统一配置。
- Fix: some bugs.
- Fix: 闰月错误。(bug from nongli lib)
- Refine: 显示当前为第**周。(国际标准(ISO 8601):以周一作为每周起始日)
- Fix: 和风天气api变更,需要输入API Host(在配置页面增加配置项)
- Refine: 配置页面location约束改为64长度,允许输入经纬度设置天气位置(e.g. 116.41,39.92)
- Refine: 修改和风天气请求url。
- Fix: bug(获取holiday返回码)。
- 项目开源:此项目使用GNU General Public License v3.0许可证授权。详情请参阅LICENSE文件。
- Refine:农历计算功能移出。(农历功能作为独立库,以MIT协议开源)
- Fix: bug (wrong background color of calender header).
- Fix: bugs.
- New: 假日信息通过网络API获取。
- Refine: 由于esp32内置时钟的误差,会有可能唤醒的时间不准确,同时,由于处于午夜0点左右,导致提前刷新或在刷新期间切换日期,导致日期显示不准确。处理方式:计时器唤醒的情况下,23:50以后不刷新直接休眠,等待至0点以后唤醒刷新。
- Fix: 修正Wifi连接失败后,同步时间导致系统时间错误。
- Refine: 如果wifi连接失败,等待10s再休眠,并增加LED慢闪作为指示。(在这时间段内供用户进行双击打开配置状态)
- Fix: 修正倒数日名称显示不足的问题。
- New Feature: UI调整,新增今日农历日期的展现。
- Fix: 编译异常。
- Fix: bug(假日颜色不正确), 增加显示假日和调休icon(日历右上角)。
- Fix: bugs.
- 新功能:增加设置每周首日,默认首日为周日。
- 优化:补充部分公历&农历节日
- 新功能:增加日期Tag(通过配置页面进行配置)
- 优化:
- 统一每日天气与实时天气的布局。
- 增加时间容错性,当同步网络时间失败的时候,使用天气api的更新时间。
- 新功能:增加节日显示(元旦、劳动节、国庆节)
- 优化显示:加粗当前日期框;不再使用局刷,全部改为全屏刷新(提高显示的清晰度,兼容不支持局部刷新的三色屏)。
- 预置2025年公休假信息。
- 增加24节气显示。修复部分bug。
- 增加天气模式--每日天气(默认配置),每天刷新一次。(增加月历待机时长。部分不支持局刷的屏可以选择这个模式。)
- 增加强制刷新处理(单击按钮)。
- 修复日历功能、修复日历字典数据
- 修复部分bug。
- 增加倒计日功能
- 修复部分bug。
- 基本功能
- 功耗优化等
此项目使用GNU General Public License v3.0许可证授权。详情请参阅LICENSE文件。
- <WEMOS LOLIN32簡介> https://swf.com.tw/?p=1331&cpage=1
- <GxEPD2> https://github.com/ZinggJM/GxEPD2
- <U8g2_for_Adafruit_GFX> https://github.com/olikraus/U8g2_for_Adafruit_GFX
- <和风天气> https://dev.qweather.com/docs/api/weather/weather-now/
Copyright © 2023-2025. All Rights Reserved.


