設(shè)計(jì)一款迷你貪吃蛇游戲機(jī)
大家好,歡迎回來。這里有一些有趣的東西。
在我們最新的項(xiàng)目中,游戲懷舊與現(xiàn)代創(chuàng)新相遇——迷你蛇游戲控制臺(tái)。這個(gè)縮小的版本建立在我們之前的64x32 HUB75 RGB矩陣面板為基礎(chǔ)的Snake游戲機(jī),但現(xiàn)在,我們已經(jīng)采取了這個(gè)概念,并將其縮小到一個(gè)真正的手持游戲設(shè)備。
我們的目標(biāo)是創(chuàng)造一個(gè)小版本的原始Snake游戲控制臺(tái),可以運(yùn)行類似版本的Snake游戲代碼。雖然核心游戲邏輯保持不變,但需要進(jìn)行一些修改,包括調(diào)整顯示尺寸,調(diào)整蛇的大小以及引入關(guān)鍵增強(qiáng)功能?,F(xiàn)在,這條蛇有了漸變的顏色,增加了更多的視覺吸引力,每當(dāng)食物(紅點(diǎn))被吃掉時(shí),它就會(huì)發(fā)出蜂鳴器驅(qū)動(dòng)的嗶嗶聲,這給游戲體驗(yàn)帶來了更多的滿足感。
如果蛇咬了自己,游戲結(jié)束序列就開始了,我們會(huì)看到一個(gè)游戲結(jié)束屏幕,顯示所消耗的食物的總數(shù)。在游戲自動(dòng)重新開始之前,游戲結(jié)束畫面會(huì)持續(xù)5秒。
這款迷你控制臺(tái)采用Waveshare的ESP32- s3 - lcd -1.69,這是一款基于ESP32 s3的設(shè)置,配有1.69英寸的ST7789V2顯示屏,在不犧牲性能的情況下提供便攜性。由于內(nèi)置500毫安鋰電池,你可以隨時(shí)隨地玩游戲。所有組件,包括ESP32板和定制按鈕板,都安置在一個(gè)定制設(shè)計(jì)的外殼內(nèi),我們?cè)贔usion 360中構(gòu)建,然后使用Creality K10 Max進(jìn)行3D打印。
本文探討了這個(gè)Snake Game控制臺(tái)的整個(gè)構(gòu)建過程,以及如何通過幾個(gè)簡單的步驟重新構(gòu)建它,所以讓我們開始構(gòu)建吧。
材料要求
這些是建筑中使用的材料:
?定制PCB(由PCBWAY提供)
?ESP32 S3 1.69寸顯示屏(購于PCBWAY禮品店)
?按鈕
?500mAh 3.7V 14500鋰離子電池
?按鈕開關(guān)
?M2螺絲
?連接電線
?熱熔膠
?3D打印外殼
Snake游戲控制臺(tái)項(xiàng)目和PICO Blasters
讓我們先來看看貪吃蛇游戲機(jī),這是一個(gè)緊湊的便攜式系統(tǒng),由樹莓派PICO驅(qū)動(dòng),具有64x32 RGB矩陣面板和3d打印外殼。它運(yùn)行的是一款經(jīng)典的貪吃蛇游戲,你可以使用四個(gè)方向的按鈕來引導(dǎo)蛇,追逐隨機(jī)的紅點(diǎn)來獲得分?jǐn)?shù),并盡量避免撞到自己。另外,它有一個(gè)機(jī)載電池,所以你可以帶著它去任何地方玩。
然后是camePICO Blaster,它采用了相同的硬件設(shè)置,并將其變成了一款快節(jié)奏的《太空入侵者》風(fēng)格的射擊游戲。有了額外的自定義控制板,改進(jìn)的游戲機(jī)制和顏色編碼的投射物,這款游戲完全是關(guān)于反應(yīng)和策略的。
玩家駕駛一艘宇宙飛船,躲避攻擊并使用兩種類型的武器進(jìn)行反擊——速射子彈和強(qiáng)大的沖擊波,它可以消滅沿途的一切(游戲邦注:為了保持趣味性,玩家需要設(shè)置冷卻時(shí)間!)
這兩款游戲都是從頭開始編寫的,真的很痛苦。大部分開發(fā)時(shí)間都花在了創(chuàng)造游戲邏輯上,而這兩款設(shè)備的硬件部分也非常簡單,并且在不到一天的時(shí)間內(nèi)就準(zhǔn)備好了。
對(duì)于Mini版本,我只移植了Snake Game。我們可以為該設(shè)備制作更多游戲,這將是我們未來項(xiàng)目的一個(gè)想法。
迷你版設(shè)計(jì)
在這個(gè)項(xiàng)目的設(shè)計(jì)中,我們首先將我們的ESP32顯示器的3D模型導(dǎo)入到Fusion360中,同時(shí)導(dǎo)入我們的Button PCB with Buttons的Cad文件,以及電池和push switch的Cad文件。
接下來,我們將組件組織在一個(gè)合乎邏輯和實(shí)用的布局中,將開關(guān)PCB放置在顯示器下方,將電池放置在顯示器和開關(guān)PCB的后面,并將推開關(guān)放置在電池上方的背面。一旦一切都安排好了,我們就開始設(shè)計(jì)一個(gè)封裝所有組件的外殼,并將它們無縫地統(tǒng)一起來。在美學(xué)上,我選擇了一個(gè)方形的復(fù)古設(shè)計(jì),讓人想起上世紀(jì)90年代,從經(jīng)典的諾基亞手機(jī)中汲取靈感——從它的外形上可以看到這些元素。
外殼已準(zhǔn)備好并分為兩部分:前外殼和蓋子部分。前機(jī)箱容納ESP32顯示板和Switch PCB。ESP32顯示器是壓力安裝在其位置;我們還包括安裝孔,以防有人希望擰緊顯示器適當(dāng)與外殼。開關(guān)PCB用4顆M2螺釘固定到位。
蓋子部分容納電池和電源開關(guān)。
前外殼和蓋子部分都用四個(gè)M2螺釘連接在一起,因?yàn)槲覀冊(cè)谇巴鈿ど蟿?chuàng)建了四個(gè)螺釘凸臺(tái),在蓋子上創(chuàng)建了四個(gè)孔,以滑動(dòng)螺釘并將兩者連接在一起。
對(duì)于3D打印,我們導(dǎo)出了兩個(gè)部件的網(wǎng)格文件,并在我們的新Creality K10 max上使用0.4mm噴嘴和25%填充的白色Hyper PLA打印它們。
ESP32顯示開發(fā)板
我們?cè)谖覀兊捻?xiàng)目中使用ESP32-S3-LCD-1.69,因?yàn)樗且环N低成本,高性能的MCU板,完全符合我們的需求。
配備了1.69英寸的電容式液晶顯示屏,鋰電池充電芯片,以及帶有三軸加速度計(jì)和陀螺儀的六軸傳感器,該板具有增強(qiáng)我們的Snake游戲機(jī)的功能。
它包括一個(gè)定時(shí)功能的RTC芯片,一個(gè)用于運(yùn)動(dòng)跟蹤的QMI8658慣性測量單元(IMU),以及一個(gè)用于長期電源管理的ETA6098鋰電池充電芯片。
板載蜂鳴器提供音頻反饋,而Type-C接口允許輕松的演示閃爍和日志打印。此外,BOOT和RST按鈕簡化了重置和固件下載,可定制的功能按鈕支持多種輸入方法,包括單、雙和長按。
ST7789V2液晶控制器支持240 × RGB × 320分辨率,但其有效顯示面積為240(H) × RGB × 280(V)。它支持RGB444、RGB565和RGB666顏色格式,我們的項(xiàng)目使用RGB565來獲得最佳的視覺輸出。
四線SPI接口確保高效的GPIO使用和快速的通信速度,而顯示屏的圓角有助于其圓滑,緊湊的設(shè)計(jì)。
至于采購這個(gè)顯示器,我們從PCBWAY的禮品店得到了它,這是一個(gè)電子市場,在那里你可以找到各種各樣的電子設(shè)備和模塊,他們的真實(shí)價(jià)格。
開關(guān)PCB設(shè)計(jì)
在這個(gè)項(xiàng)目中,我們重新使用了之前的貪吃蛇游戲控制臺(tái)項(xiàng)目中的一個(gè)按鈕板。該P(yáng)CB具有四個(gè)按鈕,每個(gè)連接到GND,以及四個(gè)輸出引腳,將連接到ESP32的GPIO引腳。通過按下每個(gè)按鈕,我們將GPIO引腳拉到GND,微控制器記錄按鈕狀態(tài)的這種變化。
通過在適當(dāng)?shù)奈恢锰砑影粹o并按正確的順序連接走線,最終完成了電路板設(shè)計(jì),之后我們導(dǎo)出了該P(yáng)CB的Gerber Data并將其發(fā)送給PCBWAY進(jìn)行樣品。
開關(guān)PCB組件
按鈕板的組裝過程超級(jí)簡單。我們首先從板的頂部放置按鈕,然后我們用烙鐵從底部焊接它們的焊盤。
貪吃蛇游戲代碼
在繼續(xù)匯編過程之前,讓我們深入研究一下這個(gè)項(xiàng)目的代碼。
讓我們對(duì)這段代碼進(jìn)行深入分析,并從Include庫和顯示設(shè)置開始。
這些包括ESP32所需的庫,還定義了保存在pin_config文件中的重要硬件引腳映射。
上面的部分設(shè)置SPI總線并初始化ST7789 LCD顯示器。
接下來,我們?yōu)橛脩艨丶头澍Q器定義GPIO引腳。
接下來是游戲網(wǎng)格大小和單個(gè)單元大小。
這控制了網(wǎng)格中的食物放置邊界。
這一部分定義了蛇的結(jié)構(gòu)和運(yùn)動(dòng)、食物和游戲狀態(tài)的必要變量。
現(xiàn)在是游戲邏輯功能,它包含兩個(gè)主要部分;食物放置和碰撞檢測。
這是食物放置功能,當(dāng)食物被吃掉時(shí)隨機(jī)分配一個(gè)新的位置。
這是檢查蛇是否與自己碰撞的部分。
接下來是游戲重置和得分部分。
這部分在新回合開始時(shí)重置游戲狀態(tài)。
本節(jié)更新LCD上的成績顯示。
現(xiàn)在是這個(gè)項(xiàng)目的聲音效果部分,當(dāng)食物被消耗時(shí)播放一個(gè)簡短的嗶嗶聲,當(dāng)游戲結(jié)束時(shí)播放一段旋律。
當(dāng)食物被吃掉時(shí),它會(huì)發(fā)出短暫的嗶嗶聲。
這個(gè)部分在比賽結(jié)束時(shí)播放一段旋律。
現(xiàn)在是游戲顯示和圖形部分,顯示“游戲結(jié)束”屏幕并重置游戲。
初始化串行通信、顯示和按鈕引腳。
最后,我們得到了這段代碼中最重要的部分,即游戲循環(huán)。這個(gè)部分處理移動(dòng)、碰撞、食物消耗和游戲速度。
我們?cè)诟郊懈郊恿藀in_config.h文件,因此請(qǐng)確保它與主草圖位于同一文件夾中。
布線過程
?首先將五根線連接到ESP32 Dev板的GPIO2、GPIO10、GPIO16、GPIO18和GND端子上。
?接下來,我們將地線連接到按鈕板的GND端子。
?GPIO2線連接在交換板的左端子上。
?GPIO10連接右端。
?GPIO16連接Down端子。
?GPIO18連接Up端子。
電源組件
我們使用3.7V 500mAh 14500鋰離子電池作為這個(gè)項(xiàng)目的電源。
他們通常沒有點(diǎn)焊電線,迫使人們手動(dòng)將電線焊接到電池端子上,這是一種可能導(dǎo)致火災(zāi)或爆炸的不良做法。這無疑會(huì)減少電池的壽命和容量,因此我們應(yīng)該避免使用烙鐵將電線直接焊接到鋰電池的端子上。
?我們現(xiàn)在通過將電池的正極線連接到推開關(guān)的NC開始電源組裝過程。
?我們?cè)谕崎_關(guān)的公共端子上再加一根電線。我們?cè)陔姵卣龢O之間加入了一個(gè)推開關(guān),這樣電池電源就可以通過這個(gè)開關(guān)關(guān)閉。
?接下來,我們將電池的正極和負(fù)極連接線連接到ESP32板上的電池連接器。
?通過這個(gè)連接,我們現(xiàn)在可以用鋰離子電池為這個(gè)裝置供電了。
總裝
?最后的組裝開始與ESP32顯示器的安置在前面的外殼上,我們從前面推到位。
?接下來,我們從前外殼的內(nèi)部傳遞開關(guān)PCB并將其放在前面。這將隱藏ESP32板和Switch PCB之間的連接線。
?然后使用四個(gè)M2螺釘將開關(guān)PCB固定在適當(dāng)位置。
?我們現(xiàn)在安裝鋰電池在蓋子部分和推開關(guān)在其正確的位置。
?使用熱熔膠槍,我們將熱熔膠涂在推開關(guān)和電池上,使它們固定在適當(dāng)?shù)奈恢谩?
?接下來,我們?cè)贕PIO端口上的顯示器背面涂上熱熔膠,在這里我們連接了開關(guān)板的電線,防止在組裝過程中從ESP32走線拔出電線。
?機(jī)箱的兩個(gè)部分現(xiàn)在已經(jīng)定位在一起,用4顆M2螺釘將它們連接起來。
?我們的Snake游戲控制臺(tái)迷你設(shè)備已經(jīng)組裝好了。
結(jié)果
這是這個(gè)小型構(gòu)建的最終結(jié)果:迷你蛇游戲控制臺(tái),一個(gè)小型的手持游戲設(shè)備,以緊湊的形式將經(jīng)典的蛇游戲帶入生活。整個(gè)設(shè)計(jì)帶有懷舊氣息,有點(diǎn)像老款諾基亞6110,讓人立刻回想起早期的手機(jī)游戲。
盡管它很小,但控制臺(tái)運(yùn)行流暢,具有響應(yīng)式控制和由ESP32-S3-LCD-1.69驅(qū)動(dòng)的充滿活力的顯示屏。漸變顏色的蛇,當(dāng)你吃東西時(shí)的蜂鳴器,以及定制的按鈕板,都讓它感覺很精致,玩起來很有趣。在Fusion 360中設(shè)計(jì)的3d打印外殼使它具有堅(jiān)固的結(jié)構(gòu),可以舒適地握在手中。
多虧了內(nèi)置的500毫安鋰離子電池,它是完全便攜式的,讓你隨時(shí)隨地玩游戲,而不需要恒定的電源。明亮的顯示屏和流暢的游戲玩法使它與大版本一樣吸引人,但現(xiàn)在它更方便攜帶。
對(duì)于下一個(gè)迭代,我想更多地關(guān)注游戲本身,這可以通過添加障礙(游戲邦注:如當(dāng)蛇碰到墻壁時(shí)便會(huì)結(jié)束游戲)而進(jìn)一步完善。當(dāng)蛇變大時(shí),它的速度會(huì)增加,這是我想在項(xiàng)目的下一個(gè)版本中添加的調(diào)整之一。此外,我相信如果我們?cè)谖磥淼捻?xiàng)目中使用LiPo電池,以及帶有SMD按鈕的定制PCB,以增加PCB和電子產(chǎn)品的尺寸,我可以創(chuàng)造一個(gè)更好更小的身體。
本文編譯自hackster.io





