前言
最开始接触 DIY 墨水屏是在网上看到了一篇文章,里面介绍了如何使用树莓派和墨水屏制作一个「一年只放一部电影的墨水屏相框」。当时看到这个创意的时候真的很震撼,以至于虽然理性告诉我这个东西没什么用,但是感性还是让我非常诚实地打开了淘宝。
因为有一点基础,用的也都是现成的组件,我其实很快就做出了成品。整个过程相当有意思,制作难度并不高,于是写成这篇零基础的分享,供有兴趣的朋友尝试。
成品展示
制作门槛
虽然不想打击大家 DIY 的积极性,但是有些门槛还是需要提前说清楚的,以免浪费大家的时间。
首先是成本问题。比较便宜的树莓派型号也要大几十块钱,搭配上 SD 卡之类的配件,三位数总是要花的。更贵的是墨水屏:五六寸的低分辨率屏也要个两三百,七八寸的高分辨率屏卖七八百也属于正常。就我的实际使用体验来说,如果是想要达到慢放电影的程度,怎么着也得买一块分辨率高一点的,所以成本基本就要小一千。这还没有算上其他可能用到的工具。
经济成本之外更大的障碍可能是时间成本。按照我文中的步骤操作的话,一晚上肯定能够把功能调试完成。但是要把这些部件安装固定到一个合心意的相框中,那就可能要花费一番功夫了。自用的话,把电路板用热熔胶粘在相框背面倒是没啥问题;但是如果想送人的话,最好还是把电路隐藏起来,以免发生不必要的损坏。
美观效果需要焊接。调试的过程中,使用杜邦线连接各部件即可,但是实际安装的时候最好还是使用焊接的方式。因此如果以前学过电子元器件焊接,并且家里有现成的焊接设备,那就可以在安装的时候获得更多的自由度。不是说不焊不行,而是会焊更好。
扩展功能需要一定编程基础。我是使用 Python 编写的墨水屏控制程序,所以如果会一点 Python 的话调试起来更加简单,而且可以很方便地扩展相框的功能。当然不会也完全没有问题,只不过这样的话你就只能使用一些我预先编写好的模式了。
硬件介绍
树莓派
本文读者可能大多都很熟悉树莓派了,但还是简单介绍一下。这其实就是一台低功耗低算力的 Linux 服务器。但与普通服务器不同的是,它自带 40 个 GPIO 引脚,可以很方便地接入各种开关、传感器等电子元器件。
更多相关的信息可以查看树莓派的官网及相关论坛:树莓派官网 | 树莓派实验室
因为本次的主题是制作相框,考虑到体积和性能需求,我这里比较推荐使用 Raspberry Pi Zero 2 W。当然不差钱且不在乎体积的话也完全可以使用性能更高的 4B 等版本,多出来的性能和接口也有许多其他办法可以利用起来。不过这些不在本篇文章的谈论范围内,各位玩熟了树莓派后大可自己尝试一番。
墨水屏
我本身只买过几块墨水屏,并且都是微雪的,所以这里也只能介绍一下该品牌的墨水屏。1
微雪的墨水屏从控制方式来讲主要分为两类,一类是屏幕背板上自带控制器的低配版,这种屏幕一般支持的灰度等级在 4 级及以下;另一种是需要搭配 IT8951 驱动板的高配版,一般支持最高 16 级的灰度等级。
支持的灰度等级越高,屏幕的显示质量就越好,五彩缤纷的灰肯定比单色的灰更能体现颜色的层次和细节。
上图是微雪官网上发布的墨水屏产品选型参考表,图中框出来的两款型号是我用过的比较有代表性的两款,分别对应之前提到过的两种墨水屏。
- 如果是想拿来当轮播相册,那建议不要选黑白的(不太吉利……),7.3 英寸的七彩屏可能更为合适。微雪官方就有卖,不需要 DIY。
- 如果是想慢放电影,那么就更推荐 16 灰度的高分辨率黑白屏。与可以精挑细选的普通照片不同,电影是光影的艺术,每一帧都可能碰到极为复杂的场景,画面上的光影层次会非常丰富,灰度等级不够的话看上去就是毫无美感的一团灰。
除了显示颜色、灰度、分辨率之外,刷新时间也是需要考虑的一项内容。如果仔细看上面的选型表的话不难发现,显示颜色越多,刷新时间也越多。这是因为多色屏每次刷新时,并不是一次刷新所有像素点的颜色,而是一种颜色刷新一次,有几种颜色就刷新几次。因此,七彩屏的刷新时间达到 35 秒也就不足为奇了。好在大部分情况下刷新时间的影响并不大,毕竟相册或是数据展示之类的场景,都不需要频繁的刷新。
其他
因为树莓派有 40 个 GPIO 口,除了连接墨水屏其实还可以连入开关、蜂鸣器、传感器等其他电子元器件。这些元器件并不是必须的,属于锦上添花的东西,完全可以不买。后期如果想加上去了,再花个几块钱买来也不迟。
传感器接入方式多种多样,我这里就不多介绍了,主要讲一下开关和无源蜂鸣器。为了方便接入,推荐购买封装好的模块。淘宝上相关的店铺非常多,我比较常买的店是「risym 旗舰店」,主要买这几样东西:
- 大按键模块:用来作为模式切换的实体按键,建议配一个,方便使用。
- 无源蜂鸣器模块:用来作为模式切换时的提示音来源,虽然我写了相关代码,但是实际组装的时候因为嫌麻烦没有实装。
- 母对母杜邦线:调试时用来连接各电子元器件,当然,如果最后成品里塞得下的话也可以保留到最后。
- OK 线:调试完成后实际焊接电路时使用。
系统安装
系统烧录
树莓派是相当成熟的产品,官网上有现成的镜像烧录软件,我这里不多做拓展,就介绍一下最正统、最简单的官方方法。
首先去树莓派官网下载 Raspberry Pi Imager,然后一路保持默认选项安装好该软件。
树莓派的系统是安装在 SD 存储卡上的,所以在需要准备好,里面有重要资料的话提前备份转移。
我这里是以 Raspberry Pi Zero 2 W 为例,因为其性能有限,所以会安装不带图形界面的 Lite 版本系统。官方文档推荐该版本系统使用 4GB 以上容量的 SD 卡,不过为了方便后续在里面放置电影等显示素材,我更推荐 16GB 以上的容量。
准备好后将 SD 卡插入读卡器中连接到电脑,打开 Raspberry Pi Imager 软件。依照界面提示依次选择设备、操作系统、存储卡,然后点击 NEXT。系统选择步骤中,不要选择默认的版本,而是在「Raspberry Pi(other)」中找到 64 位的 Lite 版本。
点击 NEXT 后会跳出一个选项,让你编辑设置。这里一定要编辑,不然后面还要手动修改,比较麻烦。
设置具体仿照下图。网络这里最好是 2.4G 的 WiFi,5G 的可能不一定兼容。开启 SSH 服务,新手建议勾选使用密码登录,虽然确实不如密钥来的安全,但是本地使用的话更加方便。
保存配置后就可以写入,等到跳出烧录成功的提示框就可以拔出 SD 卡,将其装入树莓派了。
SSH 登录
因为安装的是不带图形桌面的 Lite 版本树莓派系统,所以只能通过 SSH 的形式以命令行命令来操控树莓派。不过也不用害怕,常用的命令也就那么几个,用习惯了甚至比鼠标点击还方便。
但在正式开始之前,还有一些准备工作。
首先是上电开机。之所以要单独拿出来讲,是因为 Zero 系列一般有两个 Micro USB 口,理论上两个口都可以供电,但是它们是不一样的。
- 标有「PWR IN」的是单纯的电源口,如果不想和电脑传输数据,建议从此处取电,通过数据线连到普通的 5V 充电头上即可。
- 标有「USB」的是与电脑的通讯口,通过数据线连接到电脑 USB 口即可取电。当然这个口也可以当成普通供电口使用。
树莓派默认通电启动,也就是说插上电等它开机完成就可以了,正常情况下通电后主板上的指示灯会开始闪烁,等指示灯常亮后即代表启动完成。特别提醒一句,通电之后不要触碰树莓派上任何裸露在外面的元器件和金属触点,不然短路烧掉了可怪不了别人。
如果之前设置的 WiFi 没有问题,此时树莓派应该已经连接上了无线路由器。打开路由器的后台管理界面,查看树莓派被分配的局域网 IP 地址,一般主机名就叫「raspberry」。没有的话就多等一会,刷新一下管理界面,如果实在找不到的话可以参考开启 usb 共享网络功能,尝试通过 USB 连接的方式访问树莓派。
拿到 IP 地址之后,接着在电脑上安装 WinSCP 以及 SecureCRT,前者是用来上传文件到树莓派中,后者是用来执行命令行命令。当然,你也可以使用自己喜欢的 SSH 软件,这里只是推荐两个我用的顺手的。
先打开 SecureCRT,新建一个连接,「Hostname」就是之前查找到的树莓派 IP 地址,「Username」就是在烧录树莓派系统时在配置页面创建的用户名。
创建完成后在左侧的地址栏中双击刚才创建好的连接,按照提示输入用户密码后就可以进入树莓派的命令行。
接着我们打开 WinSCP,用类似的方式创建连接并登录。WinSCP 可以很方便地在本地与树莓派之间传输文件,操作逻辑与资源管理器类似。
系统换源与更新
树莓派毕竟是国外的产品,官方系统默认的软件源都是国外的服务器,下载更新的速度非常缓慢,所以想要正常使用,第一步就需要更换软件源。
首先确定系统架构和发行版本,我用做示例的这个树莓派为「aarch64」和「Debain 11(bullseye)」,根据自己的实际显示结果确定。
uname -a
lsb_release -a
国内这种镜像源很多,基本每个互联网大厂都有公开的软件源,我个人比较常用清华的镜像源,这里也以其为例。打开清华大学开源软件镜像站的说明文档,按照页面上的提示选择合适的系统架构和版本,就能得到一段地址文本,将其复制下来。
在树莓派上依次执行如下命令:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo nano /etc/apt/sources.list
第一行是将原本的软件源配置文本复制备份一份,第二行是使用系统自带的文本编辑器打开软件源配置文本。
进入 nano 编辑器后右键将刚才复制的地址粘贴上去,然后按下Ctrl+O
,接着回车保存修改,最后按下Ctrl+X
退出编辑器。
这样系统软件源就算是修改完成了,接着我们运行更新命令,更新系统软件:
sudo apt-get update && sudo apt-get upgrade
运行过程中会出现一次确认选项,输入「y」后回车即可继续运行。
类似地,树莓派系统自带 Python 环境,和系统软件源类似,最好也换成国内源,可以加快安装速度。运行如下命令:
mkdir ~/.pip
nano ~/.pip/pip.conf
将下面的内容复制到 pip.conf 文件中,然后保存:
[global]
timeout =6000
index-url =http://pypi.douban.com/simple/
[install]
use-mirrors =true
mirrors =http://pypi.douban.com/simple/
trusted-host =pypi.douban.com
这里顺便安装一下 pip 工具,方便后面安装第三方包:
sudo apt-get install python3-pip
开启 SPI 功能
为了让树莓派与墨水屏能够通讯,必须开启树莓派的 SPI 接口功能。输入如下命令:
sudo raspi-config
运行后就会进入树莓派的功能配置界面,按照下图依次操作,方向键用来移动光标,回车键确定。
完成设置后重启树莓派配置就会生效。
sudo reboot
墨水屏连接
在正式开始连接之前请先使用 poweroff
命令将树莓派关机,然后拔下电源线,确保树莓派处于断电状态。接线的时候保持断电是个很好的习惯,虽然我本人经常带电接线,但「马有失蹄,人有失手」,说不定哪天手一滑就短路烧掉了,最好不要抱有侥幸心理。
另外,我下面所讲的内容大多是一些基本的概念,是对官方教程的补充和拓展。在实际动手之前请一定先把墨水屏厂商给出的相关开发资料看完,以免造成不必要的损失,毕竟墨水屏也不便宜。
无驱动板屏幕的连接
这里以 5.65 寸彩色电子墨水屏为例,打开其官网详情页可以很轻松地找到它的产品资料。
正常都是使用 8PIN 排线连接树莓派的 GPIO 口,文档中会给出对应的引脚关系,按照上面的编连接即可。特别要注意的是 VCC 引脚一定要看清是 3.3V 还是 5V,以免损坏屏幕。
上表2中给出了两种编码序号,分别是 BCM 和 Board。
- Board 表示物理引脚顺序,也就是下图中按照顺序排列的 1—40。这里顺便提一句,如果不确定哪个是 1 号接口的话,可以看这些 GPIO 口的焊盘,1 号口的焊盘是正方形,其他都为圆形。
- BCM 就相当于是按照引脚的功能划分给其取个大名。简单理解就是树莓派上的 40 个 GPIO 接口每一个都有两个名字,一个大名,一个小名,虽然叫法不一样,但是指代的接口都是同一个。
如果是用来接线的话,看 Board 序号可能更好找一点。如果不知道 BCM 和 Board 之间的对应关系时,也可以直接在树莓派中输入如下命令来查看:
pinout
知道如何分辨树莓派上的接口后,我们再来看看墨水屏上的接口。这种墨水屏一般都会随屏幕附赠一条 8PIN 的连接线,调试的时候相当方便。