儿时的快乐!用树莓派从零打造一台街机
本帖最后由 RRoy 于 2020-9-9 11:56 编辑众所周知,我们蘑菇云创客空间有一台大名鼎鼎的“LV牌”街机。
之前好多小伙伴也想自己做一台,其实我们拍了视频的制作教程,不过粗略了一些,
https://www.bilibili.com/video/BV1cb41177QB/
前俩天,正好赶上有个瑞典斯德哥尔摩的数据科学家Max Fischer在Github上也放出来了做街机的教程。
那这周就带给大家看一看。
如何从头开始构建一台全尺寸1:1版本的街机!
文章篇幅较长,会详细介绍搭建全尺寸街机的所有步骤,包括预先设计好的 CAD 文件(可免费下载)、如何组装机身、运行街机程序的树莓派的设置方法等。
注:这还是项目作者第一次使用CAD...
## 构建机身
### 下载CAD文件
项目中所有的CAD设计都是用的 AutoCAD Fusion 360,由于这是作者第一次使用CAD,所以他也提到了自己的设计肯定不是最好的还有很大的改进空间,有能力的小伙伴们可以再优化。
CAD文件地址:见[参考链接](https://github.com/maxvfischer/DIY-arcade#download-the-cad-file "CAD文件地址")
当然大家也可以直接到**文末下载**打包好的。
![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/CAD_fly_around.gif)
### CNC切割部分
为了完美配合街机的按钮、操纵杆,屏幕、电源按钮和扬声器,按钮面板和屏幕面板都采用了CNC切割。
缺点是,这肯定会比手工制作更昂贵,但带来的好处是,整体效果更好了。
为了让机箱完美地结合在一起,两个侧板也采用了CNC切割。因为它们具有多个需要在两侧相同的圆形形状。
大家千万记住以1:1的尺寸利用CNC切割CAD文件,不要选择“利用完整的MDF板”。
### 手工切割部分
考虑到剩余的部分大多是大大小小的矩形,我们可以手工切割了。
这里,我们会用到两种不同的锯:
大概切割出来这么些形状的板子:
![背板](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599533960038-image.png)
<![底板](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599533970939-image.png),![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599534152603-image.png),![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599534161404-image.png),![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599534176673-image.png)>
在这过程中,唯一有一点困难的部分是舱盖板。
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599534431635-image.png)
首先我们要在板上绘制出舱口的轮廓,然后用圆锯切出实际的舱口,这里在四角的边缘处使用了手持的曲线锯,因为在切割时更容易掌控。
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599534418556-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599534452964-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599534491647-image.png)
现在我们已经把街机的主体部分拆分成了内外两部分,挡板用胶水粘到合适的位置。这里还用到了磁铁来固定位置。
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599535655337-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599535668229-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599535702456-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599535714361-image.png)
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599535719344-image.png)
<![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599535730135-image.png),![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599535736145-image.png),![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599535740806-image.png)>
后板的底部也打一个洞,用来穿电源板的线。
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599535763535-image.png)
### 绘制零件的轮廓
这一步重要的是将所有部件固定在两侧面板上的同一位置,好让机柜对称。
为了简化这一点,在每个面板应该连接到侧面板的地方绘制了轮廓。当按钮面板和屏幕面板以一定角度连接时,它们的轮廓首先被画在其中一块侧板上。
然后,通过使用一些参考点,将轮廓反射并转移到另一个侧面板。
这一步有点棘手,所以大家慢慢来。
![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599536065233-image.png)
<![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599536075732-image.png),![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599536082896-image.png),![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599536089916-image.png),![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599536098474-image.png),![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599536132231-image.png),![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599536156440-image.png),![](https://gitee.com/ralstonliu/mdnice/raw/master/2020-9-8/1599536160058-image.png)>
### 开始组装
接下来就是将所有的面板组装到一起了,这里使用了木工接合片来加强固定作用,屏幕面板是唯一不使用木工接合片固定的地方,因为以后还可能随时更换。
在粘合之前,我们可以先将各个面板装在一起试试,确保位置不偏不倚。
调节完毕后,上胶水,此时动作要快。粘合完成后,使用钉枪进行加固。
另外,别忘了清除从连接部件上滴下的多余胶水。
### 添加柜脚
为了均分来自支腿的向上力,将一小块木头胶合并钉在柜子的每个角上。
![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/legs_5.jpg)
我把木头切出四个正方形,用作柜子的支腿。
![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/legs_1.jpg)
用砂纸把边缘弄圆,
![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/legs_2.jpg)
然后从外部将腿粘上,从内部拧紧。
![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/legs_3.jpg)
![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/legs_4.jpg)
### 搞定屏幕面板
首先,使用两根细木条作为固定的支架:
为了获得平滑的外观,此处使用手持铣床打了一个凹槽出来。
我使用的屏幕的前面设有按钮,因此我们需要在屏幕面板上钻孔才能使它们可单击。
<![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/screen_panel_10.jpg)
![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/screen_panel_12.jpg)
最后,将固定屏幕面板的螺丝与扬声器对齐,以获得更好的外观。
![](https://cdn.jsdelivr.net/gh/RalstonLiu/VsImage/images/20200908141426.png)
### 准备灯箱
作为真正的复古街机柜,我们当然需要在柜顶部安装一个发光的灯箱。为了将有机玻璃固定在适当的位置,将四个小木块用胶粘并钉在每个角上,以使其固定在有机玻璃上。
![](https://cdn.jsdelivr.net/gh/RalstonLiu/VsImage/images/20200908141537.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/VsImage/images/20200908141557.png)
### 抹灰膏和砂纸
在机身被送去喷漆之前,我们还要做最后的润色,让它表面漂亮而又光滑。
抹灰膏被用来掩盖所有的指印,塑料衬垫被用来掩盖小的瑕疵。
等所有的东西都干了,使用电动砂光机去除多余的抹灰膏和塑料衬垫。所有的边缘都用手工打磨得很光滑。
![](https://cdn.jsdelivr.net/gh/RalstonLiu/VsImage/images/20200908141914.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/VsImage/images/20200908141933.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/VsImage/images/20200908141944.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/VsImage/images/20200908141953.png)
### 喷漆,完成
在喷漆之前,用电动砂光机对机身表面进行处理。喷漆的难度有些大,我请了一个比较专业的师傅来操作。
为了得到更好的反射效果,我选择
黑色作为机身颜色,白色作为灯箱内部颜色。
【图】
出于设计感考虑,我还打印了很多机身贴纸:
![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/art_work_1.gif)
当然这一步,大家也可以像蘑菇云的机器一样,贴满LV的贴纸。
贴贴纸的时候就要用到一些技巧了,通常是把一边固定,然后从上到下刮,防止产生气泡。
![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/art_work_5.jpg)
按钮说明:
![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/art_work_18.jpg)
至此,机身部分已经完成,接下来可以安装电子器件了。
## 安装电子器件
### 连接电源
将圆形的塑料电缆索环穿过背板底部的孔,从而连接电源。
### 安装屏幕
使用电镀打捆带固定屏幕:
【图3】
### 灯箱
为了与整体的设计感保持一致,我重用了侧板的一些图形组件:
打印一张大的贴纸,将贴纸上的「ARCADE MACHINE」镂空处理,以便光线通过。稍后贴纸会被粘在磨砂玻璃上。
光源使用的是 LED 灯管,灯管的线可以连接至机身底部的电源插排。使用双面胶将 LED 灯管粘在背板上。
为了防止光从玻璃处漏出,我剪下一些长泡沫条,并用双面胶粘在玻璃的边角背后。
使用双面胶固定玻璃的位置,并把贴纸贴在上面:
![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/light_box_16.jpg)
![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/light_box_17.jpg)
**安装街机按钮和摇杆**
我事先购买了两组街机按钮和摇杆,它们便于使用,没有电路板知识也不妨碍。因此,街机按钮的安装就很简单了。将每个按钮和摇杆安装到自带的电路板上,然后把 USB 线和电路板与计算机连接起来。
![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/arcade_buttons_1.jpg)
为了使摇杆位于孔的中心,我使用宽双面胶,将摇杆置入按钮面板。(这一步可以两个人合作完成)
![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/arcade_buttons_5.jpg)
![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/arcade_buttons_3.jpg)
![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/arcade_buttons_7.jpg)
### 在树莓派上配置 RetroPie
> Retropie可以将你的树莓派或者PC变成一台复古游戏机模拟器。 其基于完整的操作系统之上,你可以把它装在Raspbian系统上,或者直接刷入完整的镜像然后再添加更多的软件。Retropie预装了很多不同的模拟器,可以让你玩很多不同平台的游戏,比如FC,SFC,MD,CPS1,CPS2,NEOGEO,PS1等等。
>
> RetroPie 是免费的游戏机模拟器,通过它可以将你的树莓派、PC或者是Odroid 变为游戏机,RetroPie支持超过50+的主机系统,从1977的Atari 2600到PS2、Wii都可以支持,我们国内熟悉的儿时经典任天堂FC、GBA和PS都支持。RetroPie在树莓派上提供了SD卡的镜像文件,只需要刻录到SD卡后,就可以运行各种不同的模拟器,传输Roms到树莓派后就可以开始回味经典游戏了。
RetroPie 可以将树莓派改造成复古游戏机,它是一个持续更新的开源项目,你可以从官网获取安装指南:https://retropie.org.uk/docs/First-Installation/。
### 配置街机按钮和摇杆
街机按钮电路板的 USB 线与树莓派连接。开启树莓派和 RetroPie,出现欢迎界面,这时你可以配置控制器了。
### 电源键
为了方便开关街机,作者在屏幕面板上加了一个孔来安装电源键。
将两根线与电源键焊接在一起,这两根线分别连接树莓派的 GPIO pins 5 和 6。缩短 GPIO pins 5 和 6 时,树莓派将从暂停状态中被激活。
![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/power_button_3.jpg)
然后添加一小段脚本,在树莓派启动时执行。该脚本听从另一种 GPIO pins 5 和 6 的缩短情况,进而触发树莓派安全关闭。
关闭脚本的添加过程如下:
要添加关闭脚本,请执行以下操作:
1.启动Raspberry Pi;
2.当EmulationStation(RetroPie)启动后,在键盘上单击F4进入bash;
4.安装RPi.GPIO:(`pip install RPi.GPIO`请参阅https://pypi.org/project/RPi.GPIO/);
5.在/ home下创建一个utils文件夹: `mkdir /home/utils/`;
6.将此脚本(`shutdown_script.py`)添加到新创建的utils文件夹中;
```python
import RPi.GPIO as GPIO
import time
import subprocess
GPIO.setmode(GPIO.BOARD)
GPIO.setup(5, GPIO.IN, pull_up_down=GPIO.PUD_UP)
old_button_state = True
while True:
button_state = GPIO.input(5)
if button_state != old_button_state and button_state == False:
subprocess.call("shutdown -h now", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
old_state_button = button_state
time.sleep(1)
```
7.要使Raspberry在启动时运行此脚本,我们可以在文件`/etc/rc.local`的末尾的行添加`python3 /home/utils/shutdown_script.py &`,就在`exit 0`之前。
![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/power_button_6.gif)
目前,电源键只能关闭树莓派。我计划后续安装由树莓派控制的 relay,用于开关其他电子器件(如屏幕、灯箱等)。
### **扬声器**
每一个扬声器焊接了两根线。将扬声器置入 CNC 钻孔,与屏幕面板相连。所有线均连接至扩大器。然后用 3.5mm AUX 立体声音响线连接扩大器和树莓派。
![](https://cdn.jsdelivr.net/gh/RalstonLiu/VsImage/images/20200908140144.png)
### 完善线路结构
为了使机身内部的线路结构清晰,我用双面胶粘贴了理线器。
![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/structure_cables_2.jpg)
![](https://github.com/maxvfischer/DIY-arcade/raw/master/images/build/structure_cables_3.jpg)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/VsImage/images/20200908140312.png)
![](https://cdn.jsdelivr.net/gh/RalstonLiu/VsImage/images/20200908140322.png)
## 街机搭建完成
至此,利用树莓派搭建街机的过程就全部完成了。
目前,这台「自建」街机能够运行很多复古游戏。作者还打算将树莓派 3 升级到树莓派 4,这样就可以运行更多 Nintendo 64 和 PS1 的经典游戏了!
---
原项目链接:https://github.com/maxvfischer/DIY-arcade
项目作者:Max Fischer
部分翻译参考:机器之心
### 一点想法
个人感觉,还可以增加一个投币的模块,
毕竟,街机的灵魂就在于投币、赢币!
然后再考虑一下散热的问题就完美了。
有兴趣的同学可以到Github上给作者star,地址是 https://github.com/maxvfischer
#### Github资料打包:https://cloud.yirenliu.cn/#/s/Yghb
好强大的动手能力啊 DFBJFz5siXP 发表于 2020-9-13 10:01
好强大的动手能力啊
这居然还是作者第一次使用CAD{:5_119:} 厉害厉害 厉害厉害(。^▽^) 暴露年龄的童年杀
页:
[1]