Raspberry Pi Zero驱动的哈利波特动态报纸
在这个项目中,使用定制的PCB布局中的eInk显示器和RPi Zero来创建我自己的哈利·波特报纸,上面有魔法照片。这就像是把魔法世界带进了现实,让报纸上的照片动起来,仿佛真的进入了霍格沃茨的世界。
标签
树莓派
嵌入式系统
DIY
refdesignshare
更新2024-06-11
215

在这个项目中,使用定制的PCB布局中的eInk显示器和RPi Zero来创建我自己的哈利·波特报纸,上面有魔法照片。这就像是把魔法世界带进了现实,让报纸上的照片动起来,仿佛真的进入了霍格沃茨的世界。操作简单,适合大家动手操作!

项目来源:哈利波特报纸由Raspberry Pi Zero提供支持 - Hackster.io

灵感来源

有一天,我正在社交媒体上漫无目的地刷着屏,突然,我在Hackster上发现了一个非常有趣的项目,那是Joey Castillo对Open Book Project的重新启动。他的电路板上,白色的基板配上黑色的文字,用来说明各个部分的功能,这个画面瞬间点燃了我的灵感:

我最近刚看过哈利波特,白色基板配黑色文字的画面立刻让我想到了一份报纸。然后,我想到了电子墨水屏可以通过轮换一系列的图片来制造出动态的效果,就像霍格沃茨魔法报纸一样。

于是,我立马上了Adafruit的网站去购物,我想看看有哪些电子墨水显示器的选项,以及我需要什么组件来驱动它,以便我能制作出自己定制的哈利波特报纸电路板!

配件选择

我原本计划只将树莓派Zero作为我定制电路板的外部板。电子墨水显示器的电路图可以在Adafruit的教程页面上找到,所以我最初的计划是将电路图复制粘贴到我自己的电路图中,然后简单地重新布局。

然而,在我做这个项目的时候,SRAM芯片、电压调节器和电子墨水显示器的连接器的交货时间都太长,无法在这个万圣节前完成这个项目,所以我选择将电子墨水显示器的连接器直接焊接到我定制的电路板上。

这使得配件选择变得非常简单。我只需要一个Pi Zero板、一个电子墨水显示器板、每个板子一个SMT接头,以及一个电子墨水显示器。我从Adafruit选择了短母SMT GPIO接头用于树莓派,我在Digikey找到了一个单排12针的SMT公接头。

我选择的电子墨水显示器是我在Adafruit上找到的最大的柔性电子墨水显示器:2.9英寸柔性296x128单色电子墨水显示器,带有UC8151D芯片组。

KiCad中的电路图

KiCad无疑是我最喜欢的PCB布局软件。我首先把树莓派和电子墨水显示器接头之间的连接电路图放在一起。

我还在电路板上添加了总共10个安装孔:4个用于树莓派Zero,2个用于电子墨水显示器,然后为整个PCB自身添加了4个,这样我就可以使用较长的支架,使其不会在背面的树莓派和电子墨水显示器板上放置。

我使用了库中的Raspberry_Pi_2_3符号,因为引脚排列是与Pi Zero相同的GPIO。然后,我为其分配了2.54mm SMT封装。

KiCad 中的 PCB 布局

将电路图导出到PCB后,就到了有趣的部分:布局。总体计划是将电子墨水显示器和树莓派Zero板放在PCB的一侧,然后将电子墨水显示器本身放在另一侧,由所有的"新闻版面"环绕在丝网印刷上,就像电子墨水是报纸的头版头条照片一样。这意味着所有组件的物理位置都非常重要,特别是电子墨水显示器接头的位置,以确保电子墨水显示器本身的扁平弯曲能够到达它。

首先,我在边缘切割层上绘制了我的电路板的边界,因为我将使用边缘的X/Y位置来基础放置其他所有东西。

关于与接头相关的安装孔位置的测量,我在这里找到了树莓派Zero的安装孔的具体尺寸,以便在我的电路板上重现:

电子墨水显示器板的安装孔有点棘手,因为Adafruit的板文件是Eagle格式而不是KiCad格式。我没有安装Eagle,而是直接阅读Github中的板文件的原始代码,通过关键字"mount"来找到我需要的信息。

起初,我只是打算将 eInk 显示器放在报纸 PCB 的边缘附近,以便将其包裹起来。但我最终决定在 Edge Cuts 层添加一个插槽切口,以便于 eInk 弯曲,因为让 eInk 显示器更居中地放在板上看起来更好。

我在 Word 文档中输入了文章的每个简介,然后将它们复制+粘贴到丝网印刷层上的文本框中。这更容易,因为 KiCad 中没有拼写检查,而且我不想出现任何令人尴尬的错别字......

此外,由于我将 SMT 标题放在顶层,因此我将所有新闻纸的丝网印刷放在背面丝网印刷层而不是正面。

最终的 3D 渲染没有让人失望:

我提交了订单,选择了After Dark 基材/面膜选项,因为今天是万圣节,并焦急地等待他们的到来......

我首先开始将公头插座针焊接到Raspberry Pi Zero W上。如果你想知道为什么我没有购买已经焊接了插座的版本,那是因为预装了插座的树莓派Zero的插座都在树莓派板的顶部,但我想要它们在底部。

然后,我将SMT针座焊接到PCB上:

幸运的是,在开始之前我注意到了操作顺序的重要性。我需要先在PCB上焊接1x12 SMT插座,然后再将电子墨水屏焊接上去,因为如果先焊接电子墨水屏,我就无法接触到SMT插座下方被电子墨水屏板遮挡的焊盘了。

