Skip to content

JADE-Jerry/jcalendar

Repository files navigation

J-Calendar

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


Bilibili连接:https://www.bilibili.com/video/BV1wHDhYoE3G/
注:固件仅供个人下载免费使用,禁止商用。

Prepare & Meterial

  1. esp32开发板(建议lolin32 lite,其他esp32开发板亦可)
  2. 4.2寸三色墨水屏(400*300)。
  3. 通用墨水屏驱动板。
  4. 锂电池,需要做ph2.0接头,建议购买带保护板的电池。(推荐603048, 900mah)
  5. 金属底座亚克力台卡,95*80mm。
  6. 轻触开关,(12*12*7.3,带键帽)
  7. 工具:电烙铁、电线若干。

Manufacture Guide:

  1. 开发板接线
    • 墨水屏驱动板
      • Busy->4
      • RST->16
      • DC->17
      • CS->5
      • SCK->18
      • SDA->23
      • GND->GND
      • VCC->3V
    • 其他
      • 按钮->(PIN_14, GND)
      • LED->22(板载)
      • 电池ADC->32
  2. 三色墨水屏排线插入时注意针脚方向,屏幕排线和驱动板排线1号针脚均是悬空,注意对齐。
  3. 电池接口需要是ph2.0,且注意正负极(开发板上有标注),如果电池的正负极反了,可以用镊子调整电池插头。
    1. 可选:电池电压检测电路,需要通过两个相同的大电阻(建议500K以上)串联,通过分压进行检测电池电压。如图
  4. 烧录固件
    使用ESP32的烧录工具flash_download_tool烧录固件. Flash Download Tools
    1. 选择烧录的文件和烧录地址(bootloader.bin与partitions.bin烧录过一次后,就不需要重复烧录了)
    2. 选择Flash的配置信息
    3. 选择连接的串口以及波特率(波特率可以根据实际情况调整)
    4. 擦除Flash。
    5. 开始烧录。
      注:文件前面一定要打勾,否则不会刷进flash的!!!
      (参考下图)
  5. 安装盒,3D打印,用PLA或ABS均可。E-ink box2 v22.3mf

Button Operation Guide:

  1. 单点
    如果处在休眠中,唤醒系统,并刷新月历。 如果处在运行中,强制刷新/切换日历。 如果处在配置中,不做任何处理。
  2. 双击
    系统正常运行中,双击进入系统配置。(并强制停止WIFI相关操作,如获取天气。) 系统配置状态中,双击重启系统。
  3. 长按
    系统运行中,长按清除配置信息(WIFI密钥除外)和缓存,并重启。

LED Indicator:

(板载LED,PIN-22)

  1. 快闪: LED每秒闪约两次,系统启动中(正在连接WIFI)
  2. 常亮: WIFI连接完成。
  3. 慢闪: LED每两秒闪一次,WIFI连接失败(10秒钟后休眠)。
  4. 三短闪一长灭: 系统配置中。(3分钟后超时休眠)
  5. 熄灭: 系统休眠。

Web Config Guide:

