×

矩阵电脑侧面板开源项目

消耗积分:2 | 格式:zip | 大小:0.23 MB | 2022-07-06

刘高

分享资料个

PCB图如下:
poYBAGK1G2-AOrRcAAFuNYvw0XU246.png
pYYBAGK1G3KARXvJAAFtFLCyxOE208.png
poYBAGK1G3SAek8bAABh3Z8ot7A637.png
pYYBAGK1G3aAenqyAACYxts6OxM587.png
poYBAGK1G3mALFzsAABSzx3F8bA447.png

描述

矩阵电脑侧面板

介绍

该项目使用带有 NodeMCU ESP8266 的 PCB 板,编码用于控制 216 个 NeoPixels,它使用来自 Matrix 特许经营权的著名“下雨代码”动画来动画计算机塔的侧面。

NeoPixel 控制板是一种模块化、可定制的 PCB 分线板,用于通过用户输入选项控制多条 NeoPixels,以通过电位计控制显示器的速度和亮度,并通过按钮控制动画模式。

该项目的 GitHub 存储库,包括 PCB Gerber 文件和代码,可在此处获得:https://github.com/WillDonaldson/NeoPixel_Control_Board

补给品

材料

1x PCB(见下一节的评论)

1x NodeMCU ESP8266

1x 74AHCT125 芯片

2x 10K 欧姆电阻

4x 470 欧姆电阻

2x 1N4001 二极管

1x 1000uF 电解电容

12x M3 20mm 螺栓

1 个 DC 桶形插孔母头和公头连接器(推荐 5A 额定值而不是更常见的 2.5A 额定值)

1x ON/OFF 开关(可选)

1x 瞬时按钮(可选)

2x 10K Ohm 电位器(可选)

2 个 2 针 JST-VH 母头和公头连接器(可选)

4 个 3 针 JST-VH 母头和公头连接器(可选)

用于电缆管理的 Zipties(可选)

5m 条 WS2812B NeoPixels(60 个 LED/米)

2x 40 厘米 x 40 厘米黑色亚克力 3 毫米(尺寸会因您的电脑而异)

1x 40 厘米 x 40 厘米白色漫射丙烯酸 3 毫米板(尺寸会因您的 PC 而异)

丙烯酸胶或强力胶

各种电器配件:电线、焊锡、热缩管

带有一个 5V 和 GND 引脚可用电源的计算机。或者可以绕过内置电源,通过传统的 5V 5Amp 电源为电路供电

工具

激光切割机(可选但推荐)

烙铁

M3 螺栓的内六角扳手

其他工具:剥线钳、剪刀

PCB制造

pYYBAGK1G3-AKZSXAAHx-gsMIGM881.png

我在 Fusion 360 电气中设计了这个 PCB,在下一节中您可以看到电子原理图。为了制造电路板,我将 Gerber 文件发送到 www.pcbway.com 上的 PCBWay(免责声明:我发布的有关此构建过程的 YouTube 视频由 PCBWay 赞助)。

从 GitHub 存储库下载最新的 Gerber 文件 zip 版本。截至发布(2021 年 12 月 12 日),最新版本为 v1-2-0。这个 zip 文件可以直接上传到 PCB 制造网站,保留默认选项。https://github.com/WillDonaldson/NeoPixel_Control_Board/tree/main/gerber-files

组装 PCB 时,您会在上面的图片中注意到,我在 PCB 上标记了不同电阻器、二极管、芯片和其他组件所在位置的所有标签。

pYYBAGK1G4SAK16iAAmIbHOLWeQ044.png

电路组装

poYBAGK1G4eAAdV1AABsGRL1-ag382.png

如上一节所述,本节第一张图为电子原理图。这可以在组装电路时作为参考,尽管我已尽力将所有组件直接标记在 PCB 上,以便您在组装电路时可以直接按照板上的标记进行操作。

poYBAGK1G42ANyiiAASbGL7KxuI917.png

激光切割灯箱

poYBAGK1G5GAWcqMAAeBVVXMZu0818.png

