使用 Raspberry Pi 和乒乓球创建节日灯饰

这个使用 Raspberry Pi 构建可编程 LED 灯饰的教程非常适合所有技能水平的人。
5 位读者喜欢这篇文章。
Raspberries with pi symbol overlay

Dwight Sipler 在 Flickr 上

我喜欢圣诞装饰和彩灯,并且一直想做一个可编程 LED 项目。最近,我用 LED 灯、乒乓球和一个 Raspberry Pi Zero 构建了一个灯阵列。我认为值得分享,因为它最终变得相对容易,而且也具有教育意义。

这主要是我自己设计的,灵感来自 YouTube 视频。你可以在我的 Git 仓库中找到源代码和构建说明。

购物清单

  • Raspberry Pi Zero
  • Pibow 外壳
  • 5v 2A USB 电源
  • 海报框
  • 255 个乒乓球
  • 热熔胶枪和大量热熔胶棒
  • 电烙铁
  • 焊锡
  • 22 AWG 0.35mm 实芯线
  • 10 米 WS2812(B) LED 灯带(每米 30 像素)
  • 万用表
  • 剥线钳
  • 剪线钳

设计 Raspberry Pi 灯饰

我的设计受到我碰巧可用的海报框尺寸的驱动。我从 Ali Express 买了每米 30 像素的灯带,可以很好地切割成 0.5 米的部分,这样我就得到了 15 个 LED 灯珠的宽度。乒乓球直径为 40 毫米,所以我测量并将线放置在相隔 40 毫米的位置,LED 灯带位于每个 40 毫米部分的中间。这总共给了我 17 行。如果你自己尝试,你的尺寸可以不同。

为了给阵列和 Raspberry Pi 供电,我将数据和电源的开放式连接都放在了板的底部。我不需要那么多 LED 灯珠供电,所以我能够使用 Raspberry Pi Zero 的 5v 输出 GPIO 为它们供电。我以 50% 的亮度运行它们,这在白天和晚上透过我的窗户都足够亮。

接线

在我的设计中,我从板的底部开始,并以 S 形曲线接线。这使得焊接更容易,因为每行末端的环路不必一直返回到每行的开头。WS2812 数据线确实需要你以正确的方式连接数据:电源可以从灯带的任一侧馈入,但数据必须从箭头指向远离的一侧馈入。

我的接线看起来像这样(为了清晰起见,这里是缩写,实际上是 17 行深)

<---------------\
                |
/---------------/
|
\---------------< # Pi connected here

用你的 Raspberry Pi 构建灯饰

一旦设计和接线计划确定,就该开始构建了。

我在海报背板上用铅笔测量并画出了我的线。我得到的 WS2812 灯带背面带有不干胶带,所以我只是撕下背衬并将其直接贴在背板上。我确保定位每个灯带,使数据箭头朝一个方向,然后再朝另一个方向,以确保灯可以为 Pi 的指令正确地菊花链连接。

一旦所有灯带都连接好,我剪下三根相似长度的电线,并将每段灯带末端的 5v、数据和接地线连接到它上面的那段灯带。

Connect each light strip at the end of each line.

(Brian McCafferty,CC BY-SA 4.0)

在完成每一行后,我检查了每段灯带之间 5v 和接地线之间的连续性,以确保我的连接是正确的。我还检查了我是否不小心桥接了任何连接,所以我验证了 5v 和接地线之间没有连续性(换句话说,一根线上的 5v 电线没有桥接到下一条线上的接地)。我还进行了一些测试,以确保一切都正确亮起(请参阅 代码 部分了解我的灯串测试)。

完成这些后,我开始在乒乓球上戳洞,方法是用剪刀刺入乒乓球底部,然后切一个小孔让 LED 灯珠可以照射出来。这没有什么精确的科学依据,每个孔都不一样,但效果真的很好。我使用的是每米 30 像素,所以我的灯光在每个 LED 灯珠之间大约有 30 毫米的距离。一个乒乓球直径为 40 毫米,但我并不打算开始单独焊接每个 LED 灯珠!首先,我的焊接技术不是那么好(正如我的照片显示的那样),而且无论如何,我想“好吧,它们是乒乓球。我可以把它们挤在一起!”

我就是这么做的。

我在每个 LED 灯珠周围放了一团热熔胶,然后将一个乒乓球放在 LED 灯珠上,按住大约五秒钟,然后继续下一个。当我滑入下一个乒乓球时,我按住前一个乒乓球,将其推到第一个乒乓球上,然后再“折叠”到它的邻居中。效果非常好。我对它立即呈现的效果感到满意。它还有一个很好的额外好处,那就是隐藏了我糟糕的焊接工作 ;)

It's a tight fit, but the 40mm ping pong balls fit in a 30mm space just fine.

(Brian McCafferty,CC BY-SA 4.0)

我继续为 255 个 LED 灯珠和乒乓球这样做。在这个过程中有一些乒乓球被压碎了,但最终,我完成了。

255 LEDs and 255 ping pong balls in an array.

(Brian McCafferty,CC BY-SA 4.0)

测试代码

为了测试代码以确保一切正常工作,我使用了这个 Adafruit 指南 ,它将每个 LED 灯珠依次点亮红色、绿色和蓝色,然后进行彩虹循环。我在构建时使用了这个指南,以确保我的连接是正确的,并且一切都焊接正确。

在那之后,我在电子表格中设计了一个网格,将每个像素映射到一个网格位置。这有助于使构建图像更容易。由于我的像素编号以锯齿形模式运行,因此很难跟踪每个 LED 灯珠(例如,LED A1 是 256,B1 是 226)。 

一旦这一切都设置好,就该在纸上和电子表格中设计一些图像了。然后就到了编码的时候!这有点让人上瘾,我开始添加一些动画(使用循环并将像素切换到一种颜色,然后再切换到另一种颜色)。 

最终结果是我所希望的一切。

A Christmas gift in LED.

(Brian McCafferty,CC BY-SA 4.0)

Reindeer painted with light.

(Brian McCafferty,CC BY-SA 4.0)

An LED snowflake.

(Brian McCafferty,CC BY-SA 4.0)

全年都可使用的 Raspberry Pi 灯饰

我不确定这个项目是否会真正完成。自从它挂在窗户上以来,几乎每天晚上我都会添加一些新的图像和动画。我已经开始考虑为除夕夜做些什么。我也不打算在一月份将它与我的圣诞装饰品一起放回仓库。我只需要考虑其他可以在上面绘制的东西,使其成为一个全年的项目!我的一个朋友建议了一个像素马里奥,我喜欢这个主意!

我的代码也需要做一些工作。例如,我做了一些滚动文本,但我为文本的每个位置都重新绘制了整个板,所以这花了很多时间。我认为我可以利用循环做一些事情,或者图像库可以帮助更容易地滚动字母,并使添加文本更容易,而不是在每一步都打开和关闭每个像素。

我有从开始到结束的进度照片记录:LED 乒乓墙

你也可以在这里观看它的运行视频:圣诞灯饰

我真的对最终的结果感到满意,我认为它看起来很棒。我非常兴奋将来尝试其他 LED 项目。我鼓励你尝试构建自己的灯阵列,即使是作为你的第一个项目。它比看起来容易!

标签
Brian McCafferty (bdm)
红帽技术客户经理。在生产技术支持部门工作 10 年后,我于 2021 年加入红帽担任技术客户经理。我对自动化和报告充满热情,我与我的妻子 Sara 和狗狗 Radar 住在英国苏格兰。

1 条评论

感谢您与我们分享这样一个有趣的项目,它产生了超级酷炫的效果...

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.