由 Raspberry Pi Zero 提供支持的木制 LED 游戏显示器





准备工作:
材料:
- Raspberry Pi Zero W(经过一些调整,所有其他型号也可以使用)
- 200 LED/s(WS2812B 个 LED 灯条,30 LED/m)
- 4 个 SPI LED 矩阵显示器,带 MAX7219
- 电缆
- 蓝牙游戏手柄
- 电源 5V,至少 5A
- 用于激光切割的 MDF 木材
- 木质单板或扩散亚克力板
- 电容器、电阻器
- 一些螺丝
激光切割





矩阵的底座结构由厚度为 3 毫米的 MDF 木材制成,并由激光切割机切割。如果您没有激光切割机,您可以使用 ponoko.com 或 formulor.de 等在线服务,或者联系您环境中的下一个 fablab/创客空间。也可以使用纸板或其他较轻的材料,但所附文件的设计厚度为 3 毫米,因此更薄或更厚的材料需要重新设计文件。设计是在 Fusion 360 中完成的。 大多数部件只需将它们滑入到位即可固定在一起,只有一些部件(如外边框)应使用木胶粘合在一起。在涂抹任何胶水之前,请确保您的基质完全正常工作!此外,还必须粘上木饰面,但这是确保一切正常后的最后一步。
在背板的右侧(下)侧,有一个切口段用于将电子元件固定到矩阵上,并且在胶合单板时仍然可以接触到这些元件。
安装 LED





LED 灯条是标准的 30 LED/m WS2812 灯条,可在亚马逊、eBay 或世界各地的其他在线商店购买。这通常也是最便宜的可寻址 LED 灯条。如果您想使用其他 LED,则必须确保 30 LED/m 的距离适合矩阵图案。激光切割的段具有较小的切口区域,以适应 10 cm 的 LED 宽度。这款 LED 灯条背面有双面胶带,因此您可以在精确定位后将它们直接粘在 MDF 上。在使用胶带之前,请检查每个条带的正确方向(DIN-DOUT 方向)。
布线模式是锯齿形的,因此在最后,矩阵只有一个输入引脚,电缆长度尽可能短。为了适当分配功率并减少矩阵顶部的布线,每个 LED 灯条都连接到矩阵底部的 5V 和 GND。您可以使用单线或原型 PCB 来分配 5V 和 GND 线。
组装










分解视图有助于识别装配的正确件。只需按照分步安装图片进行作即可。背板具有交叉结构,用于固定长侧壁和一些短壁。如果您在安装部件时遇到问题,请使用砂纸修复它。
焊接




有多种方法可以将不同条纹的电源线焊接在一起。您可以使用单根电线或某种铜制共轨来焊接不同的电线。在这种情况下,使用原型 PCB 将电源轨引导到条带。WS2812B条已经有单独的电源线,您可以使用它们将电源轨连接到第一个条带输入(图片左侧)。
安装 SPI Display

为了显示游戏分数和文本,使用了基于 LED 驱动器MAX7219的 LED 矩阵显示。它通过 SPI(串行外设接口)连接到 Raspberry Pi。四个 8x8 显示器组合成一个 32x8 像素的点阵显示器。您可以在 eBay 等位置购买这种 8x8 像素的显示器,也有组合的 32x8 像素显示器可供选择。此外,您还有其他颜色选项;在这种情况下,使用了红色显示器。因为 SPI 的工作原理类似于移位寄存器,所以通过将第一个矩阵的数据连接到第二个矩阵的数据,以此类推,从显示器的右侧开始,将显示器串行连接在一起。
如果此显示直接放置在单板层后面,则只能从外部读取。否则,则只有红色模糊可见。因此,您必须将其安装在背板开孔段的顶部,背板表面与矩阵表面之间的距离为 30mm。我使用了一些剩余的木片和螺钉来调整背板和 PCB 之间缺失的 19 毫米,但您也可以使用任何外部类型的垫片。
显示屏的接线如步骤 7 所示。
安装树莓派





在此安装中,使用了 Raspberry Pi Zero。您也可以使用任何其他 Raspberry Pi 型号,但具有集成 WiFi 和蓝牙的较新型号可让您轻松连接到无线游戏手柄并简化编程。 您可以通过至少使用两个螺钉和小垫片将 Pi 拧到背板来固定 Pi。
对于 Raspberry Pi Zero W,使用以下引脚:
- 引脚 2:5V
- 引脚 6:接地
- GPIO18 -> LED 灯条
- GPIO11:SPI CLK -> MAX7219 矩阵 CLK
- GPIO10:SPI MOSI > MAX7219 矩阵 DIN
- GPIO8:SPI CS -> MAX7219 矩阵 CS
有些人报告了将 GPIO18 用于 LED 的问题。在这种情况下,请使用 GPIO21。如果是这样,您必须将第 21 行中的代码更改为 pixel_pin = board。第 21 页。
WS2812B条在其规格之外使用。通常它需要在 DIN 上具有 5V 的逻辑电平,但 Pi 仅提供 3,3V。即使这在大多数情况下有效,您也应该用您的试纸进行测试。如果它不起作用,您可以在 Pi 和条带之间添加一个电平转换器,如 74HCT245 或任何其他 3V3 到 5V 转换器。
接线和电源







