RRoy 发表于 2020-9-9 10:22:12

儿时的快乐!用树莓派从零打造一台街机

本帖最后由 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:11

好强大的动手能力啊

RRoy 发表于 2020-9-14 11:42:14

DFBJFz5siXP 发表于 2020-9-13 10:01
好强大的动手能力啊

这居然还是作者第一次使用CAD{:5_119:}

DFS1w2cb8o8 发表于 2020-9-18 21:45:15

厉害厉害

发表于 2020-9-24 21:10:03

厉害厉害(。^▽^)

gray6666 发表于 2020-9-30 17:26:11

暴露年龄的童年杀
页: [1]
查看完整版本: 儿时的快乐!用树莓派从零打造一台街机