自己做墨水屏阅读器
看到大尺寸的墨水屏阅读器实在是太贵了。正好有时间就想,能不能用开源的硬件自己做一个。这两年玩开源硬件开发,发现价格便宜,耗时长,还非常有成就感(家里的珊瑚缸的LED灯光控制、造流泵、滴定泵控制,还有一些关键指标的测量都是自己动手做的)。
马上动手,先搞个简单的使用串口墨水屏。先寻找硬件,很快就在小黄鱼全部选定。
1、10.2寸,黑白双色局刷,分辨率960*640,SPI总线 24PIN排线, 160元
2、ESP32墨水屏开发板支持tf卡,锂电池充放电 60元
3、1000毫安锂电池15.1元
10.2墨水屏阅读器,整体硬件成本一共160+60+15.1=235.1元,感觉有点贵,心疼。
计划实现的功能:
1、 电子说阅读(这个开发板上的ESP32有16MB存储,所以这个阅读器支持本机存储和TF卡存储);
2、 图片显示(完成功能验证,直接读取显示jpg文件,速度太慢。暂停);
现在跟大家聊一下计划做的这个电子阅读器,开发班使用的.ESP32-WROVER-E模块 8MB内存,16MB 存储,USB-C充电。
我使用Arduino开发,因为简单。我就是一个业余爱好者,怎么简单怎么来(项目开源地址https://gitee.com/vonteng/epdlangke开源地址)。下面介绍一个简单开发过程:
1、 搭建开发环境,此处省略一千字;
2、 WiFi上传书籍到本机或TF卡存储
3、 连接驱动墨水屏;
4、 读取书籍TXT文件,创建书籍目录索引文件;
5、 分页读取书籍TXT文件,并显示;
6、 使用EEPROM记录设备配置及阅读记录(书签);
2、WiFi上传书籍到本机或TF卡存储
简单修改使用Arduino安装配置后代的例程就可以运行了。使用的是例程(WebServer>>>SDWebServer)
因为要同时使用开发板自带的16MB存储和SD(TF)所以修改如下:
(参考例程FFat>>>FFat_Test);项目添加一个全局变量bool BooKFat,值为true使用FFat操作开发板自带的16MB存储使CURD。可以在初始化时,直接调用writeFile方法写一个index.htm文件,用于书籍文件上传页面。如果上传的文件名相同,会进行覆盖操作。
3、连接驱动墨水屏
使用的是开源的GxEPD2库,在Arduino下载安装完成GxEPD2库后,使用的是例程(GxEPD2>>> GxEPD2_SD_Example)因为使用SD和墨水屏都需要SPI。所以重要参加了例程的以下代码:
#if defined(ESP32) && defined(USE_HSPI_FOR_EPD)
hspi.begin(13, 12, 14, 15); // remap hspi for EPD (swap pins)
display.epd2.selectSPI(hspi, SPISettings(4000000, MSBFIRST, SPI_MODE0));
#elif defined(ESP32) && defined(USE_HSPI_FOR_SD)
SPI.begin(13, 12, 14, 15); // remap SPI for EPD
hspi.begin(SCK, MISO, MOSI, SS); // remap hspi for SD
#endif
墨水屏定义使用GxEPD2_BW< GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2>
4、读取书籍TXT文件,创建书籍目录索引文件,分页读取书籍TXT文件,并显示
仍然可以(参考例程FFat>>>FFat_Test),此处需要补充说明的是因为开发板自带的8MB的外部RAM,所以在读取操作文件时,尽量使用了外部RAM。
heap_caps_malloc(size,MALLOC_CAP_SPIRAM) ,还有使用file.seek(p)读取指定页码的文字内容。中文汉字的显示使用u8g2_wqy的字库
打开书籍文件后,逐页读取文字内容,使用Regexp库实现正则表达式,来查找章节文字,并记录章节所在的页码。
String sfindChapter(String str) {
MatchState ms((char *)str.c_str());
char result = ms.Match("(%第+[一二三四五六七八九十百千零]+%章)", 0);
if (result == REGEXP_NOMATCH) {
result = ms.Match("(%第%d+%章)", 0);
}
char cap[50];
return String(ms.GetMatch(cap));
}
给大家看看现在的进度
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
suuchair
校验提示文案
wz43244
校验提示文案
值友9818866077
校验提示文案
jcmark
校验提示文案
眼镜哥
校验提示文案
問道于心
校验提示文案
little宇
校验提示文案
月照长安
校验提示文案
BH1WDB
校验提示文案
肤浅源深
校验提示文案
浮生行简
校验提示文案
noalone
校验提示文案
polly120
校验提示文案
上帝不凡
校验提示文案
runner97008
校验提示文案
值友6098606146
校验提示文案
在曼谷打太极的熊熊
校验提示文案
冇乜
校验提示文案
big满满
校验提示文案
海上生岩浆
校验提示文案
路过成都
校验提示文案
marius_andreas
校验提示文案
x小黑侠
校验提示文案
perfect_mm
校验提示文案
绝地孤狼
校验提示文案
泪杰
校验提示文案
值友2121443210
校验提示文案
值友4752000115
校验提示文案
值友4752000115
校验提示文案
滑小稽出击
校验提示文案
JOROC
校验提示文案
铁臂冈云木木
校验提示文案
家里虐瓜子季
校验提示文案
乄祺寳寳
校验提示文案
daniao521
校验提示文案
不知道取什么名好
校验提示文案
像图我点准不
校验提示文案
值友6127945879
校验提示文案
我是12哥
校验提示文案
公主的骑士
校验提示文案