# tinyReader **Repository Path**: iwinyeah/tinyReader ## Basic Information - **Project Name**: tinyReader - **Description**: 微型电子书,基于一个ESP32+墨水屏的小众产品开发,主要用于碎片时间阅读和记忆 用于sammax做的阅读器,https://oshwhub.com/sammax/esp32_with_spi_sdcard - **Primary Language**: C++ - **License**: Unlicense - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 3 - **Created**: 2023-12-11 - **Last Updated**: 2025-08-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 太尼阅读器(固件) 阅读器购于[海鲜市场](https://m.tb.cn/h.5HFkbgs?tk=CSOTWk0ms4U) 阅读器硬件[设计参考](https://oshwhub.com/sammax/esp32_with_spi_sdcard) 阅读器不是我做的,但做得还不错,推荐!(ps:硬件加上蜂鸣器、多增1个按键是更好!) 一直想买一个阅读器,主打功能是文本阅读和词条记忆,需要小型便携,续航时间长,墨水屏(护眼),某天发现海鲜市场有阅读器硬件满足要求,但软件功能不满足,但它胜在可以自行开发固件(本人又刚好有此技能),因此入手了该阅读器,经过差不多两个月开发,功能基本OK。 *项目启动的时间为:2023-11-11* ``` 按键说明: 任何页面下,点【EN键】,复位显示液晶时间页面(所谓老板键) 液晶时间页面下,长按下键,放开后将触发网络对时 注1 任何页面下,按住【上键】,然后点【EN键】,半秒后放开【上键】,进入主菜单页面 任何页面下,按住【下键】,然后点【EN键】,半秒后放开【下键】,进入上次文本阅读页面或词条记忆页面 ========================================== 页面\按键 上 下 EN 长按上 长按下 ------------------------------------------ 主菜单 < > 关机 选中 列目录 < > 返回 选中 番茄钟 < > 返回 开始 练视力 返回 阅 读 < > 返回 记 忆  不会 会了 返回 ========================================== 注1:网络对时需在SD卡根目录有网络配置文件wifi.cfg 文件为文本格式,只有两行: wifi网络名称 wifi密码 ``` 功能: 1. UTF8格式文本阅读 2. UTF8格式词条记忆,词条格式为 标题、内容各占一行 3. 超长续航,满电后,轻度阅读续航时间在2个月以上 4. 每日零时自动网络对时 * 实现了所有的硬件控制,并且解决了墨水屏的显示和SD卡的读写同时使用的问题,已基本实现图书阅读的功能和时钟功能。 * 增加视力训练功能,并将时钟显示位置随机变化以保护墨水屏,并增加了农历月日显示 * 增加了番茄钟功能。 * 番茄钟专注状态为黑底白字 * 文字行间距增加到22个像素,并且第一行显示位置上移了6个像素 * 测试了另一种液晶数字,不理想。 * 找出了有时行显示不全的原因:缩进空格没有显示,字体问题 * 由于采用 唤醒>处理>睡眠 的模式,每次显示肯定是全刷的,不存在局刷 * 解决了屏幕显示完成后先亮后暗的问题:增加display.hibernate() * 增强了SD卡读卡不成功再尝试,并优化了阅读代码,将书本标题显示限制小于四个字 * 将硬件定义从分散各文件中抽出集中到Hardware.h中。经测试,各种功能已基本完善 * 第一个稳定版本,进行长期的试用,暂时不再增加功能模块,只修改bug. * 我食盐了,又手多增加了自动网络对时和手动网络对时功能,并精简了main.c代码 * 修正了一个错误: 在保存记忆进度时,循环尾部MAX_RTC_PAGE设成了rtcPGIndex导致有时进度没有保存 * 增加功能:在主菜单下长按上键,将进入深睡眠,不会唤醒,只能按下en键重启 * 增加功能:长按下键再按下en键,再放开下键将恢复上一次阅读或记忆的状态 * 修复词条记忆错乱的问题代码;时间对象RX8025全局化,避免到处生成 * 修改了类的名称 TextView -> View * 较大变动:由于u8g2汉字显示机制问题,导致汉字显示较慢(当然,它适应性强),我抛弃了它的代码及字库,重新设计了新的显示绘制方法以及重新规划了字库。 * 设计drawBitmap代码代替专用ASCII字符和UTF-8字库的显示方法,通用性更强,日后可用于显示各种尺寸字体和图片 * 基本理解了SPI重映射的原理,修改了代码,现在同时使用SD卡和墨水屏不再出现错误了。 * 重新设计了文字分行(分页)代码,消除句尾符号显示在下一行和下一页的问题。 * 加上了 USE_U8G2 宏定义,若未注释本定义,则使用u8g2库显示 * 将utf8显示功能从view中分出,由新建u8Matrix类实现 * 将汉字库增大至28000个字,更适于古籍阅读 * 增加从词条记忆到图书阅读快速切换 * 准备让代码开源,让大家共同完善。