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





