利用樹莓派和乒乓球制作一個假日彩燈
我喜歡圣誕裝飾品和燈飾,因此很長一段時間以來我一直想做一個可編程的 LED 項目。最近,我制作了一個由 LED 燈、乒乓球和樹莓派 Zero 組成的燈陣列。這個項目相對簡單并且具有教學(xué)價值,因此我認(rèn)為它非常值得分享。
整個彩燈由我設(shè)計,但其中一些靈感也來自 YouTube。你可以在我的 ??Git 存儲庫?? 中找到源代碼和制作說明。
購物清單
- ??樹莓派 Zero??
- ??樹莓派保護(hù)殼??
- 5V 2A 的電源線
- 展架
- 255 個乒乓球
- 熱熔膠槍和若干熱熔膠棒
- 烙鐵
- 焊錫絲
- 22 AWG 0.35mm 實芯線
- 10 米 WS2812(B) LED 燈帶(每米 30 像素)
- 萬用表
- 鋼絲鉗
- 剝線鉗
設(shè)計樹莓派的燈光效果
這個設(shè)計是根據(jù)我展框的大小決定的。我在全球速賣通買到了每米 30 像素的燈帶,它可以輕松地切成 0.5 米的長度,每條有 15 個 LED 燈。乒乓球的直徑是 40 毫米,所以我測量并隔開 40 毫米劃了線,LED 燈條放在每隔 40 毫米的中間部分,這就產(chǎn)生了 17 條線。因此我的燈光陣列是 15×17。你可以根據(jù)實際情況來調(diào)整尺寸。
為了給燈帶和樹莓派供電,我在電路板底部設(shè)置了數(shù)據(jù)線和電源線。我的 LED 燈不需要很多電,所以我使用樹莓派 Zero 的 5V 輸出 GPIO 為它們供電。當(dāng)我以 50% 的亮度運行時,這個亮度已經(jīng)足以在白天和晚上透過我的窗戶看到。
布線
我從電路板的底部以之字形開始布線,這使得焊接非常容易,因為每行的末尾不必返回到每行的開頭。
我的線路大致像這樣(為清楚起見,這里進(jìn)行了簡化,實際上它一共有 17 行):
使用樹莓派制作顯示屏
當(dāng)設(shè)計和布線的工作完成后就可以開始制作顯示屏了。
我在展板上測量并繪制了線路。我的燈帶背面有膠帶,所以我只需要取下背襯并將其貼在展板上。我檢查了每個燈帶的位置和數(shù)據(jù)線的方向,以確保燈帶可以按照樹莓派的指令正確串聯(lián)起來。
連接好所有燈帶后,我剪下三段長度相同的電線,并將每個燈帶末端的電源線、數(shù)據(jù)線和接地線連接到其上方。
Connect each light strip at the end of each line.
在線路連接完成后,我檢查了每條燈帶之間的電源線和地線之間的連接,以確保其連通性。我還檢查了是否存在錯誤的橋接,所以我驗證了電源線和地線之間的連接。我還進(jìn)行了一些測試以確保所有燈都正常點亮(鏈路測試參閱 ??測試代碼??)。
完成上述工作后,我開始在乒乓球上剪洞,用剪刀刺入乒乓球的底部,然后剪一個小洞讓 LED 燈穿進(jìn)去。手工不太行,每個球都不太一樣,但效果真的很好。我使用的每米 30 個像素的 LED 燈,所以每個 LED 之間有大約 30 毫米的空隙。一個乒乓球是 40 毫米寬,但我不打算開始單獨焊接每一個 LED!我想,這是很重要的。首先,我并不擅長焊接(正如我的照片所顯示的),而且無論如何,我想“好吧,它們是乒乓球。我可以把它們壓在一起!”
我是這樣做的:
在 LED 燈上滴上熱熔膠,然后在 LED 上放了一個乒乓球并按住大約五秒鐘,就粘好了一個乒乓球。粘貼下一個乒乓球時我只需要擠著上一個乒乓球,就能讓所有乒乓球都變得整齊了。我對它的外觀很滿意。它還有一個很好的好處,就是掩蓋了我糟糕的焊接工作;)
It's a tight fit, but the 40mm ping pong balls fit in a 30mm space just fine.
我繼續(xù)為余下的乒乓球進(jìn)行焊接。盡管這個過程中有幾個乒乓球被壓碎了,但最終還是順利完成了制作。
255 LEDs and 255 ping pong balls in an array.
測試代碼
測試代碼需要確保所有部件都能正常工作,為此我使用了這個 ??Adafruit 指南??,它以紅、綠和藍(lán)點亮每個 LED,然后依次進(jìn)行循環(huán)。我在測試時使用它來確保我連接無誤并且焊接正常。
在此之后,我在電子表格中設(shè)計了一個網(wǎng)格,將每個像素映射到一個網(wǎng)格位置。由于我的像素編號呈之字形排列,因此很難跟蹤每個 LED(例如 A1 為 256,B1 為 226)。重新映射網(wǎng)格位置能使得我在構(gòu)建圖像時更容易。
在所有準(zhǔn)備工作完成之后,我就可以在紙上和電子表格中設(shè)計圖像,然后編碼。于是我開始添加一些動畫(使用循環(huán)并將像素變?yōu)橐环N顏色,然后變?yōu)榱硪环N顏色)。
最終的結(jié)果還算順利。
A Christmas gift in LED.
Reindeer painted with light.
An LED snowflake.
能玩一年的樹莓派彩燈
我不確定這是否已經(jīng)完全完成了。自從把它擺放到櫥窗里,幾乎每個晚上我都會添加一些新的圖像和動畫。我已經(jīng)在考慮除夕夜的時候要做成什么樣了。它不會像圣誕裝飾品一起在圣誕節(jié)后被放進(jìn)儲藏室。我只需要在上面顯示其它圖案,就能使它成為一個能玩一年的彩燈!我的一個朋友推薦了像素版馬里奧,這聽起來是個好主意!
我的代碼仍然需要完善。例如,我做了一些滾動文本,但當(dāng)我為文本的每個位置重新繪制時卻花了很多時間。我想我可以用循環(huán)做一些事情,或者圖像庫可以幫助更輕松地滾動字母,并使添加文本更容易,而不是在每一步打開和關(guān)閉每個像素。
這里有一張照片記錄了我制作的全過程:??LED 乒乓墻??。
可以在此處觀看它的運行視頻:??XMas 燈光展示??。
這個彩燈最終的效果我非常滿意。以后我也會嘗試更多利用 LED 彩燈完成的項目。我也鼓勵大家親自動手制作一個這樣的彩燈,它會比你想象中更簡單。