当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]这个项目基于我之前制作的PICO VGA板,该板将树莓派Pico连接到DSUB15接口,用于驱动VGA显示器并作为普通显示屏使用。通过保留原有项目,并添加一个按钮板以及进行一些修改,我最终打造出了这款复古风格的游戏主机。

这是PICO VGA BLASTER,一款DIY复古游戏机,可在VGA显示器上运行街机风格的游戏。

这个项目基于我之前制作的PICO VGA板,该板将树莓派Pico连接到DSUB15接口,用于驱动VGA显示器并作为普通显示屏使用。通过保留原有项目,并添加一个按钮板以及进行一些修改,我最终打造出了这款复古风格的游戏主机。

我专门为这款主机制作了一款定制游戏(PICO VGA BLASTER)。游戏 loosely loosely loosely 基于原版《太空侵略者》,但有个小改动:外星人是呈VGA端口形状的生物,入侵了地球,而我们的任务就是保卫地球。

我的控制台有六个按钮:四个方向键用于操控飞船,两个按钮用于发射导弹和子弹。

没有背景故事的游戏会显得乏味,因此我为游戏创作了完整的剧情设定和开场序列,让整个体验呈现出复古街机战役的氛围。

电源方面,需要通过VGA板上的直流 barrel 接口提供12V输入;显示器方面,我们使用的是标准的27英寸LED显示器。

在住房方面,我甚至设计了一个定制的外壳,然后用3D打印零件并组装了整个结构。本文将介绍该项目的完整建造过程,让我们开始动手吧。

所需材料

本项目所使用的组件如下

•VGA PICO 板PCB(由NEXTPCB提供)

•按钮板(由NEXTPCB提供)

•12x12 触摸式按钮

•WS2812B LED灯

•100nF 电容

•3D打印零件

•12V适配器

•D-SUB 15 VGA 接口

•直流桶式插头

•330欧姆电阻 1206封装

•10k 电阻 0805 封装

•1K电阻 1206封装

•LED 绿色 0603

•Female header Pins CON20 x 2

•PICO 1 或 PICO W(任一型号,带 RP2040)

PICO VGA 板 1.0

我们项目的核心是之前开发的PICO VGA板1.0,我将D-SUB15接口与树莓派Pico连接,用于驱动VGA显示器,其使用方式与普通OLED或LCD屏幕完全相同。通过该板,我们可以将全尺寸VGA显示器集成到我们的项目中。

PCB设计 - PICO VGA板 1.0

让我们来看看PICO VGA板1.0的PCB设计。我将一个D-Sub 15针VGA连接器直接连接到树莓派Pico,以生成VGA视频输出。

VGA通过三个模拟信号工作:红、绿和蓝。每条信号线的电压范围为0V到0.7V,其中0V表示无亮度,0.7V表示最大亮度。通过组合这三种信号,显示器可以为每个像素重现不同的颜色。例如,仅将红色信号线设置为0.7V可得到纯红色,而将三条信号线全部设置为0.7V则可产生白色。

除了RGB信号外,VGA还需要两个数字同步信号:HSYNC(水平同步)和VSYNC(垂直同步)。HSYNC告诉显示器何时开始新的一行,而VSYNC则表示新一帧的开始。显示器会持续逐行绘制像素,每秒刷新整个屏幕约60次。

我将Pico的GPIO18、GPIO19和GPIO20连接到VGA接口的第1、第2和第3引脚,分别对应红、绿、蓝信号。在这些连接之间,我添加了电阻网络以实现合适的电压控制。每条RGB线路使用三个并联的330Ω电阻,通过增加或减少电阻即可轻松调节阻值,同时保持所有RGB通道的平衡。

为了实现同步,VGA接口的引脚13(即HSYNC)连接到Pico的GPIO16,而引脚14(即VSYNC)连接到GPIO17。引脚5、6、7、8和10均连接至地。

我还添加了一个CON15分线连接器,连接到所有15个VGA引脚,便于测试或未来扩展时单独访问各个VGA信号。此外,我还增加了额外的接头,连接到Pico板上未使用的GPIO引脚,以便日后可用于其他外设或未来项目。

为了实现电源调节,我在电路板上添加了一个LM317可调电压稳压器。该稳压器能够提供超过1.5A的电流,并支持从1.25V到37V的可调输出电压范围。

我们设置LM317的方式是,当输入12V时,可输出稳定的5V,用于为Pico供电。

PCB设计 - 按钮板

