基于树莓派DIY复古游戏机:从硬件选型到RetroPie系统配置全攻略

发布时间:2026/8/1 15:19:28

基于树莓派DIY复古游戏机:从硬件选型到RetroPie系统配置全攻略 1. 项目缘起为什么是GamePi13最近在折腾一个老项目翻出来一块闲置的树莓派3B琢磨着给它找个新归宿。刷机、做NAS、当下载机这些常规操作都玩腻了总想整点更有趣的。正好手头还有几个旧手柄一个便携屏幕一个念头就冒出来了能不能把这些零散部件攒起来做成一个能揣兜里带走的复古游戏机不是那种简单的模拟器前端而是从外壳、按键、供电到系统都自己动手真正“攒”出来的那种。这个想法就是“GamePi13”的起点。名字里的“GamePi”很好理解基于树莓派的游戏机“13”则是我个人偏好的一个数字也代表了这个项目在我折腾清单上的序号。它本质上是一个高度定制化的便携式复古游戏机解决方案核心是利用树莓派强大的社区生态和开源模拟器将童年记忆里的红白机、GBA、PS1甚至部分PSP游戏浓缩进一个巴掌大小的设备里。整个过程从硬件选型、外壳设计或改造、系统配置到按键映射每一步都充满了DIY的乐趣和挑战。适合谁来玩这个项目呢首先你得对复古游戏有情怀其次得有点动手能力和折腾精神不畏惧命令行和配置文件。它不像买一个成品开源掌机那样即插即用但完成后的成就感和可玩性是成品无法比拟的。你可以完全按照自己的喜好定制外观、游戏库甚至后期自己写脚本优化体验。下面我就把自己从零搭建GamePi13的全过程包括踩过的坑、总结的技巧毫无保留地分享出来。2. 核心硬件选型与“攒机”哲学做这种便携设备硬件是地基。选型的原则就八个字够用、兼容、易得、散热。盲目堆高配没必要我们的目标是流畅运行到PS1这一代的游戏。2.1 计算核心树莓派3B的再思考我选择树莓派3B而不是更新的4B或Zero 2 W是基于多方面权衡性能足够对于PS1及以下平台的游戏3B的Cortex-A53四核处理器和1GB内存完全够用甚至运行部分优化好的PSP游戏如《怪物猎人P3》也能达到可玩帧率。功耗与发热平衡3B的功耗和发热控制比4B好很多。在便携设备狭小的空间里散热是头等大事。4B性能虽强但被动散热下满载温度轻松突破80℃需要额外考虑风扇和风道增加设计复杂度和噪音。接口与尺寸3B拥有标准的40针GPIO、4个USB 2.0、一个全尺寸HDMI扩展性很好。其尺寸85x56mm也比4B略小在规划内部空间时更灵活。成本与库存作为上一代主力型号3B在二手市场或库存中更容易以实惠的价格买到降低了项目启动成本。注意如果你手头是树莓派4B当然也可以用但务必准备好优质的散热片和一个小型静音风扇并确保外壳有良好的进排气风道。2.2 屏幕与驱动板点亮掌机的灵魂屏幕是交互的核心选错了体验直接打折。屏幕类型我选择了一块5英寸IPS液晶屏分辨率800480。IPS视角广色彩好800480对于复古游戏来说点对点显示效果非常棒且对树莓派3B的GPU压力小。尺寸上5寸是便携性和可视面积的黄金平衡点。驱动板屏幕需要一块驱动板通常卖家会配套提供来连接树莓派。这里有个关键点务必选择支持“直接驱动”且供电与树莓派兼容的驱动板。好的驱动板通过排线连接到树莓派的DSI或GPIO口能从树莓派取电无需单独供电极大简化布线。我踩过的坑是买了一块需要单独接5V电源的驱动板结果导致设备内部多了一根飞线非常混乱。后来换成了通过GPIO取电的型号整洁多了。触摸功能我没有选择带触摸功能的屏幕。一是复古游戏前端如EmulationStation对手柄的支持已经极好触摸并非必需二是触摸屏会增加耗电和驱动复杂度三是成本更高。纯粹的游戏场景下物理按键的反馈感更佳。2.3 输入设备手柄与按键的抉择输入方案有两种主流选择使用现成的USB手柄拆解或使用定制的GPIO按键板。方案一USB手柄拆解我采用的方案。我拆了一个闲置的USB有线手柄将其主板、按键导电胶和十字键/摇杆模块取出。优点是成本极低利用废旧物资。手感有保障原装手柄的按键手感和布局是经过验证的。驱动简单系统识别为标准USB游戏手柄无需额外配置驱动。缺点是布线需要自己焊接并且手柄主板可能比专门的GPIO按键板大需要规划空间。方案二GPIO按键板。市面上有专为树莓派设计的游戏机按键扩展板直接插在GPIO上提供标准的街机按键和方向键焊点。优点是集成度高布线整洁。缺点是额外成本且按键手感取决于你选用的微动开关或导电胶需要自己调校。我选择了方案一。将手柄主板的USB线剪断直接焊接到树莓派USB口的对应引脚上5V, D, D-, GND省去了一个USB接口的空间。按键和方向键则通过排线连接到主板。2.4 供电与电池管理稳定的能量核心便携设备电力是命脉。我强烈建议使用集成充放电管理功能的锂电池升压板。电池选用一块常见的3.7V、3000mAh左右的手机聚合物锂电池。尺寸需要根据你的外壳空间选择。充放电管理板这是关键部件。它负责通过Micro USB或Type-C口为电池充电。将电池的3.7V升压到树莓派和屏幕所需的5V。提供充放电保护过充、过放、短路。最好带电量指示灯。连接将升压板的输出端5V OUT连接到树莓派的5V和GND引脚注意避开数据引脚。屏幕如果也从树莓派取电则无需单独连接。这样整个系统只需一根USB线充电开机则由一个独立的物理开关控制总电路。2.5 外壳从零创造或改造外壳是让项目从“开发板堆”变成“设备”的关键。你有三个选择3D打印如果你有3D打印机或能找到打印服务这是最自由的方式。可以在Thingiverse等网站搜索“Raspberry Pi Handheld Case”找到大量开源设计根据你的屏幕和主板尺寸进行修改。我用Fusion 360自己画了一个考虑了所有部件的固定柱、散热孔、按键孔位和螺丝柱。利用现成盒子改造比如防水盒、塑料工具箱。需要较强的动手能力进行开孔和内部固定。优点是成本低速度快。购买商业外壳套件有些开源掌机项目会出售配套的CNC雕刻外壳精度高颜值好但成本也最高。我选择了3D打印。设计时特别注意了以下几点散热在树莓派SoC和内存芯片对应的外壳位置设计了密集的栅格孔。按键布局参考了经典掌机的布局确保握持时拇指自然落在方向键和功能键上。内部固定设计了多个螺丝柱和卡槽用于固定树莓派、屏幕驱动板、电池和升压板避免内部部件晃动。屏幕固定在屏幕四周设计了遮光墙和卡扣防止漏光并确保屏幕紧贴前面板。3. 软件系统搭建从镜像到前端硬件组装好比造好了身体软件系统则是注入灵魂。我们的目标是打造一个开机即玩、无需键盘鼠标的专属游戏系统。3.1 系统镜像选择与烧录不推荐使用官方的Raspberry Pi OS原Raspbian因为它是一个通用桌面系统需要大量手动配置才能变成游戏机。我们应该使用专为复古游戏优化的发行版。首选RetroPie。这是最流行、社区支持最完善的选择。它本质上是一个基于Raspberry Pi OS Lite的软件包集合集成了EmulationStation前端、RetroArch模拟器核心和各种工具。下载从RetroPie官网下载对应树莓派3B的镜像文件.img.gz。烧录使用BalenaEtcher或Raspberry Pi Imager将镜像写入TF卡建议至少32GBClass 10以上速度。备选Batocera或Lakka。Batocera界面更炫酷跨平台支持好Lakka更轻量界面类似游戏主机系统。但RetroPie的文档和社区问答是最丰富的对于新手更友好。我选择了RetroPie。烧录完成后先不要急着把卡插入树莓派。在电脑上打开TF卡的boot分区做一件很重要的事预先配置Wi-Fi和SSH。新建一个名为ssh的空文件无后缀用于开启SSH服务。新建一个名为wpa_supplicant.conf的文件内容如下ctrl_interfaceDIR/var/run/wpa_supplicant GROUPnetdev update_config1 countryCN network{ ssid你的Wi-Fi名称 psk你的Wi-Fi密码 key_mgmtWPA-PSK }这样首次启动后树莓派就能自动连接Wi-Fi我们可以通过同一局域网下的电脑用SSH连接进行后续配置无需接键盘和屏幕。3.2 首次启动与基础配置将TF卡插入树莓派连接电源和屏幕通过驱动板开机。首次启动会进行文件系统扩展和初始化时间稍长。手柄配置启动后会自动进入EmulationStation的前端界面并提示你配置手柄。按照屏幕提示依次按下你手柄上的各个按键包括方向、ABXY、选择、开始、肩键等。这一步至关重要务必准确。连接网络如果之前的wpa_supplicant.conf配置正确此时应该已经联网。可以在EmulationStation主界面按“开始键”进入主菜单选择“Wi-Fi”查看状态。通过SSH深入配置在电脑上使用SSH客户端如PuTTY或终端命令ssh piretropie默认密码raspberry连接树莓派。命令行提供了最大的控制权。3.3 核心环节模拟器配置与游戏导入RetroPie的强大在于其模块化。每个游戏平台称为“system”都需要对应的模拟器“emulator”和“核心”“core”。更新与安装模拟器核心在SSH中首先更新软件源并安装可能缺失的核心。sudo apt update sudo apt install lr-pcsx-rearmed lr-mgba lr-snes9x -ylr-开头的包是Libretro核心被RetroArch调用。例如lr-pcsx-rearmed是PS1模拟器核心lr-mgba是GBA模拟器核心。游戏文件放置这是最容易出错的地方。RetroPie有严格的文件目录结构。游戏ROM需要放在/home/pi/RetroPie/roms/目录下对应的平台文件夹内。例如PS1游戏.bin/.cue 或 .pbp 格式放在/home/pi/RetroPie/roms/psx/GBA游戏.gba放在/home/pi/RetroPie/roms/gba/SNES游戏.smc放在/home/pi/RetroPie/roms/snes/你可以通过SSH使用scp命令从电脑上传或者在Windows下通过\\RETROPIE网络共享访问roms文件夹直接拷贝。刷新游戏列表放入ROM后在EmulationStation主界面按“开始键” - “游戏列表设置” - “刷新所有游戏列表”新游戏就会出现。3.4 性能调优与美化默认设置可能不是最优的我们需要微调。超频谨慎操作在SSH中编辑/boot/config.txt文件可以小幅提升CPU/GPU性能。# 树莓派3B 相对安全的超频设置 over_voltage4 arm_freq1350 gpu_freq500保存重启。注意超频可能增加发热和不稳定性建议逐步测试。如果出现死机移除这些设置即可。扫描线着色器为了在液晶屏上还原CRT显示器的质感可以启用扫描线着色器。在游戏中按“热键通常为选择键 X”呼出RetroArch快捷菜单选择“着色器” - “加载” - “crt” 目录下的某个扫描线着色器如crt-pi.glslp应用后立即生效。这能极大提升复古游戏的画面韵味。主题更换EmulationStation默认主题较朴素。可以通过RetroPie-Setup脚本安装更多主题让界面更炫酷。sudo ~/RetroPie-Setup/retropie_setup.sh在图形化界面中选择“Configuration / tools” - “esthemes” 来安装和管理主题。4. 深度定制与问题排查实录系统跑起来只是第一步要让它好用、稳定还需要一系列深度定制这也是最容易踩坑的地方。4.1 按键映射的“玄学”问题我使用拆解手柄的方案虽然系统识别为通用手柄但在某些特定模拟器核心尤其是非Libretro的独立模拟器下可能会出现按键错乱。问题现象在某一平台游戏里A键没反应B键成了A键。排查过程全局测试先在EmulationStation的输入配置里确认全局映射是正确的。核心测试进入RetroArch的输入设置在游戏中按热键X进入快捷菜单 - “设置” - “输入”查看“端口1控制”的映射发现这里也是正确的。定位元凶问题出在独立模拟器。RetroPie对于某些平台如N64、PSP可能会默认使用独立模拟器如mupen64plus、ppsspp它们有自己的配置文件不继承全局或RetroArch的设置。解决方案以PSPppsspp为例需要单独配置其按键。通过SSH或网络共享找到/opt/retropie/configs/psp/目录。编辑ppsspp.ini或运行模拟器后在模拟器自身的设置菜单里重新映射按键并保存。这个配置文件是独立于系统其他部分的。经验心得在RetroPie中输入配置是分层的EmulationStation全局层 - RetroArch核心层 - 独立模拟器层。遇到按键问题要逐层排查。一个一劳永逸的技巧是尽量在RetroArch的“快捷菜单” - “控制”里配置并保存为“游戏覆写”或“核心覆写”这样配置会绑定到该游戏或该核心。4.2 电源管理与安全关机便携设备不能直接拔电源否则可能损坏TF卡上的文件系统。硬件开关我在总供电线上串联了一个自锁开关。但开关只能物理断电无法执行软件关机。软件关机脚本目标是按下某个组合键如“选择开始”后系统安全关机然后通过指示灯或屏幕提示告知用户可以关闭物理开关。编写脚本。创建文件/home/pi/shutdown.py#!/usr/bin/env python3 import os, time # 执行关机命令 os.system(sudo shutdown -h now) # 这里可以添加控制GPIO灯闪烁的代码如果需要并赋予执行权限chmod x /home/pi/shutdown.py映射到按键这需要利用RetroArch的“热键”功能。编辑/opt/retropie/configs/all/retroarch.cfg找到并修改input_enable_hotkey_btn 0 # 将“选择键”设为热键这里的“0”需要根据你的手柄实际键值修改可能是其他数字 input_exit_emulator_btn 7 # 将“开始键”设为退出模拟器键 # 添加自定义命令将热键开始映射到运行我们的脚本 input_menu_toggle_btn nul input_reset_btn nul # 更优雅的方式使用systemd或autostart脚本监听GPIO按键但更复杂。更可靠的方案实际上更常见的做法是利用GPIO引脚连接一个轻触开关并编写Python脚本监听该引脚。当检测到按键被长按时触发关机命令。这需要一些简单的电路和编程但比在模拟器内映射更稳定、独立。4.3 游戏列表与元数据美化默认的游戏列表只是一堆文件名体验不好。我们可以为其添加封面、描述等元数据。手动刮削在EmulationStation主界面选中一个游戏平台按“开始键” - “刮削器”可以选择从ScreenScraper或TheGamesDB等网站自动下载游戏封面、截图、描述和评级。这个过程需要网络且对中文ROM名支持有时不佳。技巧自动刮削失败时可以手动操作。将下载好的封面图片建议命名为游戏名.png尺寸最好为640x480放入/home/pi/RetroPie/roms/平台名/images/目录下。然后编辑该平台对应的gamelist.xml文件在/home/pi/.emulationstation/gamelists/平台名/下手动添加image标签指向图片路径。虽然繁琐但对于少量经典游戏是值得的。4.4 散热与稳定性实战在封闭外壳内连续运行游戏一小时以上散热是必须面对的挑战。问题运行PS1游戏《最终幻想9》半小时后画面开始卡顿随后系统重启。排查通过SSH在运行时监控温度vcgencmd measure_temp。发现卡顿时温度已达到82°C。树莓派3B的CPU在80°C以上会开始自动降频throttling导致性能下降温度过高则直接重启。解决方案增强被动散热我最初只贴了一个小型散热片。后来更换为带铜管的复合散热片增大与空气的接触面积。优化风道在外壳的CPU正上方和侧后方对应主板背面开了更多的蜂窝状通风孔形成空气对流。软件优化在/boot/config.txt中增加一行temp_soft_limit75这会在温度达到75°C时更积极地调节CPU频率避免触及硬降频点。同时确保超频设置如果有不过于激进。结果采取以上措施后长时间运行重载游戏温度稳定在70-75°C之间未再出现降频卡顿。5. 项目总结与进阶玩法经过几周的折腾这台GamePi13已经成为了我通勤路上的好伙伴。从一堆散件到一台功能完整的掌机整个过程充满了解决问题的乐趣。回顾下来有几个点特别值得分享首先规划比动手更重要。在开始焊接和打印外壳之前最好用纸板或3D建模软件做一个1:1的模型把所有部件放进去看看空间是否足够接口位置是否冲突。我就在第一版外壳上吃了亏屏幕驱动板的位置挡住了两个USB口导致无法使用。其次供电一定要留有余量。树莓派3B峰值电流可能达到1.5A以上屏幕驱动板也需要几百毫安。你的升压板持续输出能力最好在2.5A-3A之间。电池容量则决定了续航3000mAh电池在中等亮度下玩GBA游戏大约能撑4-5小时玩PS1游戏可能只有3小时左右。如果需要更长续航可以考虑并联电池但要注意充放电管理板的负载能力。关于软件的稳定性RetroPie系统本身非常稳定但不同模拟器核心的成熟度不一。对于PS1及以下的平台lr-pcsx-rearmed、lr-snes9x、lr-mgba这些核心几乎完美。但N64、PSP、Dreamcast等平台的模拟即使在高性能的树莓派4B上也可能存在兼容性和速度问题需要针对具体游戏调整模拟器设置比如切换图形插件、降低分辨率。在GamePi133B上我建议主要专注于PS1及以下的经典平台体验是最完美的。最后这个项目的扩展性很强。完成基础版后你还可以增加音频功放和喇叭使用一块PAM8403之类的小型数字功放板连接树莓派的音频输出GPIO或USB声卡让外放声音更洪亮。集成震动马达有些模拟器核心支持震动功能你可以将一个微型震动马达手机里那种连接到GPIO并通过Python脚本控制在特定游戏场景下提供力反馈。定制开机动画和音效替换/home/pi/RetroPie/splashscreens/目录下的视频或图片打造专属开机体验。网络对战部分模拟器核心如RetroArch的Netplay功能支持局域网甚至互联网联机可以和朋友一起怀旧。GamePi13不仅仅是一台游戏机它是一个载体承载着对旧时光的怀念也承载着动手创造的满足感。每当你按下电源键看到熟悉的游戏列表那种感觉和打开手机上的模拟器App是完全不同的。它不完美可能有这样那样的小毛病但正因为这些亲手调试、打磨的痕迹让它成为了独一无二的存在。如果你也有类似的零件和想法不妨动手试试从最简单的开始享受这个过程。

相关新闻