要构建灯箱,我们需要几块激光切割的亚克力。这些组件已根据我的 PC 机箱的尺寸进行建模,因此您可能需要调整尺寸以适合您的尺寸。所有用于激光切割的 .svg 文件都可以在 GitHub 上找到:https://github.com/WillDonaldson/NeoPixel_Control_Board/tree/main/examples/matrix-computer-side-panel/laser-cut-files

用 3 毫米黑色亚克力剪下 1 份“character-panel.svg”

用 3 毫米黑色亚克力剪下 1 份“solid-panel.svg”

从 3 毫米白色漫射亚克力材料中剪下 1 份“solid-panel.svg”

用 3 毫米黑色亚克力剪出 11 份“spacer-grid-1.svg”

从 3 毫米黑色亚克力中剪下 2 份“spacer-grid-2.svg”

pYYBAGK1G5iANp9IAAn8Jq_k_C8500.png

对 NeoPixels 的评论

poYBAGK1G56ATZlEAApvbIVx02s258.png

poYBAGK1G62AS01LAAtO6bCJ1fI224.png

在我们开始组装侧面板之前,我想分享一些使用 NeoPixels 的技巧。可以在此处找到完整的参考指南,这是我强烈建议您查看的资源:https://learn.adafruit.com/adafruit-neopixel-uberguide?view=all

NeoPixels 的缩写总结是它们是一条 RGB LED,每个 LED 都有自己唯一的地址。拥有唯一地址意味着所有 LED 都可以连接在同一条数据线上,因为每个 LED 只会监听直接发送给它的消息。

在切割 NeoPixel 灯条时,我建议不要在铜垫中间切割,而是在铜垫上方切割并牺牲链中的下一个 LED,因为较大的垫将使焊接更容易(见上图)。

此外,请确保观察数据传输的方向(如每个 LED 旁边的箭头所示)。反转数据传输方向将阻止以下 LED 亮起(如上图第二张所示)。

制作灯箱

poYBAGK1G7KAfUNEAAlINbMsMw0689.png

pYYBAGK1G7mAeWayAAe4v1ELTaY022.png

激光切割后,组装构成间隔网格的 13 块,如上图所示。组件压合在一起,然后可以用丙烯酸胶或强力胶固定到位。请注意,“spacer-grid-1.svg”的一端有一个孔,而另一端没有。这些孔用于将电线穿过,在组装网格时应以交替方式安装。间隔网格有两个目的:首先,确保光在白色层中很好地扩散(如果 LED 太靠近,则会出现可见的白点),其次,确保光不会从一列溢出到相邻的列(从而破坏下雨代码效果)。

poYBAGK1G76AKTMrAAk5lQhMYik294.png

poYBAGK1G8aAHxIqAAmRHncGMng891.png

网格组装好后,可以粘在从 3 毫米黑色丙烯酸切割而成的“solid-panel.svg”的中心。该组件构成灯箱的后面板。NeoPixel 条应切割成 18 个 LED 的 12 个部分,以连接它们,剥离粘合剂层并将条插入激光切割网格之间。请注意,LED灯带按上图所示的S形图案组装,蓝色和红色箭头指示数据传输方向。

安装侧面板

pYYBAGK1G8uACYuGAArWoLxx4vo454.png

pYYBAGK1G9OAdoRlAAkn8y0Gwi0291.png

此步骤特定于我的特定计算机,因此请根据需要修改步骤。我取下侧面板并拧下现有的透明面板,然后插入 3 层亚克力:首先是切割字符的面板,然后是白色漫射层,然后是带有 LED 和亚克力垫片的灯箱层。我使用 M3 螺栓将亚克力面板固定到 PC 框架上现有的安装点。

poYBAGK1G9iAe_3HAAl3tazSFo4131.png

我还在侧板上钻了 3 个孔来添加两个电位器和瞬时按钮。

pYYBAGK1G92AZGpvAAjmXKI7AD4149.png

pYYBAGK1G-GAR-RZAAfV9zX5mFI881.png