本项目中我使用的第二块PCB是按钮板,该板是我从摩托罗拉DynaTAC项目中重新利用的。我在一块定制PCB上增加了六个按钮。所有按钮均连接至GND,其余引脚则连接到CON7接口,用于将按钮与微控制器(即PICO VGA板)进行通信。

我们还添加了六个WS2812B RGB LED灯,以实现额外的照明效果和视觉反馈。

NextPCB PCB 服务

两块PCB的Gerber数据已发送至NextPCB总部,已下单订购红色焊锡掩膜和一块绿色焊锡掩膜的电路板。

下单后,PCB在一周内就收到了,质量相当不错。

此外,我还必须向您介绍HQDFM,它在许多项目中为我提供了很大帮助。华秋的内部工程师开发了免费的“面向制造的设计”软件HQDFM,彻底改变了PCB设计人员可视化和验证设计的方式。

抓住NextPCB的加速活动机会,为您的创新项目免费获得2块组装好的RP2040电路板。

本服务涵盖所有费用,包括物流成本,让您更轻松、更经济地将创意变为现实。SMT服务可能价格较高,但NextPCB将助您顺利克服这一难题。只需分享您的相关项目,他们便会为您处理其余一切。不要错过这个绝佳机会,让您的科技创意更上一层楼!

PCB组装工艺 - VGA驱动

我们首先使用焊膏涂覆针将焊膏逐个添加到每个元件的焊盘上,以开始PCB组装过程。此处使用的焊膏为63/37 SnPb焊膏。

然后我们将每个SMD元件挑选并放置到正确的位置。

随后,PCB被放置在回流焊加热板上,从底部开始加热至焊膏熔化温度。一旦PCB达到该温度,焊膏便会融化,所有元件便能牢固地固定在各自位置上。

对于通孔组装工艺,我们先将D-Sub 15连接器安装到位,然后接上枪形直流插孔,并用两个CON20母头引脚取代Pico。接着翻转电路板,使用焊锡笔对所有通孔元件的引线进行焊接,确保所有部件固定到位。

最后,我们将Pico W放置在母头针上方的位置。至此,驱动板的组装过程完成。

VGA 驱动程序演示

要运行我们VGA板上的DEMO CODE,需将显示器的VGA线插入电路的VGA接口,然后通过直流圆柱形插头连接电源适配器。

这是我们用于演示的代码,很简单。

代码首先定义了屏幕分辨率,如下所示。

接下来我们定义每个单元格的网格尺寸。每个单元格为8x8像素,因此网格共有640/8=80列和480/8=60行。

以下是模拟的缓冲区或核心部分,可防止在计算过程中覆盖数据。

接下来是绘制单元格逻辑。这一步首先将网格位置转换为屏幕像素。

用这个画出一个正方形。

这是一个随机函数,当代码开始时会随机填充网格。

这是生命游戏的核心逻辑,即计算邻居。它会检查周围的所有8个细胞。

游戏规则如下设定。

如果周围有2个或3个邻居,活细胞会存活;如果周围恰好有3个邻居,死细胞会复活。

使用下方的区域,我们仅重新绘制已更改的单元格,而无需进行全屏重绘。

这是从当前帧中下一个要移动的复制状态。

在设置中,VGA 被初始化,添加了随机性,模拟开始。

在循环中,模拟会持续更新,并且其速度受到控制。延迟越低,进化越快;延迟越高,则进化越慢,更易于观察。

PCB组装工艺-按钮板

按钮板组装首先在SMD LED和电容焊盘上涂覆焊锡膏。

然后使用防静电镊子将所有SMD元件放置到正确位置,包括六个100 nF的去耦电容和六个WS2812B RGB LED。

整个电路板随后被放置在回流焊加热板上,从底部开始加热至焊膏熔化温度。当PCB达到该温度时,焊膏开始熔化,所有SMD元件均被牢固地焊接到位。

我们在指定位置放置了12×12毫米的按钮。

安装好通孔开关后,我们翻转电路板,并用焊锡枪对每个引脚进行焊接。

这完成了按钮板的组装过程。

主电子设备设置

对于我们的电路主线路,我们首先将VGA板的GND与按钮板的GND连接起来,使两个PCB板共享一个公共地线。

按钮连接方式如下:

•火按钮为GPIO0

•UP 按钮连接到 GPIO1

•导弹按钮连接至GPIO2

•左键转为GPIO3

•DOWN 按钮连接至 GPIO4

•RIGHT 按钮连接至 GPIO5

对于RGB灯光设置,WS2812B LED的DIN引脚连接到GPIO6,而其VCC引脚则连接到树莓派Pico的5V输出。

