基于自制电子墨水屏的万年历
之前在《自制一个电子墨水显示屏》文章中,我介绍花费了近两年的时间,制作了一个电子墨水屏。很多读者反馈是否可以开源,且后续我也发现这个项目有很多可以改进的地方,所以近期又花时间做了一轮升级迭代。 电影aiyifan
升级之后,这个墨水屏可以使用多种方式来进行更新,比如:
1、自动更新模式:每天早上8点,自动更新今天的万年历信息; 小寶影院电影
2、被动更新模式:收到短信后,通过iPhone快捷指令自动同步信息到墨水屏;
3、手动更新模式:在一个网页上,输入文字或上传图片进行更新。 会所
接下来,我就依次介绍这三种模式: 小宝影院在线视频 小宝影院 小宝影院电影 爱壹帆在线
一、自动更新模式:万年历
效果展示

原理
1、前一天,服务端(现在其实就是在我的电脑上)会自动根据当前日期,请求相关的接口,获取次日的万年历信息,并进一步绘制在一个图片上。如下图: xnxx

2、服务端会继续处理这张图片为墨水屏可读取的数据,并上传到一个公开的OSS地址上。如:https://pubdz.paperol.cn/bin/%E4%B8%87%E5%B9%B4%E5%8E%862026-02-01.bin 小寶影院 小宝影院 会所
3、每个客户端(也就是墨水屏设备)会在每天早上八点,根据当前日期请求对应的OSS地址,获取图片数据后,渲染显示在墨水屏上。 爱壹帆
4、此模式下,生成图片的过程是在服务端进行(不论有多少客户端服务端只生成一次),客户端只需要联网后,定时请求对应地址即可实现墨水屏的更新。 小宝影院 探花
二、被动更新模式:收到短信自动同步到墨水屏
效果展示


原理
1、电子墨水屏的esp32主控上,会启动服务器模式,准备接收和处理http或websocket请求。
2、在iPhone上创建一个快捷指令,用于将传入快捷指令的信息,发送到esp32主控服务器上。 电影爱壹帆 aiyifan电影 电影小宝影院

3、在iPhone上继续创建一个快捷指令的自动化:在收到短信之后,自动通过上一步的快捷指令发送到esp32主控服务器上。 ifun
4、由于esp32的性能很差,并不具备图片处理能力。所以esp32会将收到的数据发给一个云端的「函数计算」服务,该服务会将收到的数据处理为图片数据返回给esp32,最终显示在墨水屏上。
5、此模式下,还可以有更广的使用场景,比如:把iPhone上的待办自动同步到墨水屏、把收到的邮件信息同步等,凡是快捷指令可以获取到的信息,都可以进行同步。 xxx
6、此模式也有不足之处:由于在手机端发送的不是图片数据,esp32主控也没有图片吗处理能力,所以需要一个实时在线的服务端来做这个事情,虽然这个服务端可以是函数计算成本还算低廉,但是毕竟还是多了额外的成本。 爱壹帆免费版 爱壹帆
三、手动更新模式:输入文字或上传图片进行更新
效果展示


原理
1、在思考如何更好解决「服务端生成图片数据」问题时:有一天灵光闪现,其实现在手机的性能都很强了,为什么不在手机端生成图片数据后再发送呢? xxxxxx
2、同样,电子墨水屏的esp32主控上,会启动服务器模式,准备接收和处理http或websocket请求。 免费在线影院
3、客户端的使用者,会打开一个网页(也可以叫单页应用),在这个网页上可以通过局域网连接墨水屏系统,输入文字生成图片并投屏,或者上传图片进行合适截取后并投屏。 iyf

