自制电子墨水屏,以及我用它来干了什么?
好,我现在需要帮用户总结这篇文章的内容,控制在100字以内。首先,我得通读整篇文章,抓住主要信息。 文章讲的是一个电子墨水屏项目,作者花了两年时间制作。硬件部分包括esp32主控、驱动板、墨水屏、3D打印外壳和杜邦线。软件用的是MicroPython,有多个模块实现不同功能。 升级后有三种更新模式:自动每天早上8点更新万年历;被动模式通过短信和快捷指令同步信息;手动模式通过网页输入文字或上传图片更新。作者还提到了一些优化方向,比如解决HTTPS问题、降低成本和体积等。 现在要将这些信息浓缩到100字以内。重点包括项目名称、主要硬件和软件、三种更新模式以及优化方向。 可能的结构是:介绍项目,说明升级后的三种模式,最后提到优化点。 试着组织语言: “文章介绍了一个电子墨水屏项目,包含esp32主控等硬件和MicroPython软件。升级后支持自动更新、被动同步和手动输入三种模式,并提出优化方向。” 这样大约40字左右,符合要求。 </think> 文章介绍了一个电子墨水屏项目,包含esp32主控等硬件和MicroPython软件。升级后支持自动更新、被动同步和手动输入三种模式,并提出优化方向。 2026-3-29 09:38:34 Author: sspai.com(查看原文) 阅读量:5 收藏

Matrix 首页推荐

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。 
文章代表作者个人观点,少数派仅对标题和排版略作修改。


在之前的文章中,我介绍了自己花费近两年时间制作了一个电子墨水屏的经历。

系统架构介绍

针对没有阅读过上一篇文章的读者,我再来介绍一下整个项目的软硬件构成,并且公开本项目的开源地址(GitHubGitee)。

硬件结构

整个方案的硬件部分由四部分构成,分别是:

  • esp32 主控:整个系统的大脑,接收数据、处理数据、发送显示数据。这里我使用的是 esp32s3,内存大一些才能创建 400x300 的缓存区。
  • 电子墨水屏驱动板:连接开发板和墨水屏之间的桥梁,在淘宝上购买的,搜索「兼容微雪电子墨水屏驱动」。
  • 400X300 电子墨水屏:用于最终内容呈现的屏幕,在淘宝上购买的超市退役的杂牌墨水屏,只要兼容微雪电子墨水屏驱动就可以,咸鱼上还可以买到类似的屏幕。
  • 3D 打印外壳:把乱糟糟的走线,放在一个 3D 打印外壳里,更像一个标准化的产品。
  • 若干杜邦线:用来连接以上的硬件模块。

软件系统

  • 软件系统,依然采用的是我熟悉的 MicroPython 来开发,构成也比较简单:
  • main.py 文件:项目主入口,可以在这里修改墨水屏的运行模式
  • wifi.py 文件:Wi-Fi 联网和时间同步模块,用户根据配置的网络信息连接互联网,并且同步系统时间。
  • wificonfig.json 文件:用来存放 Wi-Fi 名称和密码,手动更新模式下,还可以通过同一个网页来更新 wifi 名称和密码。
  • ink_calendar.py 文件:全自动更新模式的万年历程序。
  • ink_websocket.py 文件:被动更新模式和手动更新模式,需要的 esp32 创建服务器的程序。
  • ink_display.py 文件:一个通用的将信息显示在墨水屏上的程序。
  • epaper4in2.py 文件:墨水屏的驱动程序。
  • ink_index.html 文件:手动更新时,需要使用到的本地 HTML 文件。

第一篇文章发出后,很多读者反馈是否可以开源,后续我也发现这个项目有很多可以改进的地方,所以近期又花时间做了一轮升级迭代。

升级之后,这个墨水屏可以使用多种方式来进行更新,比如:

1、自动更新模式:每天早上 8 点,自动更新今天的万年历信息;

2、被动更新模式:收到短信后,通过 iPhone 快捷指令自动同步信息到墨水屏;

3、手动更新模式:在一个网页上,输入文字或上传图片进行更新。

接下来,我就依次介绍这三种模式:

自动更新模式:万年历

效果展示

image.png

原理

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

生成次日的万年历图片.png