所有线路连接均使用单芯银铜线,并配合焊锡枪将每个接头牢固焊接固定。

游戏代码

这是我们项目的主代码,包含游戏逻辑和功能。

代码很长,但核心功能非常简单。让我来解释一下。

我们在代码中使用了上述库。VGA图形库用于生成VGA视频输出,而硬件库则用于PWM音频、GPIO按钮输入、时钟处理和同步。

此处我们定义了VGA屏幕分辨率。我们的设置运行在640×480的分辨率下。

四个按钮用于方向控制,其余两个则用于发射子弹和导弹。

我们定义了在游戏过程中用于照明效果的RGB LED灯带。当敌人被消灭或发生特殊事件时,LED灯会亮起。

游戏分为多个状态,包括开场画面、剧情介绍、游戏玩法和游戏结束画面。

我还添加了一个带有完整游戏剧情序列的启动画面。在开始游戏前,游戏会以动画打字机风格的文字展示一段电影般的开场故事。

此功能将显示游戏的主启动画面,包含“PICO VGA BLASTER”标题和动态背景星星。

此功能为 lore lore 屏幕创建打字机动画效果,文字会逐个出现并伴有音效。

此函数将初始化所有按钮的GPIO引脚,并启用内部上拉电阻,以便Pico能够正确检测按钮按下事件。

这是主玩家控制功能,用于读取方向键输入,并更新飞船的移动和攻击行为。

这部分负责飞船的水平移动。

按下火键时,会发射一枚子弹。

这将显示游戏的HUD,包括得分、生命值、导弹弹药和Boss血量条。

此功能会显示最终的游戏结束画面,包含玩家的得分以及重新开始动画。

3D设计

在本项目的设计中,我的目标是设计一个能够同时容纳PICO VGA板和按钮板的外壳。VGA接口和电源DC插孔需要从一端保持可见,以便方便地接入VGA线缆和电源输入。此外,我还希望设备配备大尺寸按钮,以确保使用舒适且操作简便。

外壳设计本身保持了极简风格,但为了提升美观性,方向按钮被设计成根据D-pad方向旋转的三角形。火控和导弹按钮则分别采用圆形和方形造型。

为了进一步提升外观,我添加了四个格里布元素:O形、加号和X形部件,以及一个独立的部件,上面印有传奇的科乐美代码:“Up Up Down Down Left Right Left Right B A Start”。

我的想法是将主体外壳印成橙色,其余部分使用黑色PLA材料,从而在最终设计中呈现出双色调的视觉效果。

围栏设计

对于外壳,我们设计了两个部分:主体和盖板。所有组件,包括PICO VGA板、按钮板、开关以及格里布部件,均安装在主壳体内。

开关三角形位于外壳内部,当按钮PCB安装在它们上方后会固定到位,使所有部件保持牢固的定位。当按下这些开关三角形时,它们会激活按钮板上的开关,Pico便能检测到按键操作并执行相应的功能。

VGA板也安装在机壳内部的专用螺柱上,可通过M2螺丝固定。同样,按钮板也通过M2螺丝安装在螺柱上以进行固定。

从背面设计了一个独立的盖板部件,用于封闭外壳。我们在两侧各添加了四个安装孔,使用四颗M2螺钉将外壳与盖板牢固连接。

GREEBLES

部分细节部件也经过了设计优化,以提升整体外观的美感。我设计了规则形状的O型、加号和X型符号,并将其添加到外壳的正面。甚至专门制作了凹槽,使这三个部件能够精准地嵌入到位。

接下来,为了给玩家一个彩蛋,我加入了传奇的科乐美代码。我设计了一个独立部件,呈现了“上”、“下”、“左”、“右”、“A”、“B”和“开始”键的实体形状,并将其略微放置在方块按钮的上方。

3D打印零件

对于3D打印部分,外壳是唯一使用橙色Hyper PLA材料打印的部件,采用0.4mm喷嘴、0.16mm层高和25%填充率。我将零件倒置打印,从而避免了使用任何支撑材料。

使用相同的打印设置,但采用黑色Hyper PLA材料,我先单独打印了盖子部分,然后将所有小图案部件一起打印。

开关部件是单独打印的,因为它们需要支撑材料,我使用了木制支撑。

围栏组件

从外壳内部开始,将所有开关安装到位。

在开关上方,我们将按钮板对准其安装孔与外壳螺钉凸起部分进行定位。

同样,我们也将VGA板安装到其专用的螺丝座上。

整个装配过程中使用了M2螺丝,其中两个用于固定按钮板,三个用于固定VGA板。

