基于树莓派PICO 2和Waveshare RGB-Matrix-P3的手持游戏机
扫描二维码
随时随地手机看文章
大家好,欢迎回来,这里有一些超级有趣的东西。
贪吃蛇游戏机是一款便携式游戏机,具有特别设计的树莓派PICO 2驱动电路和RGB 64x32 P3矩阵面板。
我们在Fusion360中建模设备,3D打印框架,并将其与矩阵面板和定制pcb组装在一起,制作我们自己的游戏机。
对于游戏,我们从零开始创建了传统的Snake游戏,使用一个简单的Snake实体,可以通过四个方向按钮来控制。随机地,一个红点出现在矩阵面板上,我们可以使用方向按钮引导蛇吃掉这个随机的红点。在右上角,我们还添加了一个分数标记,它记录了我们的蛇消耗了多少红点。
此外,当蛇咬到自己的身体时,游戏就结束了。
这款游戏机有一个机载电源,它是一个3.7V 2600mAh的锂离子电池,为设备供电,使它成为一个便携式游戏系统,我们可以带着它去任何地方玩。
本文涵盖了这个项目的整个构建过程,所以让我们开始吧。
材料要求
这些是这个项目中使用的材料:
•定制pcb(由PCBWAY提供)
•树莓派PICO 2
•RGB矩阵64x32
•IP5306集成电路
•10 uf电容器
•USB微接口
•18650锂电池
•18650电池座SMD版本
•按钮
•3D打印部件
64x32 RGB矩阵
我们使用的是64x32 RGB矩阵面板,它通过在64 × 32网格中安排2048个RGB led来创建生动的文本,图形和动画。
HUB75接口使用多个控制引脚,包括RGB、地址、时钟、数据锁存器和输出使能引脚,用于操作该面板。
行-列扫描技术是通过HUB75链路实现的,它将一行像素数据转移到移位寄存器中。然后使用解复用器来确定应该显示哪些行。RGB通道、寻址引脚A、B、C和D、时钟信号(CLK)、锁存信号(LAT)和输出使能(OE)引脚都包含在HUB75连接器中。
我们还可以使用提供的in和OUT连接成对地链接几个面板,以创建一个链。确保我们正在使用的控制解决方案(PICO 2)可以管理两个或多个显示器的额外数据负载,这是连接多个面板的困难之一。
至于采购这个矩阵面板,我们从PCBWAY礼品店得到了它。
控制台的设计
这个项目的第一阶段是建立一个控制台的3D模型,它有两个类似手柄的组件安装在矩阵的背面。然后我们在一边创建了一个特殊按钮板的模型。
PICO驱动电路,用四个垫片固定在手柄框架上,位于设备的背面。
使用已经在矩阵上的三个M3插入件,两个Handgrip框架组件从矩阵面板的背面安装。每个手柄有三个安装孔,我们添加,以便M3螺栓可以用来连接手柄到矩阵。
使用4颗M2螺钉将按钮板固定在控制台一侧。
模型完成后,我们导出了左右把手和四个垫片的网格文件,然后使用0.6mm喷嘴在黑色PLA中3D打印它们。
PCB设计:PICO驱动
使用我们的PCB Cad软件,我们首先创建PICO驱动板设计的原理图。为了将树莓派PICO 2连接到矩阵的HUB75连接器,我们的设置由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。
我们为按钮添加了一个CON5连接器,它的四个引脚连接到PICO的GPIO6, GPIO7, GPIO14和GPIO15。GND连接到CON5的第五个引脚。每个GPIO将被连接到这个CON5的按钮板拉到GND, PICO可以检测到这是一个按钮按下。
我们还集成了一个电源管理IC, IP5306,一个完全集成的多功能电源管理SoC,为整个设置供电。
它可以使用3.7V作为输入提供稳定的5V 2.1A,可用于为任何5V设备供电-在我们的实例中,矩阵和PICO 2。
在原理图设置之后,我们导出网表,并通过参考CAD文件的板布局创建板文件。PICO 2,按钮,锂电池支架和USB迷你端口都在板的顶部,而所有的SMD组件都在底部。
PCB设计:按钮板
接下来,我们得到按钮板的原理图准备。它有四个按钮,每个按钮的4和3引脚连接到GND。此外,还有一个CON5连接器,连接到每个连接器的1和2用于GPIO, 3和4用于GND。
在建立了原理图之后,我们使用PCB编辑器通过在适当的位置对齐按钮并完全按照CAD文件布局来准备板文件。
PCBWAY
我们为这个项目制作了两个pcb:按钮板和PICO驱动板。下了两个订单:一个是按钮板,一个是PICO驱动板。
按钮板PCB订购了白色阻焊和黑色丝印,而PICO驱动器PCB订购了蓝色阻焊和白色丝印。
下订单后,PCB在一周内收到,PCB质量非常好。
在过去的十年中,PCBWay通过提供出色的PCB制造和组装服务而脱颖而出,成为全球无数工程师和设计师值得信赖的合作伙伴。
他们对质量和客户满意度的承诺一直坚定不移,导致了显着的增长和扩张。
如果你想以合理的价格获得优质的PCB服务,你可以看看PCBWAY。
PCB组件:pico驱动器
使用焊膏分配针,我们将焊膏(在本例中为63/37 Sn/Pb焊膏)涂抹在每个SMD组件PAD上,以开始PICO Driver组装过程。
接下来,我们使用ESD Tweeser来选择和定位PCB上的每个SMD组件。
在元件放置之后,将电路抬起并置于回流加热板上,从而将PCB的温度从下面提高到锡膏的熔点。当PCB达到190°C的温度时,锡膏熔化,所有SMD组件都安全就位。
按照回流过程,我们翻转板,并使用烙铁定位18650持有人。
安装好USB微端口和Push Switch后,我们翻转电路板并焊接它们的两个焊盘。
测试动力部分
在继续进行PICO DRIVER组装过程之前,我们停止组装过程,并通过将18650 3.7V 2600mAh锂电池以正确的极性放置在其电池支架中来验证功率模块电路。
当我们按下按钮时,设备就会打开。我们用万用表测量设备的输出电压,应该是5V。我们现在可以将PICO 2添加到PCB并开始组装过程。
PCB组件:PICO驱动器(组件的其余部分)
在PICO 2插槽上定位两个CON 20母头引脚,在HUB75连接器插槽上定位两个CON 8公头引脚后,我们将电路板翻转过来,使用烙铁焊接它们的焊盘。
最后,我们将锂电池重新安装在电池支架中,并将树莓派PICO定位在CON 20引脚上。
完成PICO驱动程序组装。
PCB组装:按钮板
为了开始按钮板组装过程,我们首先从板的顶部定位按钮,然后我们从底部焊接它们的焊盘。
PICO驱动和矩阵组装
使用矩阵套件中包含的线束,我们首先连接PICO驱动器和矩阵。我们将线束的正极焊接到PICO DRIVER的5V输出,负极焊接到PICO DRIVER的GND。
接下来,我们将母线束连接器连接到矩阵的公连接器。
然后使用HUB75线束连接矩阵和PICO驱动程序gpio。它首先插入矩阵连接器,然后它的另一端连接到PICO驱动器。
测试素描:游戏人生
我们首先连接matrix和PICO DRIVE,然后使用我们之前转换的Game of Life代码(取自FastLED库的示例草图)闪现PICO,以查看我们的配置是否有效。
著名的元胞自动机“生命游戏”是由英国数学家约翰·霍顿·康威于1970年发明的。因为这是一款零玩家游戏,所以不需要额外的输入;相反地,游戏的进程是由其初始状态决定的。
游戏将以随机配置开始,并在它停止后以新的随机配置重新开始,是的,这个设置是图灵完成的。
我们在这里使用Adafruit_Protomatter库,在使用此代码之前,您需要在Arduino IDE上安装该库。
框架与矩阵装配
通过将两个3d打印手柄框架的安装孔与矩阵的安装孔对齐,我们现在可以将它们连接到矩阵的背面。然后使用6个M3螺栓将框架和矩阵连接在一起。我们可以很容易地连接框架和矩阵与M3螺栓感谢M3黄铜插入已添加到矩阵的背面。
按钮板框组件
从控制台前方定位按钮板,使用4颗M2螺钉固定。
微型驱动器和框架组件
现在,我们使用四个3d打印垫片将PICO DRIVER放置在3d打印框架上的控制台背面。
我们将PICO驱动器放在框架安装孔上方的四个垫片上,然后使用M3螺钉将PICO驱动器固定在框架上。
最终组装:按钮板和微型驱动器线连接
将DPAD按钮PCB和PICO驱动板连接在一起是组装过程中的最后阶段。
要做到这一点,我们首先向按钮板的CON5端口添加五根连接线,然后以正确的引脚顺序将每根连接线连接到PICO DRIVER。
按钮板的UP引脚连接GPIO7, DOWN引脚连接GPIO6, LEFT引脚连接GPIO15, RIGHT引脚连接GPIO14。
一旦PICO驱动器和按钮板之间的电线连接,我们小心地将额外的电线长度塞在框架内,并用一小块热胶固定。
贪吃蛇游戏控制台组装现已完成。
主要代码
这是我们在这个项目中使用的主要代码,它很简单。
本代码分为七个部分,分别是:
库和引脚定义-其中包括Adafruit_Protomatter库,用于控制RGB矩阵以及RGB信号,地址线,时钟,Snake长度,锁锁和输出启用以及按钮的引脚,也在这里定义。
矩阵初始化和蛇形结构——在这里,矩阵被设置为宽度、高度、RGB引脚、地址引脚、时钟、锁存器和输出使能。定义蛇段的结构,初始化蛇的长度、方向、颜色、食物位置、分数和游戏结束标志。
放置食物功能-将食物放置在母体上,确保它不会与蛇的位置重叠。
设置功能-初始化矩阵和按钮引脚。将蛇放置在屏幕中间并放置最初的食物。
drawscore在屏幕上显示分数。drawGameOver显示“游戏结束”消息和分数。
游戏逻辑功能- checkgameover检查蛇是否与自己碰撞,设置游戏结束标志。resetGame重置游戏变量并初始化蛇的位置。
主循环-控制主要的游戏逻辑,包括蛇的运动,食物的放置,分数更新,绘图和游戏结束检查。
循环检查按钮输入以控制蛇的方向,更新蛇的位置,处理屏幕包装,检查食物消耗,并更新显示。如果游戏结束,它会显示“游戏结束”消息,等待5秒,然后重置游戏。
结果
这是这个冗长但简单的构建的最终结果:一个功能完善的手持蛇游戏控制台。它有一个集成的电池,使用户可以随身携带,并在旅途中玩游戏。
我们可以用DPad控制Snake的动作。目标是消耗尽可能多的食物或红点;屏幕右上角的分数标记位置表示我们的进度。
Snake可以跨越显示边界,但是如果它在游戏过程中不小心割伤了自己,游戏便会结束,你便会看到一个红色屏幕,上面写着“游戏结束”以及你的分数。等待5秒后,游戏将重新开始并继续。
通过点击控制台背面的PUSH按钮,可以打开或关闭整个设备。
我们可以使用MICRO B线和标准的5V智能手机充电器为锂电池充电。充电期间状态LED将继续闪烁,但它将停止闪烁并在电池充满电后保持亮起。
本文编译自hackster.io