服务端会继续处理这张图片为墨水屏可读取的数据,并上传到一个公开的 OSS 地址上,每个客户端(也就是墨水屏设备)会在每天早上八点,根据当前日期请求对应的 OSS 地址,获取图片数据后,渲染显示在墨水屏上。

在此模式下,生成图片的过程是在服务端进行(不论有多少客户端服务端只生成一次),客户端只需要联网后,定时请求对应地址即可实现墨水屏的更新。

动更新模式:收到短信自动同步到墨水屏

效果展示

image.png
image.png

原理

电子墨水屏的 esp32 主控启动服务器模式,准备接收和处理 HTTP 或 Websocket 请求。然后在 iPhone 上创建一个快捷指令,用于将传入快捷指令的信息发送到 esp32 主控服务器上。

用于将数据发给墨水屏的快捷指令.png

然后我们在 iPhone 上继续创建一个快捷指令的自动化:收到短信之后,自动通过上一步的快捷指令发送到 esp32 主控服务器上。

由于 esp32 的性能很差并不具备图片处理能力,所以 esp32 会将收到的数据发给一个云端的「函数计算」服务,该服务会将收到的数据处理为图片数据返回给 esp32,最终显示在墨水屏上。

此模式还有更广的使用场景,比如把 iPhone 上的待办自动同步到墨水屏、把收到的邮件信息同步等,凡是快捷指令可以获取到的信息,都可以进行同步。

但此模式也有不足之处:由于在手机端发送的不是图片数据,esp32 主控也没有图片处理能力,所以需要一个实时在线的服务端来做这个事情,虽然这个服务端的函数计算成本还算低廉,但是毕竟还是多了额外的成本。

手动更新模式:输入文字或上传图片进行更新

效果展示

image.png
image.png

原理

在思考如何更好解决「服务端生成图片数据」问题时,有一天灵光闪现:其实现在手机的性能都很强了,为什么不在手机端生成图片数据后再发送呢?

同样的,在电子墨水屏的 esp32 主控上启动服务器模式,准备接收和处理 HTTP 或 Websocket 请求。客户端这边打开一个网页(也可以叫单页应用),在这个网页上可以通过局域网连接墨水屏系统,输入文字生成图片并投屏,或者上传图片进行合适截取后并投屏。

image.png

在这个投屏的过程中,前端网页已经使用 JS 的能力对文字和图片做了处理,将图片数据通过 Websocket 的方式传递给 esp32 主控。esp32 主控在收到图片数据之后,会将其保存为本地目录的一个文件,然后系统重新加载本地目录里的图片数据进行显示。

此模式不需要额外的云端服务,但也有不足之处:因为我没有解决 HTTPS 环境下,请求 HTTP 本地资源的问题,所以没有办法将这个单页应用发布为一个在线服务。使用者需要下载一个 HTML 文件打开使用,安卓设备在文件系统里直接打开,iPhone 用户还需要另外安装一个软件(如:HTML Viewer),才能打开本地 HTML 文件。

结语

这个墨水屏项目前前后后延续了很长时间,每当把这个项目放下,在其他方面学习到一些新东西之后,又会回来反哺这个项目并继续迭代改进。在这个过程中,我也体验到了非常强的成就感。

目前整个项目还有很多可以优化的点,但是由于我并不会把他做成一个真正的「产品」,所以可能会以目前的进度结束这个项目了。

当下可以优化的点包括:

  • 解决 HTTPS 环境下请求 HTTP 资源后,就可以上线一个通用的单页应用。客户端不需要下载 HTML 文件,只需要打开在线网页,输入 IP 就可以进行更新。
  • esp32s3 主控的成本还是有点高,如果不用建立缓存区的方式来更新墨水屏,可能可以用更便宜的 esp32c3。
  • 目前 3D 打印的外壳只有遮丑的作用,占用的空间也较大,可以优化走线布局缩小体积。
  • 目前供电方式为 USB 供电,如果只用万年历模式的话,其实只要每天早上八点需要消耗执行动作,其他时间都可以进入深度睡眠,这样的话就可以只用电池供电。

感兴趣的朋友欢迎在此基础上继续探索。

> 关注 少数派小红书,感受精彩数字生活 🍃

> 实用、好用的 正版软件,少数派为你呈现 🚀


文章来源: https://sspai.com/post/105990
如有侵权请联系:admin#unsafe.sh