最后,我们将盖子从底部安装,并用四颗M2螺丝将盖子永久固定在壳体上。

GREEBLES装配

我们先在安装位置上涂上强力胶,然后将O形部件放置到位。

同样地,我们对Plus和X的锯齿部分也采用了相同的方法:先在安装点上涂上强力胶,然后再将每个部件定位。

最后,我们通过在部件背面涂抹强力胶,并将其略微置于方形开关上方,完成了科乐美代码部分的安装。

结果

这是本次制作的最终成果:PICO VGA BLASTER,一款复古风格的游戏主机,运行着我定制开发的游戏。

要使用此控制台,我们需要将其连接到VGA显示器。在此情况下,我们使用的是支持VGA接口的普通LED显示器,并通过DC插孔连接12V电源适配器为设备供电。

游戏机运行着我自创的《太空侵略者》版本,敌人被设计成类似VGA端口的外观。通过方向键,我们可以操控飞船,攻击方式有两种:普通射击模式和导弹发射器。击败一支敌群后,将进入Boss战斗,接着是另一支敌群,此时VGA敌人可以对玩家进行反击。之后是第二波Boss战斗,难度是前者的两倍。如果三名玩家的生命值全部耗尽,游戏将触发结束画面。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

家里安装了Home Assistant,我用它来监控多个传感器,例如门开、运动、温度和湿度传感器,同时控制家中的许多灯光。在其中一个房间,我将其用作工作间,并存放油漆和溶剂等物品,这里还配备了一个空气质量传感器,用于测量...

关键字: 传感器 显示屏 EE05

Now Playing Display 是一款小巧的 USB 供电桌面设备,可将 Mac 上播放的音乐内容(包括专辑封面、曲目名称、艺术家以及进度条)镜像显示在 240×240 的圆形触摸屏上。通过点击按钮即可实现播放/...

关键字: ESP32 显示屏 USB-C

该项目展示了一套端到端的实时边缘视觉处理流程,结合了目标检测、多目标跟踪和基于像素的运动估计技术,仅在物体实际移动时可靠地捕捉图像(或录制视频),且可选择性地仅记录用户自定义区域内的动态内容。

关键字: 运动传感器 树莓派 AI摄像

以下项目与智能储物柜系统相关,我与团队使用树莓派、Pi摄像头以及基于OpenCV等机器学习模型的实时人脸识别技术构建了该系统。此外,还包括设置电磁阀和继电器等硬件设备以控制锁具。我还使用了Pi继电器HAT,能够通过单个树...

关键字: 树莓派 人脸识别 继电器

这是一个轻量级且功能完备的 TFT 显示库,专为与 ESP32-C3 配合使用 1.69 英寸的 ST7789 显示屏而设计。该项目消除了 Arduino IDE、ESP32 核心更新以及现有显示库之间持续存在的不兼容问...

关键字: 显示屏 ESP32-C3 ST7789

尽管我一生都在芝加哥生活,但在成长过程中我对这座城市的实际模样却有着有限的认识。然而,当我进入高中后,我开始了解到芝加哥的全貌。在城市里乘坐公交车和火车成了我日常生活的一部分,虽然这让我能够探索一些我从未去过的地方,但它...

关键字: LED 显示屏 步进电机

在一个一切都为了追求速度的世界里,就连时间也成了我们无需思考就能理解的概念。匆匆一瞥,然后继续前行。但倘若有一个时钟能够让你放慢脚步——慢到足以让你停下来思考呢?

关键字: LED 时钟 树莓派

该项目使用了一款定制训练的 DeepLabv3+ 语义分割模型来检测摄像头画面中的路面坑洼。该模型会生成一个像素级别的掩码:一类用于背景,一类用于坑洼。您可以在 Jupyter 笔记本中对图像进行推理操作,或者在配备 A...

关键字: 树莓派 人工智能 摄像头

摩托罗拉公司在 20 世纪 80 年代开发了 测试器 芯片。它是 8 位微处理器的外围设备。它负责数据格式化和控制,用于将串行异步数据通信与微处理器数据总线进行接口连接。

关键字: 树莓派 测试器 微处理器

激光枪单元 — 一款手持式控制器,配备有激光二极管、发射按钮、复位按钮以及一个 4 位的 TM1637 显示屏。每次按下扳机键,激光就会发射 80 毫秒,并且会增加射击次数计数器。前面板上的一个红色 LED 会确认无线连...

关键字: Arduino Nano NRF24L01 TM1637 显示屏
关闭