为了给电路供电,我使用了一个插入 850W 电源的 6 针 MOLEX 连接器。对于下雨代码动画,一次只打开几个 LED,因此电流消耗最小。但是,如果您将所有 LED 一次打开到不同的 RGB 值,则总电流消耗约为 4.32 安培(= 216 个 LED * 20mA 平均电流/LED)。如果您有较小的电源和/或想要点亮所有 LED,我建议使用直接连接到墙壁的单独电源为 LED 供电,因为对小型计算机电源施加太大压力可能会对性能产生负面影响您的计算机。

在 Arduino IDE 中对 ESP8266 进行编程

假设您安装了 Arduino IDE 软件,我们可以对 NodeMCU ESP8266 微控制器进行编程。

不幸的是,Arduino IDE 无法与 ESP8266 一起运行,我们需要先执行几个配置步骤:

添加 ESP8266 扩展。单击以下内容:文件>首选项>其他董事会经理>并添加以下消息:https://arduino.esp8266.com/stable/package_esp8266com_index.json

下载 ESP8266。单击以下内容:工具 > 板 > 板管理器 > 查找并下载 ESP8266

选择板。单击以下内容:工具 > 开发板 > NodeMCU1.0 (ESP-12E)

选择端口。单击以下选项:工具 > 端口 > COM_

通过运行闪烁草图验证成功。点击以下。文件 > 示例 > 基础 > 闪烁 > 上传

最后,我们要添加 NeoPixel 库来导入一些有用的工具和功能。

单击以下内容:草图 > 包含库 > 管理库 > 搜索并安装:Adafruit_NeoPixel

演示代码

poYBAGK1G-aASBbcAAsb38emvIQ613.png

GitHub repo 上提供了使用自定义 PCB 的示例代码:https://github.com/WillDonaldson/NeoPixel_Control_Board/tree/main/examples/neopixel-demo

要分解代码,有 3 个示例。

1) debounce_switch_demo.ino

此代码显示了带有中断服务程序 (ISR) 和信号去抖滤波器的瞬时按钮的操作。瞬时开关连接到外部上拉电阻,因此它通常会读取 HIGH 信号。每次状态下降到LOW时都会调用buttonISR()函数,表示用户已经按下了按钮。但是,如果信号有噪声,则单个按钮按下可能会被测量为多次,从用户体验的角度来看,这是不可取的,因此包含 0.2 秒的 debounce_delay 阈值以忽略这些错误的、有噪声的读数。

2) two_potentiometers_esp8266_demo.ino

与基于 Arduino 的板不同,NodeMCU ESP8266 只有一个模拟输入引脚。为了能够使用 2 个电位器,我们需要一种方法来打开电位器“ON”,同时忽略另一个电位器,反之亦然。这个示例程序演示了如何使用一对充当单向门的二极管来实现这一点,并在我们想要忽略或倾听它们时分别将电位计上的引脚拉低或拉高。

3)neopixel_demo.ino

该程序将之前的两个程序合二为一,提供了多种用户输入选项,并且还基于 Adafruit NeoPixel 库创建了几种不同的 LED 动画。用户可以使用瞬时按钮切换不同的动画,并使用两个电位器调整速度/亮度。

矩阵动画代码

 

pYYBAGK1G_WAJ2mBAA6o1zysC_k881.png

我们现在已经准备好将所有内容整合到最后一个软件中:matrix-raining-code.ino

此代码使用我编写的movingPixel() 函数创建下雨代码动画。不幸的是,由于 LED 的 S 形接线(如步骤 5 中详述),创建下雨动画有点棘手,因为每个偶数列的数据传输方向“向上”,而每个奇数列“向下”。为了解决这个问题,movingPixel() 函数使用以下条件检查列是偶数还是奇数:

if((col % 2) == 0){} // 是偶数列

else{} // 是奇数列

然后相应地调整“雨”的方向。

我鼓励你玩转变量,调整速度、颜色,甚至图案!让我知道你创造了什么!

代码

https://github.com/WillDonaldson/NeoPixel_Control_Board

 

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !