本期再介绍一个基于 WS2812 的点阵显示屏项目。具有 20x10 像素单元,78x35 厘米的尺寸,刚好可以用来玩俄罗斯方块等复古游戏。
屏幕采用木质贴面,当 LED 关闭时,木贴面可以完全隐藏 LED,装饰效果非常棒。
border_long.dxf
[4243 Bytes at 2020-03-17, 50 次下载]
border_short.dxf
[4658 Bytes at 2020-03-17, 38 次下载]
backplane.dxf
[235926 Bytes at 2020-03-17, 37 次下载]
short_side_top.dxf
[170055 Bytes at 2020-03-17, 36 次下载]
long_side.dxf
[177036 Bytes at 2020-03-17, 37 次下载]
short_side.dxf
[184618 Bytes at 2020-03-17, 33 次下载]
short_sid_nose.dxf
[184580 Bytes at 2020-03-17, 34 次下载]
long_side_border.dxf
[179228 Bytes at 2020-03-17, 36 次下载]
short_sid_bottom.dxf
[163371 Bytes at 2020-03-17, 36 次下载]
树莓派 Zero W × 1
WS2812B LED(30 LED/m) × 200
带有 MAX7219 的 SPI LED 点阵显示器 × 4
电线 × 若干
蓝牙游戏手柄 × 1
电源5V 5A × 1
激光切割的 MDF 板 × 若干
木质贴面或扩散板 × 若干
电容 × 1
电阻 × 1
螺丝 × 若干
点阵屏的框架由 MDF 木材制成,厚度为 3mm,并通过激光切割机切割。
大多数零件只是通过嵌入固定,只有某些零件(如外框)应使用木胶将其粘合在一起。在涂任何胶水之前,请确保之前的步骤是正确的。此外,还必须粘贴木质贴面,但这是确保一切正常之后的最后一步。
在背板的右侧(下部),有一个切割的部分,用于将电子元件固定到点阵屏上,并且当胶合单板时仍然可以接通这些元件。
激光切割文件请在项目文件库中下载。
https://make.quwj.com/project/209
LED 灯条是标准的 30 LED/m WS2812 灯条。
激光切割段具有较小的切割区域,以适合 10cm 的 LED 宽度。该 LED 灯带的背面带有双面胶带,因此可以在精确定位后直接将它们直接粘贴到 MDF 上。在使用胶带之前,请检查每条灯带的正确方向( DIN-DOUT 方向)。
接线方式为锯齿形,因此在最后,点阵屏只有一个输入引脚,电缆长度应尽可能短。为了正确分配电源并减少点阵屏顶部的布线,每个 LED 灯条都连接到点阵屏底部的 5V 和 GND。可以使用单线或原型 PCB 来分配 5V 和 GND 线。
只需按照分步安装图片进行操作即可。背板具有交叉结构,以固定长侧壁和一些短侧壁。如果在安装部件时遇到问题,请使用砂纸打磨处理。
有多种方法可以将不同灯带的电源线焊接在一起。可以使用单根电线或某种铜制共轨来焊接不同的电线。在这种情况下,使用原型 PCB 块将电源轨引导到灯带。WS2812B 灯带已经有单独的电源电缆,可以使用它们将电源轨连接到第一个灯带输入(图片的左侧)。
为了显示游戏成绩和文字,使用了基于 LED 驱动器 MAX7219 的 LED 点阵屏显示器。它通过 SPI(串行外围接口)连接到树莓派。四个 8x8 显示器组合成一个 32x8 像素点矩阵显示器。可以在网上购买这种 8x8 像素显示器,也可以购买 32x8 像素组合显示器。
同样,有不同的颜色选择;在这种情况下,使用红色显示。因为 SPI 就像移位寄存器一样工作,所以通过将第一个矩阵的数据连接到第二个矩阵的数据输入,依次将这些显示器串联在一起,依此类推,从显示器的右侧开始。
如果此显示直接放置在饰面板层的后面,则只能从外部读取。如果没有,则只有红色模糊可见。因此,必须将其安装在背板切口段的顶部,背板表面与点阵屏表面之间的距离为 30mm。我使用了一些剩余的木制件和螺钉来适应底板和 PCB 之间缺少的19毫米,也可以使用任何外部类型的垫片。
显示屏的接线将在下面的步骤中进行讲解。
在此安装中,使用了树莓派 Zero。也可以使用任何其他树莓派型号,但是较新的型号具有集成的 WiFi 和蓝牙,可以轻松连接到无线游戏手柄并简化编程。
可以使用至少两个螺钉和小的垫片将树莓派固定到背板上,以固定树莓派。
对于树莓派 Zero W,使用以下引脚:
PIN 2:5V
PIN 6:GND
GPIO18-> LED灯条
GPIO11:SPI CLK -> MAX7219 matrix CLK
GPIO10:SPI MOSI -> MAX7219 matrix DIN
GPIO8:SPI CS -> MAX7219 matrix CS
根据接线方案进行接线。电源为 5V 直流电源。
为了方便点阵屏的开/关切换,在电源插头和点阵屏电路之间增加了一个开关。但是,由于树莓派不喜欢硬关闭,因此软件中有一个关闭选项,可以在切换点阵屏之前通过 Gamepad 安全关闭树莓派。
LED灯条DIN引脚通过电阻连接到Pi,还添加了一个大电容(4700uF)来缓冲电源。有关更多详细信息,请查看AdafruitÜberguidefor Neopixels。
每个 LED 消耗的最大电流为 60mA,因此最大电流为 200x60mA = 12A 是可以的。通过降低亮度并且不使用所有全白 LED,这虽然是一个理论值,但取决于达到最大电流的代码。因此,选择足够大的电源非常重要。对于大多数应用,具有 5V/5A(25W)的电源就足够了。
要将背板与树莓派和矩阵显示器固定在一起,可以使用一些小木块将它们的边缘固定,也可以使用螺钉将背板固定到位。
1、下载最新的 Raspian Lite 版镜像并安装,参考教程:
https://shumeipai.nxez.com/2013/09/07/how-to-install-and-activate-raspberry-pi.html
2、配置网络,参考教程:
https://shumeipai.nxez.com/2017/09/13/raspberry-pi-network-configuration-before-boot.html
3、在 boot 分区下添加一个名为 ssh(没有任何扩展名)的空文件以启动以启用 ssh 访问。
4、将 SD 卡插入树莓派并启动它。
5、运行下面的命令安装软件和依赖。
sudo apt-get install python3-pip
sudo pip3 install --upgrade setuptool
6、安装 Neopixel 驱动程序,ws281x lib,pygame 和 libsdl
sudo pip3 install rpi_ws281x adafruit-circuitpython-neopixels
sudo pip3 install pygame
sudo apt-get install libsdl1.2-dev
sudo pip3 install --upgrade luma.led_matrix
7、通过调用 raps-config 启用 SPI,导航至 5 接口选项 /P4 SPI/Enable
sudo raspi-config
8、添加蓝牙游戏手柄
sudo bluetoothctl
[bluetooth]# agent on
[bluetooth]# pairable on
[bluetooth]# scan on
[bluetooth]# pair aa:bb:cc:dd:ee:ff
[bluetooth]# trust aa:bb:cc:dd:ee:ff
[bluetooth]# connect aa:bb:cc:dd:ee:ff
[bluetooth]# quit
其中 aa:bb:cc:dd:ee:ff 是蓝牙游戏手柄的 MAC 地址。使用“scan on”命令后,会显示该地址。确保蓝牙控制器已准备好配对,请检查控制器手册以了解如何进行配对。
9、现在,可以通过以下方式连接到树莓派,默认密码是 raspberry(Windows 用户可以使用 Putty):
ssh pi@192.168.x.y
可以在 Github 上找到代码。games_pi_only.py 和所有 bmp 文件都是必需的。
git clone https://github.com/makeTVee/ledmatrix/tree/master/python/pi_only
该代码具有一个选项,可以使用 pygame 在树莓派之外的模拟模式下运行,以模拟点阵屏。这对开发新功能非常有帮助,而无需直接访问点阵屏硬件。而且调试也容易得多。必须设置PI常数才能激活仿真模式(第 15 行):
PI=False
在此模拟模式下,还可以使用键盘代替蓝牙游戏手柄。按钮 1、2、3、4 分别映射到游戏手柄的 A,B,X,Y,方向箭头键,“s”表示开始,“x”表示选择。可以使用标准编辑器以及控制台,也可以使用某些集成的 IDE(例如 Micosoft Visual Studio Code 或 Jetbrain PyCharm)在 PC 上进行开发。
如果使用矩阵和树莓派,则必须定义:
PI=True
要将代码复制到树莓派,可以用 scp 命令。打开控制台窗口,切换到包含 Github 文件的文件夹并运行:
scp games_pi_only pi@192.168.x.y:/home/pi
scp *.bmp pi@192.168.x.y:/home/pi
然后通过 ssh 连接到树莓派(Windows用户可以使用Putty):
ssh pi@192.168.x.y
成功登录后,通过以下命令来启动 python 代码:
sudo python3 games_pi_only.py
如果代码正确运行,则可通过以下命令启用自动启动:
sudo nano /etc/rc.local
并在出口 0 之前添加以下行:
/usr/bin/nice -n -20 python3 /home/pi/games_pi_only.py &
在将胶合板粘贴在正面顶部之前,应先测试点阵屏以确保所有 LED 都能正常工作。
木质贴面是一种特殊的枫木贴面纸,称为 Microwood,单面覆盖有纸,厚度为 0.1mm。可以使用标准的无水纸胶将纸面直接粘合在 MDF 板上。
现在可以开心的玩耍啦!