设计一款迷你贪吃蛇游戏机
扫描二维码
随时随地手机看文章
大家好,欢迎回来。这里有一些有趣的东西。
在我们最新的项目中,游戏怀旧与现代创新相遇——迷你蛇游戏控制台。这个缩小的版本建立在我们之前的64x32 HUB75 RGB矩阵面板为基础的Snake游戏机,但现在,我们已经采取了这个概念,并将其缩小到一个真正的手持游戏设备。
我们的目标是创造一个小版本的原始Snake游戏控制台,可以运行类似版本的Snake游戏代码。虽然核心游戏逻辑保持不变,但需要进行一些修改,包括调整显示尺寸,调整蛇的大小以及引入关键增强功能。现在,这条蛇有了渐变的颜色,增加了更多的视觉吸引力,每当食物(红点)被吃掉时,它就会发出蜂鸣器驱动的哔哔声,这给游戏体验带来了更多的满足感。
如果蛇咬了自己,游戏结束序列就开始了,我们会看到一个游戏结束屏幕,显示所消耗的食物的总数。在游戏自动重新开始之前,游戏结束画面会持续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
让我们先来看看贪吃蛇游戏机,这是一个紧凑的便携式系统,由树莓派PICO驱动,具有64x32 RGB矩阵面板和3d打印外壳。它运行的是一款经典的贪吃蛇游戏,你可以使用四个方向的按钮来引导蛇,追逐随机的红点来获得分数,并尽量避免撞到自己。另外,它有一个机载电池,所以你可以带着它去任何地方玩。
然后是camePICO Blaster,它采用了相同的硬件设置,并将其变成了一款快节奏的《太空入侵者》风格的射击游戏。有了额外的自定义控制板,改进的游戏机制和颜色编码的投射物,这款游戏完全是关于反应和策略的。
玩家驾驶一艘宇宙飞船,躲避攻击并使用两种类型的武器进行反击——速射子弹和强大的冲击波,它可以消灭沿途的一切(游戏邦注:为了保持趣味性,玩家需要设置冷却时间!)
这两款游戏都是从头开始编写的,真的很痛苦。大部分开发时间都花在了创造游戏逻辑上,而这两款设备的硬件部分也非常简单,并且在不到一天的时间内就准备好了。
对于Mini版本,我只移植了Snake Game。我们可以为该设备制作更多游戏,这将是我们未来项目的一个想法。
迷你版设计
在这个项目的设计中,我们首先将我们的ESP32显示器的3D模型导入到Fusion360中,同时导入我们的Button PCB with Buttons的Cad文件,以及电池和push switch的Cad文件。
接下来,我们将组件组织在一个合乎逻辑和实用的布局中,将开关PCB放置在显示器下方,将电池放置在显示器和开关PCB的后面,并将推开关放置在电池上方的背面。一旦一切都安排好了,我们就开始设计一个封装所有组件的外壳,并将它们无缝地统一起来。在美学上,我选择了一个方形的复古设计,让人想起上世纪90年代,从经典的诺基亚手机中汲取灵感——从它的外形上可以看到这些元素。
外壳已准备好并分为两部分:前外壳和盖子部分。前机箱容纳ESP32显示板和Switch PCB。ESP32显示器是压力安装在其位置;我们还包括安装孔,以防有人希望拧紧显示器适当与外壳。开关PCB用4颗M2螺钉固定到位。
盖子部分容纳电池和电源开关。
前外壳和盖子部分都用四个M2螺钉连接在一起,因为我们在前外壳上创建了四个螺钉凸台,在盖子上创建了四个孔,以滑动螺钉并将两者连接在一起。
对于3D打印,我们导出了两个部件的网格文件,并在我们的新Creality K10 max上使用0.4mm喷嘴和25%填充的白色Hyper PLA打印它们。
ESP32显示开发板
我们在我们的项目中使用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,微控制器记录按钮状态的这种变化。
通过在适当的位置添加按钮并按正确的顺序连接走线,最终完成了电路板设计,之后我们导出了该PCB的Gerber Data并将其发送给PCBWAY进行样品。
开关PCB组件
按钮板的组装过程超级简单。我们首先从板的顶部放置按钮,然后我们用烙铁从底部焊接它们的焊盘。
贪吃蛇游戏代码
在继续汇编过程之前,让我们深入研究一下这个项目的代码。
让我们对这段代码进行深入分析,并从Include库和显示设置开始。
这些包括ESP32所需的库,还定义了保存在pin_config文件中的重要硬件引脚映射。
上面的部分设置SPI总线并初始化ST7789 LCD显示器。
接下来,我们为用户控件和蜂鸣器定义GPIO引脚。
接下来是游戏网格大小和单个单元大小。
这控制了网格中的食物放置边界。
这一部分定义了蛇的结构和运动、食物和游戏状态的必要变量。
现在是游戏逻辑功能,它包含两个主要部分;食物放置和碰撞检测。
这是食物放置功能,当食物被吃掉时随机分配一个新的位置。
这是检查蛇是否与自己碰撞的部分。
接下来是游戏重置和得分部分。
这部分在新回合开始时重置游戏状态。
本节更新LCD上的成绩显示。
现在是这个项目的声音效果部分,当食物被消耗时播放一个简短的哔哔声,当游戏结束时播放一段旋律。
当食物被吃掉时,它会发出短暂的哔哔声。
这个部分在比赛结束时播放一段旋律。
现在是游戏显示和图形部分,显示“游戏结束”屏幕并重置游戏。
初始化串行通信、显示和按钮引脚。
最后,我们得到了这段代码中最重要的部分,即游戏循环。这个部分处理移动、碰撞、食物消耗和游戏速度。
我们在附件中附加了pin_config.h文件,因此请确保它与主草图位于同一文件夹中。
布线过程
•首先将五根线连接到ESP32 Dev板的GPIO2、GPIO10、GPIO16、GPIO18和GND端子上。
•接下来,我们将地线连接到按钮板的GND端子。
•GPIO2线连接在交换板的左端子上。
•GPIO10连接右端。
•GPIO16连接Down端子。
•GPIO18连接Up端子。
电源组件
我们使用3.7V 500mAh 14500锂离子电池作为这个项目的电源。
他们通常没有点焊电线,迫使人们手动将电线焊接到电池端子上,这是一种可能导致火灾或爆炸的不良做法。这无疑会减少电池的寿命和容量,因此我们应该避免使用烙铁将电线直接焊接到锂电池的端子上。
•我们现在通过将电池的正极线连接到推开关的NC开始电源组装过程。
•我们在推开关的公共端子上再加一根电线。我们在电池正极之间加入了一个推开关,这样电池电源就可以通过这个开关关闭。
•接下来,我们将电池的正极和负极连接线连接到ESP32板上的电池连接器。
•通过这个连接,我们现在可以用锂离子电池为这个装置供电了。
总装
•最后的组装开始与ESP32显示器的安置在前面的外壳上,我们从前面推到位。
•接下来,我们从前外壳的内部传递开关PCB并将其放在前面。这将隐藏ESP32板和Switch PCB之间的连接线。
•然后使用四个M2螺钉将开关PCB固定在适当位置。
•我们现在安装锂电池在盖子部分和推开关在其正确的位置。
•使用热熔胶枪,我们将热熔胶涂在推开关和电池上,使它们固定在适当的位置。
•接下来,我们在GPIO端口上的显示器背面涂上热熔胶,在这里我们连接了开关板的电线,防止在组装过程中从ESP32走线拔出电线。
•机箱的两个部分现在已经定位在一起,用4颗M2螺钉将它们连接起来。
•我们的Snake游戏控制台迷你设备已经组装好了。
结果
这是这个小型构建的最终结果:迷你蛇游戏控制台,一个小型的手持游戏设备,以紧凑的形式将经典的蛇游戏带入生活。整个设计带有怀旧气息,有点像老款诺基亚6110,让人立刻回想起早期的手机游戏。
尽管它很小,但控制台运行流畅,具有响应式控制和由ESP32-S3-LCD-1.69驱动的充满活力的显示屏。渐变颜色的蛇,当你吃东西时的蜂鸣器,以及定制的按钮板,都让它感觉很精致,玩起来很有趣。在Fusion 360中设计的3d打印外壳使它具有坚固的结构,可以舒适地握在手中。
多亏了内置的500毫安锂离子电池,它是完全便携式的,让你随时随地玩游戏,而不需要恒定的电源。明亮的显示屏和流畅的游戏玩法使它与大版本一样吸引人,但现在它更方便携带。
对于下一个迭代,我想更多地关注游戏本身,这可以通过添加障碍(游戏邦注:如当蛇碰到墙壁时便会结束游戏)而进一步完善。当蛇变大时,它的速度会增加,这是我想在项目的下一个版本中添加的调整之一。此外,我相信如果我们在未来的项目中使用LiPo电池,以及带有SMD按钮的定制PCB,以增加PCB和电子产品的尺寸,我可以创造一个更好更小的身体。
本文编译自hackster.io