通过在开机状态下(LED常亮)双击,即可进入配置状态,这时系统会生成一个名为J-Calendar的ap,默认密码为:password。(默认超时时间为180秒) 连接上ap后会直接弹出配置页面。(或者直接通过浏览器输入地址 http://192.168.4.1进入)。 配置页面:

  1. Config Wifi. Wifi配置
    进入配置wifi页面,选择搜索到的ap,并输入密码,并保存。
  2. Setup. 系统配置
    • 周首日:
      • 0: 周日(默认); 1: 周一;
    • 和风天气:
      • 输入和风天气的API Key和城市id(城市对应的id请在和风天气的官网查找。)系统会每2小时刷新当前天气,如果Key置空,天气将不会被刷新。
      • 天气类型:0:每日天气(默认,每天凌晨刷新一次); 1: 实时天气(每两个小时刷新一次天气)
      • 位置:城市id或者经纬度 例1: 101010100 例2: 116.41,39.92
        城市id列表
    • 倒数日:
      输入倒数日名称和日期,名称不能超过4个中文字符,时间以yyyyMMdd的格式填入。配置正确的话,日历每天会显示倒数“距****还有**天”。如果倒数日名称为空,系统将不显示倒数日信息。
    • 日期Tag:
      1. 输入格式,yyyyMMddx,yyyy为年,每年显示设为0000,MM为月份,每月显示设为00,dd为日期,x为tag的图标(a:书签;b:金钱;c:笑脸;d:警告)。例如:00000015b,每年每月15日旁边显示$符号;00000312a,每年3月12日,显示书签符号。
      2. 最多可以设置三个tag,中间以分号隔开。例如:00000015b;00000312a
    • 课程表:
      输入格式,分多段,每段用“;”隔开。
      1. 课程数段。"000",三位数字,分别代表上午、下午、晚上课程数,不可省略。如:“430”,代表上午4课,下午三课,晚上无课。
      2. 每日课程(多段)。首位为星期数,后接当日的课程,以“,”分隔。如:“二,数学,语文,英语,体育,音乐,德法,”,表示周二的课程为数学、语文...等。
      3. 样例: 430;一,语文,数学,体育,美术,科学,综合;二,数学,语文,英语,体育,音乐,德法;三,数学,英语,科学,语文,体育,书法,音乐;四,语文,数学,信息,劳动,德法,体育;五,英语,语文,数学,美术,心理,体育;
      4. 注意:分隔用的“,”“;”,必须为英文符号,不可用中文符号。
    • 保存配置后,系统自动重启。
  3. Update. OTA升级
    此项需要在浏览器内完成,通过ip地址访问配置页面,然后进入Update,选择固件文件后上传,等待。刷新完成后,页面会有成功提示。
  4. Restart. 重启
    在所有配置完后,需要重启生效。(也可以在配置状态下,双击按钮重启)
  5. Info. 系统信息 可以监控系统的硬件情况,也可以在里面清除配置的Wifi密钥。
  6. Exit. 退出
    退出配置状态。

Q & A

  1. Q: 刷完机后,如何配置?启动流程是如何的?
    A: 需要在系统运行状态下(状态灯常亮或慢闪时)双击按键,即可进入配置状态。LED灯变成三短闪一长灭时说明进入配置状态了。
  2. Q: 刷完机后,没有反应该如何处理?
    A: 观察22针脚的LED是否点亮,有闪烁说明固件已经刷入,如果没有闪烁可以尝试点击重置按钮重启,或者拔掉电源线和usb线,重插来重启。此外,还可使用串口工具通过usb的com口获取启动日志来进一步确认故障原因。
  3. Q: 可以支持哪种屏?
    A: 仅4.2寸三色屏(目前仅支持黑白红,将来支持黑白黄)。
  4. Q: 我使用的屏应该烧录哪个固件?
    A: 从经验上预估,大部分比较新一些的选1680,新一点的拆机屏选z98。SES的拆机屏选z21,如果是非常老的屏,选z15。实在不行的话,三个固件都刷一遍试试。
    明确的丝印对应如下:
    丝印 固件
    P420010 1680
    E042A43-A0 z98
    A13600** z21
  5. Q: 使用flash download tool刷新固件时,报错,连接串口失败。
    A: 1. 检查USB线连接是否正常。
    2. app的串口下拉框里是否检测到COM口。
    3. 把其他串口工具关闭,防止占用COM口。
  6. Q: 刷新固件的过程中提示报错。
    A: 1. 换根质量较好的或短一些的USB线,或换个USB口插入。
    2. 可以将刷新的波特率降低一点,如选择速率低一点的115200。
  7. Q: 刷新固件后,需要重新配置吗?
    A: 仅刷新app固件后,配置是保留的,所以,无需重新配置。如果刷新了分区表partition.bin,会将esp的nvs区刷新,这时候需要重新配置。
  8. Q: 填入和风天气的API Key和位置ID后,没有成功获取天气信息。
    A: 2025年3月1日后注册的和风天气账户有API Host限制,请下载1.0.25以后版本,在配置时配置API Host信息。
  9. Q: 如何切换日历和课程表显示?
    A: 在系统运行状态下(状态灯常亮),单击按键,稍等即可切换课程表的展示。
  10. Q: 充一次电能使用多久?
    A: 这个取决于选用的电池和使用场景,以及开发板的质量。正常情况下休眠的电流为120ua左右,刷新一次需要1.6mah。以900mah的电池、每日刷新一次举例,理论上大概可以待机半年。
  11. Q: 为何我的日历待机时间很短?
    A: 可能是开发板或驱动板的质量问题,实际发现有些板子休眠功耗能达2ma,这会极大影响待机时长。另外,由于电池容量的虚标,待机时长与理论计算值也有较大偏差。建议,增加电池测量电路,及时显示电池电量情况。

Releases

1.1.7

  • Fix: 内置节日信息未展现。

1.1.6

  • Fix: 课程表页面星期显示位置不当。

1.1.5

  • Fix: 将1680驱动加入GxEPD2,并放入项目的lib目录。

1.1.4

  • Refine: 电池检测、功耗优化
  • New: 增加1680驱动版本

1.1.3

  • Fix: some bugs.

1.1.2

  • Refine: 功耗

1.1.1

  • New Featue: 增加对电池的测量和显示。

1.1.0

  • New Feature: 课程表。
  • Refine: 对针脚统一配置。
  • Fix: some bugs.

1.0.27

  • Fix: 闰月错误。(bug from nongli lib)

1.0.26

  • Refine: 显示当前为第**周。(国际标准(ISO 8601)‌:以周一作为每周起始日)

1.0.25

  • Fix: 和风天气api变更,需要输入API Host(在配置页面增加配置项)

1.0.24

  • Refine: 配置页面location约束改为64长度,允许输入经纬度设置天气位置(e.g. 116.41,39.92)

1.0.23

  • Refine: 修改和风天气请求url。
  • Fix: bug(获取holiday返回码)。

1.0.22

  • 项目开源:此项目使用GNU General Public License v3.0许可证授权。详情请参阅LICENSE文件。
  • Refine:农历计算功能移出。(农历功能作为独立库,以MIT协议开源)

1.0.21

  • Fix: bug (wrong background color of calender header).

1.0.20

  • Fix: bugs.

1.0.19

  • New: 假日信息通过网络API获取。
  • Refine: 由于esp32内置时钟的误差,会有可能唤醒的时间不准确,同时,由于处于午夜0点左右,导致提前刷新或在刷新期间切换日期,导致日期显示不准确。处理方式:计时器唤醒的情况下,23:50以后不刷新直接休眠,等待至0点以后唤醒刷新。

1.0.18

  • Fix: 修正Wifi连接失败后,同步时间导致系统时间错误。

1.0.17

  • Refine: 如果wifi连接失败,等待10s再休眠,并增加LED慢闪作为指示。(在这时间段内供用户进行双击打开配置状态)
  • Fix: 修正倒数日名称显示不足的问题。

1.0.16

  • New Feature: UI调整,新增今日农历日期的展现。

1.0.15

  • Fix: 编译异常。

1.0.14

  • Fix: bug(假日颜色不正确), 增加显示假日和调休icon(日历右上角)。

1.0.13

  • Fix: bugs.

1.0.12

  • 新功能:增加设置每周首日,默认首日为周日。

1.0.11

  • 优化:补充部分公历&农历节日

1.0.10

  • 新功能:增加日期Tag(通过配置页面进行配置)

1.0.9

  • 优化:
    1. 统一每日天气与实时天气的布局。
    2. 增加时间容错性,当同步网络时间失败的时候,使用天气api的更新时间。
  • 新功能:增加节日显示(元旦、劳动节、国庆节)

1.0.8

  • 优化显示:加粗当前日期框;不再使用局刷,全部改为全屏刷新(提高显示的清晰度,兼容不支持局部刷新的三色屏)。
  • 预置2025年公休假信息。

1.0.7

  • 增加24节气显示。修复部分bug。

1.0.6

  • 增加天气模式--每日天气(默认配置),每天刷新一次。(增加月历待机时长。部分不支持局刷的屏可以选择这个模式。)

1.0.5

  • 增加强制刷新处理(单击按钮)。
  • 修复日历功能、修复日历字典数据
  • 修复部分bug。

1.0.4

  • 增加倒计日功能
  • 修复部分bug。

1.0.3

  • 基本功能
  • 功耗优化等

License

此项目使用GNU General Public License v3.0许可证授权。详情请参阅LICENSE文件。

★★★固件还不错,支持一下★★★


Reference:

  1. <WEMOS LOLIN32簡介> https://swf.com.tw/?p=1331&cpage=1
  2. <GxEPD2> https://github.com/ZinggJM/GxEPD2
  3. <U8g2_for_Adafruit_GFX> https://github.com/olikraus/U8g2_for_Adafruit_GFX
  4. <和风天气> https://dev.qweather.com/docs/api/weather/weather-now/

Copyright © 2023-2025. All Rights Reserved.