在完成所有焊接工作后,我用支撑螺丝安装了Pi Zero。但是,我没有足够短的支撑件来适配电子墨水屏(直到我试图将电子墨水屏连接到公头插座时,我才注意到照片中的支撑件太高了)。

然后,我通过切口将eInk屏通过切口穿过去,并将其固定在PCB的前侧:

最后,我用一段环形的透明胶带将电子墨水显示屏固定在PCB的另一侧。

设置Raspberry Pi Zero

我使用的是树莓派Zero W V1.1版本,我特意选择了无线型号,这样我就可以通过Wi-Fi使用安全复制命令从我的主要计算机轻松上传新的eInk Python脚本图像。这样,除了micro-USB电源之外,就不需要其他的物理连接了。

我下载了最新版本的树莓派Imager工具,并为树莓派Zero W V1.1创建了一个新的SD卡。非常重要的一点是,如果你使用的是V1.1版本,就不要选择Pi Zero W 2,因为Pi Zero W 2的64位操作系统在Pi Zero W V1.1上无法工作,你将永远停留在彩虹启动屏幕上。

出现提示时,选择编辑操作系统的设置以设置主机名、用户名/密码,并使用我的 Wi-Fi 凭据配置无线局域网:

对于Pi Zero W的首次启动,我连接了一台显示器和键盘/鼠标来进行初始更新和操作系统配置。

whitney@raspberrypi:~ $ sudo apt udpate
whitney@raspberrypi:~ $ sudo apt upgrade
whitney@raspberrypi:~ $ sudo raspi-config

在接口选项下,我启用了 SSH 和 VNC 以无线远程访问 Pi(奇怪的是,尽管我在 Raspberry Pi Imager 工具中启用了它,但在对 SD 卡进行映像时,SSH 在启用它之前不起作用)。我还启用了 SPI 和 I2C,因为 eInk 显示器需要 SPI。

退出 Raspberry Pi 配置编辑器并重新启动后,我测试了主计算机的 SSH 连接,然后断开了显示器和键盘/鼠标的连接(请务必将“whitney”替换为您在 Raspberry Pi Imager 工具中指定的任何用户)。

whitneyknitter@Whitneys-MBP ~ % ssh whitney@192.168.1.231

连接到 Pi 后,我安装了与 eInk 显示器和 eInk Friend 板通信所需的所有 Adafruit Python 驱动程序:

whitney@raspberrypi:~ $ pip3 install Adafruit-PlatformDetect
whitney@raspberrypi:~ $ pip3 install Adafruit-Blinka
whitney@raspberrypi:~ $ pip3 install adafruit-circuitpython-epd

并克隆了他们的 Circuit Python eInk Paper 显示存储库,以将他们的示例脚本作为我的主 Python 脚本旋转正在显示的图像的起点:

whitney@raspberrypi:~ $ git clone https://github.com/adafruit/Adafruit_CircuitPython_EPD.git

克隆完成后,我还下载了字体文件到脚本的主目录(即示例目录),以便Pillow库能够在显示屏上绘制的任何图像中创建文本。

whitney@raspberrypi:~ $ cd ./Adafruit_CircuitPython_EPD/examples/
whitney@raspberrypi:~/Adafruit_CircuitPython_EPD/examples $ wget https://github.com/adafruit/Adafruit_CircuitPython_framebuf/raw/main/examples/font5x8.bin

驱动 eInk 显示的 Python 脚本

最终,我从示例目录中取出脚本,并在绘制图像的两个实例周围放置了一个循环。因此,一旦运行这个脚本,它就会在电子墨水显示屏上循环显示两幅图像,直到收到Ctrl+C键盘中断。我发现UC8151D的底层驱动程序已经内置了时间延迟,所以我的顶层Python脚本中没有必要再添加它们。

epd_pillow_image.pywhile True

我决定让它在ChatGPT的logo和伏地魔的图片之间切换,因为我编了一个小笑话,说ChatGPT实际上是他伪装的(请告诉我,我不是唯一觉得这好笑的人,哈哈)。

另外,由于显示屏在弯曲到PCB的另一侧时实际上是倒置的,我不得不将图像旋转成倒置。这样,它们在背面的丝网印刷新闻纸上就以正确的方向显示了。这些图像仅仅是从谷歌图片搜索中截取的屏幕截图,并赋予了.png扩展名。

由于我需要在我的主计算机上创建图像,我决定在主计算机上修改脚本(重命名为epd_pillow_hp_newspaper.py)会更简单,然后使用scp命令将它们传输到Pi上。

whitneyknitter@Whitneys-MBP ~ % scp -O ./epd_pillow_hp_newspaper.py ./lordV.png ./chatGPT_logo.png whitney@192.168.1.231:/home/whitney/Adafruit_CircuitPython_EPD/examples

最终产品

最后,是时候看看这一切的实际效果了。所以我运行了脚本并屏住了呼吸!!

whitney@raspberrypi:~/Adafruit_CircuitPython_EPD/examples $ python3 ./epd_pillow_hp_newspaper.py

老实说,它的成品比我想象的还要酷。内置在EPD驱动中的电子墨水刷新时间有点慢,但它仍然非常酷!我也很高兴我实际上构建了一件能工作的东西!

KiCad文件
使用说明
全屏
附件下载
epd_pillow_hp_newspaper_py.py
团队介绍
Whitney Knitter
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号