基于ESP32开发的墨水屏电子书阅读器,已开源
- 项目展示
-
菜单列表:
-
书籍列表:
-
阅读页面:
-
壁纸展示:
-
文件接收:
-
文件传输:
-
- 项目介绍:
- 基于esp32芯片,sd模块,WeAct epaper 2.13寸墨水屏,三键功能实现的电子书阅读器
- 工具及框架:vscode+platformio
- 开发语言:c
- 项目源码:
- 功能介绍:
- 书籍阅读,删除
阅读基本上下翻页,以及书籍删除 - 书籍接收
基于wifi连接的文件传输 - 屏幕显示
自定义的图片转位图信息后的图像显示功能,使用ImageToLCD软件转成.c文件,代码直接展示
- 书籍阅读,删除
- 模块介绍
-
sd模块
- 连接方式:sd模块和显示模块都使用spi协议,只是对应cs引脚不同,作为一主多从片选信号使用;MOSI接23引脚,SCK接18引脚,MISO接19引脚;需要注意电源电压是否适配,这里统一采用3.3v;
- 代码实现:主要用来处理文件内容的读写,和书籍列表等功能
-
文件传输模块
- 代码实现:使用socket进行文件传输,对应的远程传输功能使用java代码编写:socket文件发送java简易版
- 需要注意的是:文件使用上,只能兼容utf-8编码的文件,否则会导致阅读乱码,虽然代码中字体使用gb2312,但是猜测问题原因是esp32系统操作编码格式只支持utf-8,所以在传输文件时可以将其他编码的文件进行格式转换为utf-8
-
wifi模块
- 连接方式:芯片采用ESP32-WROOM,一体集成了wifi,这里不再详细说明
- 代码实现:1.这里使用ap模式,相当于wifi服务器,用其他设备连接该wifi,缺陷就是其他设备连接使用时不能进行网络访问;2.针对前面的模式可以sta模式,去连接路由器网络,然后通网络下的设备就可以通过ip访问,这种方式的缺陷就是当前设备操作简陋,只支持三键操作,不能输入wifi的账号密码,一般只能代码写死在设备上,但是如果切换网络,又不能继续使用;3.针对前面两种情况,可以基于文件传输,实现wifi密码的配置,这样既能灵活连接wifi,也能使用网络,这里暂未实现,因为只是基于同网络下的socket文件传输,不需要网络
-
墨水屏显示模块
- 连接方式:SCK连接18引脚,MOSI连接23引脚,DC连接14引脚,CS片选连接4引脚(需要和sd分开),RST连接2引脚,BUSY连接15引脚,MISO对于该显示模块暂时不需要
- 代码实现:1.需要注意使用中文显示,这里采用u8g2库,和开源wqy字体
- 刷新模式:这里使用的局部刷新,减少全局刷新屏幕的闪烁
-
按键操作:
- 简单使用三个按键,使用中断进行功能操作,左键:25引脚,中键:33引脚,右键:32引脚
- 按键功能:左键:一般用于菜单返回,中键:用于菜单列表向下滚动选择,右键:进入选择菜单;当然对于某些功能需要特殊修改,像阅读功能,左键向上翻页,右键向下翻页,中键返回书籍列表
-
- 整体缺陷:
-
对其他尺寸屏幕的适应不是很好,没有特意去设计
-
电源模块没有设计只是简单使用
-
使用的存储设备可以使用更小的tf模块,之前买的sd模块,不过问题不大
-
按钮买的矩阵键盘,为了连接方便,没有拆开,当然只需要三个按键
-
暂未进行整体模块封装
整体展示:
使用视频:
墨水屏电子书阅读器
-