根据布线方案进行布线。电源为 5V 直流电源。
为了轻松打开/关闭矩阵,在电源插头和矩阵电路之间添加了一个开关。尽管如此,由于 Raspberry Pi 不喜欢硬关闭,因此软件中有一个关机选项,可以在切换矩阵之前通过 Gamepad 安全地关闭 Pi。
LED 灯条 DIN 引脚通过电阻器连接到 Pi,还添加了一个大电容器 (4700uF) 以缓冲电源。有关更多详细信息,请查看 Adafruit Überguide for Neopixels。
每个 LED 的最大电流为 60mA,因此最大电流为 200x60mA = 12A!!通过降低亮度并且不使用所有全白 LED,这更像是一个理论值,但这取决于达到最大电流的代码。所以选择足够大的电源非常重要。对于大多数应用,5V/5A (25W) 的电源就足够了。
要使用 Pi 和 Matrix 显示器固定背板,可以使用一些小木头在边缘擦洗它们,也可以使用螺钉将背板固定到位。
设置 Pi

1. 从 raspberrypi.org 下载最新的 Raspbian lite 映像
2. 复制到 SD 卡,8GB 就足够了。您可以使用 例如 etcher 来执行此作。
3. 使用 SD 卡启动 Pi 之前,请准备 WIFI 和 ssh 访问
4. 将 SD 卡插入任何计算机,应可以访问启动文件夹
5. 将以下行复制到文件 wpa_supplicant.conf 中(如果不存在,请生成它)并根据您的 Wifi 和区域更改参数
6. 添加一个名为 ssh 的空文件(不带任何扩展名)以启用 ssh 访问
7. 现在将 SD 卡插入 Raspberry Pi 并启动它。检查您的 wifi 路由器以获取 Pi 的 IP 地址
8. 使用终端(Linux、Mac)或 Windows 上的 Putty 等启动与 Pi 的 SSH 连接。插入 Pi 的 IP 而不是 192.168.x.y
9. 更新 Pi(需要一些时间!
10. 安装 pip 并设置工具
11. 安装 Neopixel 驱动程序、ws281x lib、pygame 和 libsdl
12. 调用 raps-config 启用 SPI,导航到 5 个接口选项 / P4 SPI / 启用
13. 添加蓝牙游戏手柄
其中 aa:bb:cc:dd:ee:ff 是您的蓝牙游戏手柄的 MAC 外观。此地址应在调用 “scan on” 命令后显示。确保您的蓝牙控制器已准备好配对,请查看控制器的手册如何执行此作。
14. 您现在可以通过以下方式连接到您的 Pi,默认密码为 raspberry(Windows 用户可能会使用 Putty):
Python 代码、测试和模拟器





代码可在 Github 上找到。games_pi_only.py 和所有 bmp 文件都是必需的。
该代码可以选择在 Pi 外部以模拟模式运行,使用 pygame 来模拟矩阵。这对于在不直接访问 matrix 硬件的情况下开发新功能非常有帮助。此外,调试也容易得多。您必须设置 PI 常数才能激活仿真模式(第 15 行):
在此模拟模式下,使用 Keyboard 而不是 Bluetooth 游戏手柄。按钮 1、2、3、4 映射到游戏手柄的 A、B、X、Y,箭头键用于方向,“s”用于开始,“x”用于选择。您可以使用标准编辑器和控制台或一些集成的 IDE(如 Micosoft Visual Studio Code 或 Jetbrain PyCharm)在您的 PC 上进行开发。
如果使用矩阵和 Raspberry Pi,则必须定义:
要将代码复制到 Raspberry Pi,您可以使用 scp 命令 (Windows WinSCP)。打开控制台窗口,切换到包含 Github 文件的文件夹,然后调用
然后通过 ssh 连接到 Pi(Windows 用户可以使用 Putty):
成功登录后,您可以通过调用以下命令来启动 Python 代码:
如果代码运行正确,您可以通过调用以下命令来启用自动启动:
并在 exit 0 之前添加以下行:
保存 (Ctrl+O) 和退出 (Ctrl+X)
最终测试和单板





在将单板涂在正面顶部之前,应测试矩阵以确保所有 LED 都正常工作。在贴上单板之前修复一些东西要容易得多。
用过的木单板是一种称为 Microwood 的特殊枫木单板纸,它的单面覆盖有纸,厚度为 0,1 毫米。纸面可以使用标准的无水纸胶直接粘在 MDF 上。
结果




玩得开心,享受游戏!











