基于樹莓派PICO 2和Waveshare RGB-Matrix-P3的手持游戲機
大家好,歡迎回來,這里有一些超級有趣的東西。
貪吃蛇游戲機是一款便攜式游戲機,具有特別設(shè)計的樹莓派PICO 2驅(qū)動電路和RGB 64x32 P3矩陣面板。
我們在Fusion360中建模設(shè)備,3D打印框架,并將其與矩陣面板和定制pcb組裝在一起,制作我們自己的游戲機。
對于游戲,我們從零開始創(chuàng)建了傳統(tǒng)的Snake游戲,使用一個簡單的Snake實體,可以通過四個方向按鈕來控制。隨機地,一個紅點出現(xiàn)在矩陣面板上,我們可以使用方向按鈕引導(dǎo)蛇吃掉這個隨機的紅點。在右上角,我們還添加了一個分?jǐn)?shù)標(biāo)記,它記錄了我們的蛇消耗了多少紅點。
此外,當(dāng)蛇咬到自己的身體時,游戲就結(jié)束了。
這款游戲機有一個機載電源,它是一個3.7V 2600mAh的鋰離子電池,為設(shè)備供電,使它成為一個便攜式游戲系統(tǒng),我們可以帶著它去任何地方玩。
本文涵蓋了這個項目的整個構(gòu)建過程,所以讓我們開始吧。
材料要求
這些是這個項目中使用的材料:
?定制pcb(由PCBWAY提供)
?樹莓派PICO 2
?RGB矩陣64x32
?IP5306集成電路
?10 uf電容器
?USB微接口
?18650鋰電池
?18650電池座SMD版本
?按鈕
?3D打印部件
64x32 RGB矩陣
我們使用的是64x32 RGB矩陣面板,它通過在64 × 32網(wǎng)格中安排2048個RGB led來創(chuàng)建生動的文本,圖形和動畫。
HUB75接口使用多個控制引腳,包括RGB、地址、時鐘、數(shù)據(jù)鎖存器和輸出使能引腳,用于操作該面板。
行-列掃描技術(shù)是通過HUB75鏈路實現(xiàn)的,它將一行像素數(shù)據(jù)轉(zhuǎn)移到移位寄存器中。然后使用解復(fù)用器來確定應(yīng)該顯示哪些行。RGB通道、尋址引腳A、B、C和D、時鐘信號(CLK)、鎖存信號(LAT)和輸出使能(OE)引腳都包含在HUB75連接器中。
我們還可以使用提供的in和OUT連接成對地鏈接幾個面板,以創(chuàng)建一個鏈。確保我們正在使用的控制解決方案(PICO 2)可以管理兩個或多個顯示器的額外數(shù)據(jù)負(fù)載,這是連接多個面板的困難之一。
至于采購這個矩陣面板,我們從PCBWAY禮品店得到了它。
控制臺的設(shè)計
這個項目的第一階段是建立一個控制臺的3D模型,它有兩個類似手柄的組件安裝在矩陣的背面。然后我們在一邊創(chuàng)建了一個特殊按鈕板的模型。
PICO驅(qū)動電路,用四個墊片固定在手柄框架上,位于設(shè)備的背面。
使用已經(jīng)在矩陣上的三個M3插入件,兩個Handgrip框架組件從矩陣面板的背面安裝。每個手柄有三個安裝孔,我們添加,以便M3螺栓可以用來連接手柄到矩陣。
使用4顆M2螺釘將按鈕板固定在控制臺一側(cè)。
模型完成后,我們導(dǎo)出了左右把手和四個墊片的網(wǎng)格文件,然后使用0.6mm噴嘴在黑色PLA中3D打印它們。
PCB設(shè)計:PICO驅(qū)動
使用我們的PCB Cad軟件,我們首先創(chuàng)建PICO驅(qū)動板設(shè)計的原理圖。為了將樹莓派PICO 2連接到矩陣的HUB75連接器,我們的設(shè)置由CON 16連接器組成。
我們將矩陣的HUB75引腳(CON 16)按以下順序連接到PICO的GPIO引腳:A到GPIO19, B到GPIO16, C到GPIO18, D到GPIO20, E到GPIO22, CLK到GPIO11, LAT/STB到GPIO12, OE到GPIO13, R1到GPIO2, G1到GPIO3, B1到GPIO4, R2到GPIO5, G2到GPIO8, B2到GPIO9。
我們?yōu)榘粹o添加了一個CON5連接器,它的四個引腳連接到PICO的GPIO6, GPIO7, GPIO14和GPIO15。GND連接到CON5的第五個引腳。每個GPIO將被連接到這個CON5的按鈕板拉到GND, PICO可以檢測到這是一個按鈕按下。
我們還集成了一個電源管理IC, IP5306,一個完全集成的多功能電源管理SoC,為整個設(shè)置供電。
它可以使用3.7V作為輸入提供穩(wěn)定的5V 2.1A,可用于為任何5V設(shè)備供電-在我們的實例中,矩陣和PICO 2。
在原理圖設(shè)置之后,我們導(dǎo)出網(wǎng)表,并通過參考CAD文件的板布局創(chuàng)建板文件。PICO 2,按鈕,鋰電池支架和USB迷你端口都在板的頂部,而所有的SMD組件都在底部。
PCB設(shè)計:按鈕板
接下來,我們得到按鈕板的原理圖準(zhǔn)備。它有四個按鈕,每個按鈕的4和3引腳連接到GND。此外,還有一個CON5連接器,連接到每個連接器的1和2用于GPIO, 3和4用于GND。
在建立了原理圖之后,我們使用PCB編輯器通過在適當(dāng)?shù)奈恢脤R按鈕并完全按照CAD文件布局來準(zhǔn)備板文件。
PCBWAY
我們?yōu)檫@個項目制作了兩個pcb:按鈕板和PICO驅(qū)動板。下了兩個訂單:一個是按鈕板,一個是PICO驅(qū)動板。
按鈕板PCB訂購了白色阻焊和黑色絲印,而PICO驅(qū)動器PCB訂購了藍(lán)色阻焊和白色絲印。
下訂單后,PCB在一周內(nèi)收到,PCB質(zhì)量非常好。
在過去的十年中,PCBWay通過提供出色的PCB制造和組裝服務(wù)而脫穎而出,成為全球無數(shù)工程師和設(shè)計師值得信賴的合作伙伴。
他們對質(zhì)量和客戶滿意度的承諾一直堅定不移,導(dǎo)致了顯著的增長和擴張。
如果你想以合理的價格獲得優(yōu)質(zhì)的PCB服務(wù),你可以看看PCBWAY。
PCB組件:pico驅(qū)動器
使用焊膏分配針,我們將焊膏(在本例中為63/37 Sn/Pb焊膏)涂抹在每個SMD組件PAD上,以開始PICO Driver組裝過程。
接下來,我們使用ESD Tweeser來選擇和定位PCB上的每個SMD組件。
在元件放置之后,將電路抬起并置于回流加熱板上,從而將PCB的溫度從下面提高到錫膏的熔點。當(dāng)PCB達(dá)到190°C的溫度時,錫膏熔化,所有SMD組件都安全就位。
按照回流過程,我們翻轉(zhuǎn)板,并使用烙鐵定位18650持有人。
安裝好USB微端口和Push Switch后,我們翻轉(zhuǎn)電路板并焊接它們的兩個焊盤。
測試動力部分
在繼續(xù)進行PICO DRIVER組裝過程之前,我們停止組裝過程,并通過將18650 3.7V 2600mAh鋰電池以正確的極性放置在其電池支架中來驗證功率模塊電路。
當(dāng)我們按下按鈕時,設(shè)備就會打開。我們用萬用表測量設(shè)備的輸出電壓,應(yīng)該是5V。我們現(xiàn)在可以將PICO 2添加到PCB并開始組裝過程。
PCB組件:PICO驅(qū)動器(組件的其余部分)
在PICO 2插槽上定位兩個CON 20母頭引腳,在HUB75連接器插槽上定位兩個CON 8公頭引腳后,我們將電路板翻轉(zhuǎn)過來,使用烙鐵焊接它們的焊盤。
最后,我們將鋰電池重新安裝在電池支架中,并將樹莓派PICO定位在CON 20引腳上。
完成PICO驅(qū)動程序組裝。
PCB組裝:按鈕板
為了開始按鈕板組裝過程,我們首先從板的頂部定位按鈕,然后我們從底部焊接它們的焊盤。
PICO驅(qū)動和矩陣組裝
使用矩陣套件中包含的線束,我們首先連接PICO驅(qū)動器和矩陣。我們將線束的正極焊接到PICO DRIVER的5V輸出,負(fù)極焊接到PICO DRIVER的GND。
接下來,我們將母線束連接器連接到矩陣的公連接器。
然后使用HUB75線束連接矩陣和PICO驅(qū)動程序gpio。它首先插入矩陣連接器,然后它的另一端連接到PICO驅(qū)動器。
測試素描:游戲人生
我們首先連接matrix和PICO DRIVE,然后使用我們之前轉(zhuǎn)換的Game of Life代碼(取自FastLED庫的示例草圖)閃現(xiàn)PICO,以查看我們的配置是否有效。
著名的元胞自動機“生命游戲”是由英國數(shù)學(xué)家約翰·霍頓·康威于1970年發(fā)明的。因為這是一款零玩家游戲,所以不需要額外的輸入;相反地,游戲的進程是由其初始狀態(tài)決定的。
游戲?qū)⒁噪S機配置開始,并在它停止后以新的隨機配置重新開始,是的,這個設(shè)置是圖靈完成的。
我們在這里使用Adafruit_Protomatter庫,在使用此代碼之前,您需要在Arduino IDE上安裝該庫。
框架與矩陣裝配
通過將兩個3d打印手柄框架的安裝孔與矩陣的安裝孔對齊,我們現(xiàn)在可以將它們連接到矩陣的背面。然后使用6個M3螺栓將框架和矩陣連接在一起。我們可以很容易地連接框架和矩陣與M3螺栓感謝M3黃銅插入已添加到矩陣的背面。
按鈕板框組件
從控制臺前方定位按鈕板,使用4顆M2螺釘固定。
微型驅(qū)動器和框架組件
現(xiàn)在,我們使用四個3d打印墊片將PICO DRIVER放置在3d打印框架上的控制臺背面。
我們將PICO驅(qū)動器放在框架安裝孔上方的四個墊片上,然后使用M3螺釘將PICO驅(qū)動器固定在框架上。
最終組裝:按鈕板和微型驅(qū)動器線連接
將DPAD按鈕PCB和PICO驅(qū)動板連接在一起是組裝過程中的最后階段。
要做到這一點,我們首先向按鈕板的CON5端口添加五根連接線,然后以正確的引腳順序?qū)⒚扛B接線連接到PICO DRIVER。
按鈕板的UP引腳連接GPIO7, DOWN引腳連接GPIO6, LEFT引腳連接GPIO15, RIGHT引腳連接GPIO14。
一旦PICO驅(qū)動器和按鈕板之間的電線連接,我們小心地將額外的電線長度塞在框架內(nèi),并用一小塊熱膠固定。
貪吃蛇游戲控制臺組裝現(xiàn)已完成。
主要代碼
這是我們在這個項目中使用的主要代碼,它很簡單。
本代碼分為七個部分,分別是:
庫和引腳定義-其中包括Adafruit_Protomatter庫,用于控制RGB矩陣以及RGB信號,地址線,時鐘,Snake長度,鎖鎖和輸出啟用以及按鈕的引腳,也在這里定義。
矩陣初始化和蛇形結(jié)構(gòu)——在這里,矩陣被設(shè)置為寬度、高度、RGB引腳、地址引腳、時鐘、鎖存器和輸出使能。定義蛇段的結(jié)構(gòu),初始化蛇的長度、方向、顏色、食物位置、分?jǐn)?shù)和游戲結(jié)束標(biāo)志。
放置食物功能-將食物放置在母體上,確保它不會與蛇的位置重疊。
設(shè)置功能-初始化矩陣和按鈕引腳。將蛇放置在屏幕中間并放置最初的食物。
drawscore在屏幕上顯示分?jǐn)?shù)。drawGameOver顯示“游戲結(jié)束”消息和分?jǐn)?shù)。
游戲邏輯功能- checkgameover檢查蛇是否與自己碰撞,設(shè)置游戲結(jié)束標(biāo)志。resetGame重置游戲變量并初始化蛇的位置。
主循環(huán)-控制主要的游戲邏輯,包括蛇的運動,食物的放置,分?jǐn)?shù)更新,繪圖和游戲結(jié)束檢查。
循環(huán)檢查按鈕輸入以控制蛇的方向,更新蛇的位置,處理屏幕包裝,檢查食物消耗,并更新顯示。如果游戲結(jié)束,它會顯示“游戲結(jié)束”消息,等待5秒,然后重置游戲。
結(jié)果
這是這個冗長但簡單的構(gòu)建的最終結(jié)果:一個功能完善的手持蛇游戲控制臺。它有一個集成的電池,使用戶可以隨身攜帶,并在旅途中玩游戲。
我們可以用DPad控制Snake的動作。目標(biāo)是消耗盡可能多的食物或紅點;屏幕右上角的分?jǐn)?shù)標(biāo)記位置表示我們的進度。
Snake可以跨越顯示邊界,但是如果它在游戲過程中不小心割傷了自己,游戲便會結(jié)束,你便會看到一個紅色屏幕,上面寫著“游戲結(jié)束”以及你的分?jǐn)?shù)。等待5秒后,游戲?qū)⒅匦麻_始并繼續(xù)。
通過點擊控制臺背面的PUSH按鈕,可以打開或關(guān)閉整個設(shè)備。
我們可以使用MICRO B線和標(biāo)準(zhǔn)的5V智能手機充電器為鋰電池充電。充電期間狀態(tài)LED將繼續(xù)閃爍,但它將停止閃爍并在電池充滿電后保持亮起。
本文編譯自hackster.io