基于ESP32和2.8寸LCD显示屏的小说/漫画阅读器,支持文件浏览和图片显示。
Tips: 1.烧录代码
2.可使用项目给的字库,常见标点和2000+中文。 使用tools文件夹中的sh(需要根据你的环境自己改下)生成font_data文件夹(这一步可以自定义生僻字字库),记得包含☐字符
注意:font_data中json和16x16_1.font是索引文件,加载极慢(20s一个字),cache子文件夹下的是生成的高速缓存,1s之内可以渲染一个字,适合常用字渲染,开机后如果不关机,有内存缓存25k,可以做到1s200+字,这才是真正的速度。
3.将生成的font_data文件夹放置在SD卡根目录下(注意debug文件夹不需要!!!,cache酌情删减,假如不删的话也就多耗点SD卡存储,还可以加快渲染速度)
4.将SD卡插入ESP板
5.开始使用
6.新建一个文件夹
7.如果文件夹下有.info文件并且内容为{"type":"comic"}并且有1.bmp,2.bmp......就会被视作漫画文件夹,esp点击该文件夹即可开始观看
8.点击下部1/4向下翻页,向上同理,中间点击通过内核报错大雾重启到文件夹,这个bug有空再修
9.小说阅读没写完,实现了个txt查看,勉强可以先用了
- ESP32-32E开发板
- 2.8寸LCD显示屏(ILI9341驱动)
- XPT2046触摸屏
- MicroSD卡槽
- CS: GPIO15
- DC: GPIO2
- MOSI: GPIO13
- SCLK: GPIO14
- RST: EN (ESP32复位引脚)
- MISO: GPIO12
- 背光: GPIO21
- CS: GPIO33
- IRQ: GPIO36
- MOSI: GPIO32
- MISO: GPIO39
- CLK: GPIO25
- CS: GPIO5
- MOSI: GPIO23
- MISO: GPIO19
- SCK: GPIO18
- 安装Arduino IDE
- 安装ESP32开发板支持
- 安装以下库:
- TFT_eSPI
- XPT2046_Touchscreen
- SD
- 配置TFT_eSPI库:
- 将
User_Setup.h复制到TFT_eSPI库目录中的User_Setup_Select.h同级目录 - 在
User_Setup_Select.h中注释其他配置,启用刚复制的配置文件
- 将
-
准备SD卡:
- 格式化为FAT32文件系统
- 在根目录创建文件夹存放内容
- 对于漫画文件夹,创建
.info文件标记
-
功能说明:
- 开机自动进入文件浏览界面
- 显示SD卡中的文件夹
- 支持分页浏览
- 漫画文件夹会显示特殊图标
- 点击返回按钮可返回上级目录
- 使用左右箭头按钮翻页
-
操作说明:
- 点击文件夹:进入该目录
- 点击返回:返回上级目录
- 点击箭头:翻页
- 点击图片:进入图片查看模式
- 图片查看模式下点击屏幕:返回文件浏览
config.h: 硬件配置和常量定义router.h/cpp: 页面路由系统display.h/cpp: 显示控制touch.h/cpp: 触摸控制sdcard.h/cpp: SD卡文件系统操作pages.h/cpp: 页面实现NovelComicReader.ino: 主程序User_Setup.h: TFT_eSPI库配置library.json: 项目依赖配置
- 确保SD卡正确格式化为FAT32
- 文件名请使用英文或数字
- 图片格式支持取决于使用的图片解码库(需另行实现)
- 如遇显示异常,可尝试重新校准触摸屏参数
该项目使用模块化设计,易于扩展新功能:
-
添加新页面:
- 继承Page类
- 实现display()和handleTouch()方法
- 在Router中注册页面
-
添加新功能:
- 可以在现有类中添加新方法
- 或创建新的功能类
- 遵循单一职责原则
-
自定义界面:
- 修改UI常量在config.h中
- 可以自定义文件夹图标样式
- 可以调整字体大小和颜色
-
显示不正常:
- 检查LCD引脚连接
- 确认User_Setup.h配置正确
- 尝试调整SPI频率
- 确保TFT_eSPI库版本 >= 2.5.0
- 检查字体设置是否正确加载
-
文字显示问题:
- 确保User_Setup.h中的字体定义正确启用
- 尝试使用不同的字体(FONT2通常最稳定)
- 调整文本大小和对齐方式
- 如果中文显示异常,需要额外配置字体文件
-
触摸不响应:
- 检查触摸屏引脚连接
- 确认触摸参数校准正确
- 检查中断引脚状态
-
SD卡读取失败:
- 检查SD卡格式是否为FAT32
- 确认SD卡引脚连接正确
- 尝试重新格式化SD卡