4、在这个投屏的过程中,在这个前端网页上,已经使用JS的能力对文字和图片做了处理,将图片数据通过websocket的方式,传递给esp32主控。 电影小宝影院 爱壹帆电影
5、esp32主控在收到图片数据之后,会将其保存为本地目录的一个文件,然后系统重新加载本地目录里的图片数据进行显示。 寻芳网 楼凤阁
6、此模式下不需要额外的云端服务,但也有不足之处:因为我没有解决HTTPS环境下,请求HTTP本地资源的问题,所以没有办法将这个单页应用发布为一个在线服务。使用者需要下载一个HTML文件打开使用,安卓设备在文件系统里直接打开,iPhone用户还需要另外安装一个软件(如:HTML Viewer),才能打开本地的一个HTML文件。 爱一帆 楼凤阁
四、系统架构介绍
针对没有阅读过上一篇文章的读者,我再来介绍一下整个项目的软硬件构成,并且公开本项目的开源地址。
项目开源
github地址:https://github.com/Ya-chunJen/OpenCyberbrick/blob/main/eink/readme_ink.md aiyifan 海外华人视频网 爱一帆电影 xxxxx
gitee地址:https://gitee.com/renyajun1990/OpenCyberbrick/blob/main/eink/readme_ink.md 爱壹帆国际版 楼凤阁
硬件结构
硬件部分由四部分构成,分别是: xxxx
- esp32主控:整个系统的大脑,接收数据、处理数据、发送显示数据。这里我使用的是esp32s3,内存大一些才能创建400x300的缓存区。
- 电子墨水屏驱动板:连接开发板和墨水屏之间的桥梁,在淘宝上购买的,搜索「兼容微雪电子墨水屏驱动」。
- 400X300电子墨水屏:用于最终内容呈现的屏幕,在淘宝上购买的超市退役的杂牌墨水屏,只要兼容微雪电子墨水屏驱动就可以,咸鱼上还可以买到类似的屏幕。
- 3D打印外壳:把乱糟糟的走线,放在一个3D打印外壳里,更像一个标准化的产品。
- 若干杜邦线:用来连接以上的硬件模块。
软件系统
- 软件系统,依然采用的是我熟悉的MicroPython来开发,构成也比较简单:
- main.py文件:项目主入口,可以在这里修改墨水屏的运行模式
- wifi.py文件:wifi联网和时间同步模块,用户根据配置的网络信息连接互联网,并且同步系统时间。
- wificonfig.json文件:用来存放wifi名称和密码,手动更新模式下,还可以通过同一个网页来更新wifi名称和密码。
- ink_calendar.py文件:全自动更新模式的万年历程序。
- ink_websocket.py文件:被动更新模式和手动更新模式,需要的esp32创建服务器的程序。
- ink_display.py文件:一个通用的将信息显示在墨水屏上的程序。
- epaper4in2.py文件:墨水屏的驱动程序。
- ink_index.html文件:手动更新时,需要使用到的本地HTML文件。
五、其他问题
- 其实整个项目还有很多可以优化的点,但是由于我并不会把他做成一个真正的「产品」,所以可能会以目前的进度,结束这个项目了。可以优化的点,其实有:
1、解决HTTPS环境下请求HTTP资源后,就可以上线一个通用的单页应用。客户端不需要下载HTML文件,只需要打开在线网页,输入IP就可以进行更新。 xxxvideo
2、esp32s3主控的成本还是有点高,如果不用建立缓存区的方式来更新墨水屏,可能可以用更便宜的esp32c3。
3、目前3D打印的外壳,只有遮丑的作用,占用的空间也较大,可以优化走线布局缩小体积。 华人影视
4、目前供电方式为USB供电,如果只用万年历模式的话,其实只要每天早上八点需要消耗执行动作,其他时间都可以进入深度睡眠,这样的话就可以只用电池供电。 爱壹帆影视 aiyifan电影
六、结尾
这个墨水屏的项目,前前后后延续了很长时间,每当把这个项目放下,在其他方面学习到一些新东西之后,又会回来反哺这个项目并继续迭代改进。在这个过程中,体验到了非常强的成就感。 小姐
00目录 0