百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

树莓派制造木制 LED 显示器,只需几百元,从此过瘾玩游戏

csdh11 2024-12-05 10:26 15 浏览

这个是老外做的,转载至:趣无尽 Cherry

来,首先看看效果:

本期再介绍一个基于 WS2812 的点阵显示屏项目。具有 20×10 像素单元,78×35 厘米的尺寸,刚好可以用来玩俄罗斯方块等复古游戏。
屏幕采用木质贴面,当 LED 关闭时,木贴面可以完全隐藏 LED,装饰效果非常棒。


材料清单

树莓派 Zero W × 1WS2812B 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

LED 灯条是标准的 30 LED/m WS2812 灯条。

激光切割段具有较小的切割区域,以适合 10cm 的 LED 宽度。该 LED 灯带的背面带有双面胶带,因此可以在精确定位后直接将它们直接粘贴到 MDF 上。在使用胶带之前,请检查每条灯带的正确方向( DIN-DOUT 方向)。

接线方式为锯齿形,因此在最后,点阵屏只有一个输入引脚,电缆长度应尽可能短。为了正确分配电源并减少点阵屏顶部的布线,每个 LED 灯条都连接到点阵屏底部的 5V 和 GND。可以使用单线或原型 PCB 来分配 5V 和 GND 线。

组装

只需按照分步安装图片进行操作即可。背板具有交叉结构,以固定长侧壁和一些短侧壁。如果在安装部件时遇到问题,请使用砂纸打磨处理。

焊接

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

安装 SPI 显示

为了显示游戏成绩和文字,使用了基于 LED 驱动器 MAX7219 的 LED 点阵屏显示器。它通过 SPI(串行外围接口)连接到树莓派。四个 8×8 显示器组合成一个 32×8 像素点矩阵显示器。可以在网上购买这种 8×8 像素显示器,也可以购买 32×8 像素组合显示器。

同样,有不同的颜色选择;在这种情况下,使用红色显示。因为 SPI 就像移位寄存器一样工作,所以通过将第一个矩阵的数据连接到第二个矩阵的数据输入,依次将这些显示器串联在一起,依此类推,从显示器的右侧开始。

如果此显示直接放置在饰面板层的后面,则只能从外部读取。如果没有,则只有红色模糊可见。因此,必须将其安装在背板切口段的顶部,背板表面与点阵屏表面之间的距离为 30mm。我使用了一些剩余的木制件和螺钉来适应底板和 PCB 之间缺少的19毫米,也可以使用任何外部类型的垫片。

显示屏的接线将在下面的步骤中进行讲解。

安装树莓派

在此安装中,使用了树莓派 Zero。也可以使用任何其他树莓派型号,但是较新的型号具有集成的 WiFi 和蓝牙,可以轻松连接到无线游戏手柄并简化编程。可以使用至少两个螺钉和小的垫片将树莓派固定到背板上,以固定树莓派。

对于树莓派 Zero W,使用以下引脚:

PIN 2:5VPIN 6:GNDGPIO18-> LED灯条GPIO11:SPI CLK -> MAX7219 matrix CLKGPIO10:SPI MOSI -> MAX7219 matrix DINGPIO8: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

Python 代码,测试和模拟器

可以在 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 板上。

完工!

现在可以开心的玩耍啦!



欢迎关注技术阁,发布有趣的科技资讯,分享有料的技术干货。

相关推荐

NUS邵林团队发布DexSinGrasp基于强化学习实现物体分离与抓取统一

本文的作者均来自新加坡国立大学LinSLab。本文的共同第一作者为新加坡国立大学实习生许立昕和博士生刘子轩,主要研究方向为机器人学习和灵巧操纵,其余作者分别为硕士生桂哲玮、实习生郭京翔、江泽宇以及...

「PLC进阶」如何通过编写SCL语言程序实现物料分拣?

01、前言SCL作为IEC61131-3编程语言的一种,由于其高级语言的特性,特别适合复杂运算、复杂数学函数应用的场合。本文以FactoryIO软件中的物料分拣案例作为硬件基础,介绍如何通过SCL来实...

zk源码—5.请求的处理过程一(http1.1请求方法)

大纲1.服务器的请求处理链...

自己动手从0开始实现一个分布式 RPC 框架

前言为什么要自己写一个RPC框架,我觉得从个人成长上说,如果一个程序员能清楚的了解RPC框架所具备的要素,掌握RPC框架中涉及的服务注册发现、负载均衡、序列化协议、RPC通信协议、Socket通信、异...

MLSys’25 | 极低内存消耗:用SGD的内存成本实现AdamW的优化性能

AIxiv专栏是机器之心发布学术、技术内容的栏目。过去数年,机器之心AIxiv专栏接收报道了2000多篇内容,覆盖全球各大高校与企业的顶级实验室,有效促进了学术交流与传播。如果您有优秀的工作想要分享,...

线程池误用导致系统假死(线程池会自动销毁吗)

背景介绍在项目中,为了提高系统性能使用了RxJava实现异步方案,其中异步线程池是自建的。但是当QPS稍微增大之后却发现系统假死、无响应和返回,调用方出现大量超时现象。但是通过监控发现,系统线程数正常...

大型乘用车工厂布局规划(六大乘用车基地)

乘用车工厂的布局规划直接影响生产效率、物流成本、安全性和未来扩展能力。合理的布局应确保生产流程顺畅、物流高效、资源优化,并符合现代化智能制造和绿色工厂的要求。以下是详细的工厂布局规划要点:1.工厂布...

西门子 S7-200 SMART PLC 连接Factory IO的方法

有很多同学不清楚如何西门子200smart如何连接FactoryIO,本教程为您提供了如何使用西门子S7-200SMARTPLC连接FactoryIO的说明。设置PC和PLC之间的...

西门子博图高级仿真软件的应用(西门子博途软件仿真)

1.博图高级仿真软件(S7-PLCSIMAdvancedV2.0)S7-PLCSIMAdvancedV2.0包含大量仿真功能,通过创建虚拟控制器对S7-1500和ET200SP控制器进行仿真...

PLC编程必踩的6大坑——请对号入座,评论区见

一、缺乏整体规划:面条式代码问题实例:某快递分拣线项目初期未做流程图设计,工程师直接开始编写传送带控制程序。后期增加质检模块时发现I/O地址冲突,电机启停逻辑与传感器信号出现3处死循环,导致项目延期2...

统信UOS无需开发者模式安装软件包
统信UOS无需开发者模式安装软件包

原文链接:统信UOS无需开发者模式安装软件包...

2025-05-05 14:55 csdh11

100个Java工具类之76:数据指纹DigestUtils

为了提高数据安全性,保证数据的完整性和真实性,DigestUtils应运而生。正确恰当地使用DigestUtils的加密算法,可以实现数据的脱敏,防止数据泄露或篡改。...

麒麟KYLINIOS软件仓库搭建02-软件仓库添加新的软件包

#秋日生活打卡季#原文链接:...

Java常用工具类技术文档(java中工具类的作用)

一、概述Java工具类(UtilityClasses)是封装了通用功能的静态方法集合,能够简化代码、提高开发效率。本文整理Java原生及常用第三方库(如ApacheCommons、GoogleG...

软路由的用法(自动追剧配置)(软路由教学)

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:值友98958248861环境和需求...