本項目以使用WS2812B迷你LED矩陣作為顯示器的想法開始,搭配微控制器(Waveshare RP2040 Tiny)來控制矩陣并處理所有游戲邏輯。
為了把所有的東西結合在一起,我們設計了一個定制的PCB,集成了14×20 LED矩陣、輸入按鈕和專用電源管理電路。整個系統(tǒng)由一個LiPo電池供電,板載電源管理IC負責電池的充電和放電。
本文介紹了該項目的完整構建過程;讓我們開始吧。
材料要求
本項目使用了以下材料:
?定制PCB (HQ NextPCB提供)
?RP2040微型浪享板
?WS2812B 2020封裝led
?100nf電容器0603封裝
?10uf電容器1206封裝
?IP5306
?10 uH電感器
?指示燈LED 0805封裝
?USB Type-C接口
?按鈕6x6 SMD
?2歐姆1206封裝
?RP2040微型程序員
?3D打印外殼
三維模型
這個項目開始于Fusion 360。我們首先將WS2812B 2020封裝led的3D模型導入Fusion,以及SMD開關、USB Type-C端口、RP2040 Tiny和電池的CAD模型。
然后我們設計了一個91 × 47 mm的PCB。板的上半部分專用于RGB LED,在那里我們使用圖案特征創(chuàng)建了一個14行乘20列的LED矩陣。在下方部分,我們按照Game boy風格的布局放置SMD開關,其中的方向鍵由上、下、左、右按鈕組成,然后是a和B按鈕。
RP2040 Tiny被放置在PCB的背面。除此之外,我們還模擬了一個外殼,以將PCB牢固地固定在適當?shù)奈恢?,覆蓋包含電池的背面,并使設備舒適地持有。我們甚至在外殼的頂部添加了一個環(huán),作為一個設計元素,它可以連接一個身份證帶,這樣設備就可以作為徽章佩戴或掛在某個地方。
在完成模型后,我們導出了外殼網格,并使用Hyper PLA在我的新Anycubic Kobra S1上進行了3D打印,打印結果非常干凈。我已經使用《末影3》很長一段時間了,而這次升級正是我所需要的。
我們還導出了組件放置、板輪廓和總體布局參考的關鍵尺寸。這些尺寸后來在PCB設計過程中使用。
PCB設計
PCB設計過程從為項目準備原理圖開始。在我們的案例中,我們以前使用過WS2812B 2020封裝led。由于尺寸小,這些led并不容易使用,但同樣緊湊的外形因素正是使它們成為基于矩陣的項目的理想選擇。
我們重用了先前8×8 Tiny Matrix項目中的原理圖作為起點。我們不再使用8×8布局,而是通過添加更多l(xiāng)ed將設計擴展為14×20矩陣。
然后,我們在RP2040 Tiny板的原理圖中添加了另一部分,它連接到六個按鈕。所有按鈕都連接到GND和單獨的GPIO引腳。當按鈕被按下時,它將相應的GPIO引腳拉低,微控制器將其注冊為按鈕按下。
我們使用了Waveshare的RP2040 Tiny,這是一款基于RP2040的SMD開發(fā)板,設計用于作為模塊直接安裝在PCB上,類似于ESP-12F或ESP32模塊。RP2040 Tiny的特點是有槽狀焊盤,這使得它可以焊接到PCB的背面,并干凈地集成到整體設計中。
對于電源,我們包含了我們在許多以前的項目中使用的值得信賴的IP5306-a電源管理IC。它從3.7V鋰電池提供穩(wěn)定的5V輸出,并包括充電指示,低電量警告和高/低壓切斷等功能,這些都是鋰電池安全運行所必需的。
NextPCB PCB服務
PCB設計完成后,將Gerber數(shù)據發(fā)送給HQ NextPCB,并訂購了綠色白色絲印阻焊片;這次我們甚至還訂了一個模版。
下訂單后,PCB和模板都在一周內收到,PCB質量非常好。
另外,我要把HQDFM帶給你,它在很多項目中給了我很大的幫助。華秋的內部工程師開發(fā)了免費的制造設計軟件HQDFM,徹底改變了PCB設計師如何可視化和驗證他們的設計。
利用NextPCB的加速器活動,為您的創(chuàng)新項目獲得2個免費組裝的基于rp2040的pcb。
此報價涵蓋所有費用,包括物流,使您的想法更容易,更實惠的生活。SMT服務可能很昂貴,但NextPCB可以幫助您克服這一障礙。只要分享你的相關項目,他們就會處理好剩下的事情。不要錯過這個提升你的科技創(chuàng)作的絕佳機會!
HQDFM:免費在線Gerber查看器和DFM分析工具
此外,NextPCB有自己的Gerber Viewer和DFM分析軟件。
您的設計可以通過他們的HQDFM軟件(DFM)服務得到改進。因為我發(fā)現(xiàn)等待制造商的DFM報告很煩人,所以HQDFM是執(zhí)行事件前自檢的最有效方法。
這是我在在線Gerber Viewer中看到的。這是一個體面的快速看,但不是完全清楚。要獲得完整的功能(例如pcb的詳細DFM分析),您需要下載桌面軟件。網頁版本只提供基本的DFM報告。
具有全面的制造設計(DFM)分析功能,HQDFM是一個免費的,復雜的在線PCB Gerber文件查看器。
憑借超過15年的行業(yè)經驗,它為先進的制造工藝提供了寶貴的見解。如果你正在尋找可靠的PCB服務,在一個預算友好的價格,HQ NextPCB絕對值得一試。
模板的過程
我們通過在PCB上涂錫膏開始電路組裝過程,但是有一個小問題。在這個項目中使用的組件數(shù)量相當大,這也意味著非常高的墊板數(shù)量。因此,使用錫膏點膠注射器是不切實際的。相反,我們使用了專門為這個電路制作的定制模板。
模板本質上是一塊薄金屬片,上面有激光切割的槽和孔,與PCB上的組件焊盤相匹配。使用模板可以使焊膏均勻地涂抹在所有焊盤上。在大規(guī)模生產電路的工業(yè)環(huán)境中,模板通常用于此目的。
我們首先用額外的PCB板搭建了一個臨時的PCB板和模板架。這種設置有助于保持主PCB固定,并確保它在過程中不移動。
在將模板開口與PCB組件焊盤對齊后,我們在模板上涂上錫膏,并用刮刀將其均勻地散布在插槽上。該工藝在每個元件焊盤上沉積了一層薄而均勻的焊膏,為元件的放置做準備。
貼片元件貼片工藝
現(xiàn)在是另一個繁瑣的過程:SMD組件放置。這是繁瑣的,因為在這個項目中使用了大量的led。我們總共使用了280個led以及其他幾個SMD組件,使整體組件數(shù)量超過300個。所有這些組件都必須手動放置。
我們首先將100nf去耦電容器放置在指定位置。在取放過程中,我們使用了防靜電鑷子。
接下來,我們將所有280個SMD RGB LED放置在它們的襯墊上,確保每個LED的方向正確,因為不正確的方向會阻止LED工作。
在LED放置后,我們添加了剩余的SMD組件,其中包括SMD按鈕和所有與電源管理電路相關的部件。
一旦所有的組件被放置,整個板被小心地抬起,并放置在SMD回流熱板。熱板從下面加熱PCB到錫膏熔化溫度,大約是200°C。因此,所有的組件都被安全地焊接到它們的焊盤上。
測試SMD led
在我們將RP2040板放置在PCB背面之前,我們測試了led是否工作。如果led不工作,并且RP2040已經安裝在PCB的背面,我們將無法使用熱板來糾正led。
我們在RP2040的5V、GND和GPIO0端子上增加了跳線。然后將這些跳線連接到XIAO SAMD21 M0開發(fā)板。
我們將下面的草圖上傳到XIAO上,它將鏈中的每個LED一個接一個地打開為綠色。這個草圖取自Adafruit NeoPixel庫的示例草圖。
RP2040組裝
在確認led正常工作后,我們轉向RP2040組裝過程,首先將板翻轉,將2040 Tiny放置在其位置,然后用烙鐵焊接所有的焊盤和其castellated端子。
主要代碼
然后我們繼續(xù)將主固件閃爍到RP2040 Tiny上。使用隨附的FFC帶狀電纜和USB適配器板,在將微控制器連接到USB時按住BOOTSEL按鈕,將微控制器置于BOOTSEL模式。一旦檢測到,我們就把主代碼上傳到電路板上。
讓我們來分析一下我們?yōu)檫@個項目準備的代碼。
我們使用以下庫,使LED矩陣像一個微小的像素顯示器一樣工作。
Adafruit_NeoPixel
?Adafruit_GFX
?Adafruit_NeoMatrix
矩陣配置
游戲運行在14×20 LED矩陣上,與經典的俄羅斯方塊操場相匹配。
MATRIX_PIN是驅動WS2812B數(shù)據線的GPIO。
本節(jié)定義:
?LED布局方向(左上原點,順行布線)
?顏色順序(GRB,標準為WS2812B)
?信號速度(800khz)
按鈕輸入
所有按鈕都使用INPUT_PULLUP,并且按下按鈕將引腳拉到LOW
定時和脫機控制
這些值控制正常下降速度以及快速下降時,保持速度按鈕
防止意外的快速移動或旋轉。
游戲網格與狀態(tài)
這部分代表比賽場地;0是空單元格,1是已占用的單元格。
這將跟蹤當前棋子的位置、旋轉狀態(tài)(0-3)以及哪個方塊處于活動狀態(tài)。
《Tetromino》定義(游戲核心)
共有7件(I, O, T, S, Z, J, L);每一塊可以旋轉4次,每次旋轉是一個4×4矩陣。
碰撞檢測
bool canPlace(int x, int y, int piece, int rot)
這個函數(shù)檢查該塊是否在矩陣邊界內,以及它是否與已經放置的塊重疊。
如果任何塊發(fā)生碰撞,則拒絕放置。
將一個部件鎖定到網格中
當一個棋子不能再下落時,它的像素被復制到網格中,棋子就成為場地的一部分。
Line-clearing邏輯
該函數(shù)掃描每一行,如果一行被完全填充,則上面的所有行都向下移動,并清除最上面的行。
生成新的碎片和游戲結束
這個函數(shù)隨機選擇一個新的四音,它從頂部中心開始。如果不能立即放進去,游戲就結束了。
當游戲結束時,屏幕變成紅色,網格被清除,游戲重新開始。
渲染游戲
這個函數(shù)很重要;它清除屏幕并以綠色繪制鎖定塊。積極下落的碎片用藍色繪制。
在設置函數(shù)中,初始化LED矩陣,設置亮度,配置按鈕引腳,播種隨機數(shù)生成器,并衍生第一個四元。
loop()函數(shù)處理移動、旋轉和速度控制的按鈕輸入,使用計時器管理基于重力的下落,執(zhí)行碰撞檢測,鎖定片段,清除已完成的線條,并每幀重新繪制屏幕。
通孔組件放置工藝
在測試完代碼后,我們安裝了最后一個通孔組件:USB Type-C端口。
我們使用的是只有電源的Type-C連接器,只有正極和負極端子,沒有數(shù)據引腳。連接器從PCB的頂部放置,并使用烙鐵從底部焊接。
這一步完成后,電路板組裝就完成了。
電源
為了給項目供電,我們使用了一個3.7 V 650 mAh的LiPo電池,其正負端焊接到PCB背面提供的電池連接器上。
按一次電源按鈕使電路打開,而按兩次電源按鈕則使系統(tǒng)關閉。
由于我們使用IP5306電源管理IC,板載狀態(tài)LED提供視覺反饋-充電時閃爍,電池充滿時保持固態(tài),當電池電壓降至低水平時再次閃爍。
外殼組裝
我們首先將主電路放置在3d打印外殼上,然后使用四個M2.5 Torx螺栓將外殼與PCB固定。在背面,我們給出了一個窗口或插槽,允許用戶訪問FPC連接器以重新編程RP2040 Tiny。
結果
這是這個小而乏味的構建的最終結果:一個運行自定義版本《俄羅斯方塊》的基于RGB矩陣的手持游戲機。我們從零開始創(chuàng)建了LED矩陣板,并將其與基于rp2040的微控制器和板載電源電路配對,以制作真正的便攜式手持設備。
目前,這個設置工作得很完美。我們可以使用左右鍵來控制四重奏的形狀,使用旋轉鍵來旋轉形狀,甚至可以加速下落的方塊。
機載LiPo電池提供大約4小時的電池備份,這是相當不錯的。這種運行時間可以通過降低led的亮度進一步延長,從而降低總體電流消耗。
這個游戲機也可以用于未來的想法。雖然目前的實現(xiàn)運行的是自制版本的《俄羅斯方塊》,但同樣的硬件以后可以用于其他游戲,作為交互式徽章,或作為文本和簡單圖形的通用LED矩陣顯示器。
本文編譯自hackster.io





