1. 项目概述:从“投币”到“积分”的硬件魔法
“Insert Coin”——对于任何一个经历过街机黄金年代的玩家来说,这三个字背后所承载的,远不止是启动游戏的指令,更是一种充满仪式感的期待。如今,我们大多通过模拟器上的一个按键来“投币”,虽然方便,但总感觉少了点什么。这个项目的核心,就是要把这种“投币”的物理触感和机械反馈找回来,通过一个真实的、会叮当作响的投币器,将一枚硬币的坠落,精准地转化为游戏世界里的一个“Credit”。
这不仅仅是一个简单的开关替代。我们使用的是一台可编程投币器,它本质上是一个集成了微型传感器和微控制器的智能识别模块。它能通过电磁感应、光学或重量检测等多种方式,区分出你投入的是25美分、50美分还是一美元硬币,然后根据预设的程序,输出不同数量的电脉冲信号。这些脉冲,就是驱动我们游戏系统(比如基于树莓派的Picade街机)增加积分的“数字货币”。
整个系统的设计思路非常清晰:物理投币 -> 传感器识别 -> 微控制器处理 -> 输出标准脉冲 -> 游戏控制器接收 -> 增加游戏积分。在这个过程中,我们需要解决几个关键工程问题:如何安全地将12V的投币器工作电压与3.3V的微控制器世界隔离开?如何设计一个既美观又实用的外壳来容纳整个投币系统?如何配置投币器,让它能聪明地识别不同硬币并输出正确的脉冲数?这篇文章,我将以一个资深硬件改造爱好者的视角,带你从头到尾走一遍这个充满乐趣的工程实践,分享那些在官方教程里不会写的接线技巧、配置心得和避坑指南。
2. 核心硬件选型与系统架构解析
2.1 为什么选择可编程投币器?
市面上有很多投币方案,从最简单的机械微动开关到复杂的多币种识别器。选择可编程多币种投币器(例如Adafruit的4币种型号)而非单币种或纯机械方案,主要基于以下几个维度的考量:
- 灵活性与扩展性:单币种识别器只能接受一种规格的硬币或代币。而可编程型号允许你“训练”它识别多达四种不同的硬币。这意味着你的街机可以同时接受25美分、50美分、1美元硬币甚至自定义的游戏代币,并为不同面值设置不同的积分倍数(例如,投50美分得2个币,投1美元得4个币)。这种灵活性对于家庭街机、主题酒吧或小型娱乐场所来说非常实用。
- 防伪与可靠性:高级的可编程投币器内部集成了微型线圈和传感器阵列,通过检测硬币的材质(电磁特性)、直径、厚度甚至图案来进行综合判断。它内置的微型电磁铁(螺线管)会在识别到真币时动作,让硬币落入收藏箱;如果识别为假币或异物,则会将其导向退币口。这种机制极大地减少了通过垫片、铁圈等简易手段作弊的可能性。
- 标准化接口:这类投币器通常提供标准的接线端子排,输出的是干净的TTL电平脉冲信号,极易与Picade、Arduino、树莓派GPIO等主流控制器对接。省去了自己从零开始设计硬币检测和信号去抖电路的麻烦。
注意:在开始任何涉及真实货币的投币系统项目前,务必查阅并遵守你所在地关于娱乐设备、小额支付以及货币处理的相关法律法规。本项目仅作为技术学习和个人兴趣用途探讨。
2.2 系统核心组件清单与作用
一个完整的可编程投币系统,远不止一个投币器本身。以下是构建该系统所需的核心组件及其功能解析:
| 组件 | 型号/规格示例 | 核心作用 | 选型要点与避坑指南 |
|---|---|---|---|
| 可编程投币器 | Adafruit “Programmable 4 Coin Type” 或类似 | 系统核心,负责硬币识别、真伪判断、脉冲信号生成。 | 确认工作电压(常见为12V DC)、输出信号类型(脉冲/电平)、支持的硬币尺寸范围。购买时注意是否包含完整的线束。 |
| 直流电源适配器 | 12V DC, 1A 或以上,稳压型 | 为投币器提供稳定、干净的12V直流电源。 | 必须选用稳压电源。非稳压电源的电压波动可能导致投币器误动作或损坏。1A电流足够驱动投币器及其内部螺线管。 |
| DC电源插孔母座 | 2.1mm中心孔,带接线端子 | 提供安全的电源接入点,方便连接和断开12V电源。 | 选择带螺丝端子的型号,便于可靠连接电源线。确认内正外负的极性是否与你的电源适配器匹配。 |
| 主控制器 (如 Picade) | Picade HAT for Raspberry Pi | 接收投币器发出的脉冲信号,并将其映射为键盘或手柄的“投币键”按下事件。 | Picade板载了电平转换电路,能安全地将外部信号接入树莓派。如果使用其他控制器,必须确保有电压隔离或分压电路。 |
| 连接线材 | 22-24 AWG多股导线 | 连接投币器、电源、控制器。 | 投币器脉冲线(如白线)和地线(黑线)可使用细线;电源正负极(红、黑)建议使用稍粗的线以降低压降。 |
| 机箱/外壳 | 亚克力、木板或现成防水盒 | 容纳投币器、整理线束、提供投币口和安装面。 | 结构强度需能承受投币时的轻微冲击。内部空间要预留足够,便于接线和维护。投币口尺寸需精确匹配投币器。 |
关键点:电压隔离是生命线投币器的工作电压是12V,而树莓派GPIO或大多数微控制器的逻辑电平是3.3V或5V。将12V直接接到GPIO引脚上会瞬间烧毁芯片。Picade控制器的设计精妙之处在于,其输入引脚内部已经集成了合适的分压电阻或光耦隔离电路,因此我们可以安全地将投币器的信号线直接接到Picade指定的引脚上。如果你是在其他自制系统上集成,必须在信号线上串联分压电阻(例如,用1kΩ和2kΩ电阻组成分压器,将12V降至约4V),或者使用光耦进行完全电气隔离。这是项目成功与否的第一道安全红线。
3. 投币器的“训练”与脉冲配置实战
拿到投币器后,第一步不是急着接线,而是“教”它认识你的硬币。这个过程通常被称为“训练”或“编程”。
3.1 硬件连接与上电
- 准备电源线:将投币器线束中的红色线(+12V)接到DC电源母座的“+”螺丝端子上,黑色线(GND)接到“-”端子上。拧紧螺丝,确保接触良好,避免虚接导致供电不稳定。
- 连接线束:将线束的插头端牢固地插入投币器底部的插座。
- 上电:将12V电源适配器插入市电插座,另一端插入刚才接好的DC母座。此时,你应该能听到投币器发出一声清晰的“嘀”自检声,并且机身上的红色LED指示灯常亮。这表明投币器已通电并进入待机状态。
3.2 进入编程模式与参数设置
不同型号的投币器进入编程模式的操作略有不同,但通常都遵循“按键组合+指示灯状态”的流程。你需要参考投币器自带的说明书。以常见的4币种型号为例,流程一般如下:
- 长按设置键(通常位于投币器侧面或底部)3-5秒,直到指示灯开始以特定模式闪烁(例如快闪),表示已进入主设置菜单。
- 通过短按设置键,在多个参数间循环切换,如“硬币类型1”、“硬币类型2”、“脉冲数”、“接受/拒绝”等。每次切换,指示灯可能会改变闪烁频率或颜色来提示当前选项。
- 核心步骤:脉冲数设定。这是将物理硬币与游戏积分挂钩的关键。找到“脉冲数”或“Credit”设置项。假设我们设定:
- 硬币类型1(25美分):脉冲数 = 1。这意味着每投入一枚25美分,投币器会输出1个脉冲,游戏增加1个信用点。
- 硬币类型2(50美分):脉冲数 = 2。投入一枚50美分,输出2个脉冲,游戏增加2个信用点。
- 硬币类型3(1美元硬币):脉冲数 = 4。实现“一元兑四币”的优惠。
- “训练”识别样本:在设置好脉冲数后,你需要进入“学习”模式。按照提示,依次投入你希望被识别的真币样本。投币器会记录该硬币通过内部传感器时的特征数据(电磁信号、尺寸等),并存入对应的硬币类型“档案”中。通常每个类型需要投入3-5枚样本以确保识别准确性。
- 保存并退出:完成所有硬币类型的编程和训练后,按照指示长按设置键保存所有参数。投币器会重启并进入正常工作模式。
实操心得:
- 使用状态一致的硬币:训练时,务必使用干净、无严重磨损的硬币。新旧硬币的电磁特征可能有细微差别,用流通中的正常硬币作为样本最可靠。
- 测试验证:编程完成后,投入各种硬币进行测试。观察投币器的动作(真币应落入收藏箱,并伴有清脆的“咔哒”螺线管动作声)和侧面的计数显示(如果有)是否与预设脉冲数一致。
- 防误触:编程按键通常是微动开关,最好用细小的工具(如回形针)操作,避免误触。整个编程过程最好在安静环境下进行,以便听清提示音。
4. 与Picade控制器的安全集成
这是将投币器的“物理世界”信号接入“数字游戏世界”的关键一步。我们的目标是让投币器模拟按下Picade上那个“投币/选择”按钮的动作。
4.1 理解Picade的输入接口
Picade控制器板为街机按钮和摇杆提供了丰富的输入接口。每个输入本质上都是一个连接到树莓派GPIO的按钮开关。当按钮按下时,该引脚会通过一个上拉电阻被拉到低电平(GND),树莓派检测到这个低电平变化,便认为按键被触发。
投币器输出的脉冲信号,本质上是一个快速的“通-断-通”开关信号。白线(信号线)在平时保持高电平(或悬空),当识别到有效硬币时,它会瞬间拉低到低电平(GND),然后恢复,形成一个负脉冲。这个脉冲的宽度和形式,正好可以被Picade的输入电路识别为一次“按钮按下”。
4.2 安全接线方案详解
这里有三种接线方案,各有优劣:
方案一:并联接入(推荐,最灵活)这是原教程中提到的简易方法,也是我最推荐给初学者的方案。
- 找到目标按钮:打开你的街机柜,找到正面板上默认被映射为“投币”键的那个按钮(通常是左起第一个)。
- 并联接线:将投币器线束中的白线(信号输出),用一条杜邦线或焊接方式,连接到该按钮的一个引脚上。将投币器线束中的黑线(信号地),连接到该按钮的另一个引脚上。
- 原理:这样,无论是按下物理按钮,还是投币器产生脉冲,都会在同一个电路节点上产生一个接地信号,Picade都会收到一个“投币”指令。优点是物理按钮依然可用(比如没硬币时调试),无需修改任何软件配置。
方案二:直接替换(纯投币控制)如果你希望只有投币才能加信用点,彻底禁用按钮,可以采用此方案。
- 断开按钮:将原先“投币”按钮的两根线从Picade端子上拆下。
- 接入投币器:将投币器的白线接到Picade板上原来连接按钮信号线的那个端子(通常标记为“COIN”或对应GPIO编号),将投币器的黑线接到Picade的GND端子。
- 注意:此时物理按钮完全失效。你需要通过其他方式(如键盘)进入RetroPie设置,或者事先配置好备用方案。
方案三:增加切换开关(终极控制)在方案二的基础上,增加一个双刀双掷(DPDT)拨动开关。
- 开关接线:将开关置于投币器和物理按钮之间。开关的一路连接投币器,另一路连接物理按钮,中间公共端连接Picade的输入引脚。
- 功能:通过拨动开关,你可以选择是仅使用投币器、仅使用按钮,还是两者都断开。这提供了最大的控制灵活性,适合需要经常切换模式的场景(例如公开展示时锁死投币,私人游玩时启用按钮)。
警告:电压安全再强调无论采用哪种方案,请再次确认:投币器的红色(+12V)和黑色(电源地)线只连接到12V电源!绝对不要将它们接到Picade或树莓派的任何引脚上!连接到Picade的只有白线(信号)和从电源地引出的另一根黑线(共地)。确保你的接线清晰,并用不同颜色的热缩管或标签进行区分。
5. 定制化机箱的设计与制作要点
一个精致的外壳不仅能保护内部元件,更能提升整个项目的完成度和美观性。原教程提供了激光切割亚克力的方案,这里我展开讲讲设计原则和替代方案。
5.1 设计考量与尺寸规划
设计机箱前,你需要精确测量投币器的三维尺寸,特别是安装法兰的孔距和投币口的高度。核心设计原则如下:
- 前面板:这是设计的焦点。开孔必须与投币器的投币槽和安装孔位严丝合缝。开孔太小硬币进不去,太大会显得粗糙且可能卡币。通常需要在CAD软件中根据投币器图纸精确绘制。
- 内部空间:机箱深度和宽度要预留足够空间,以容纳投币器本体(通常比前面板突出部分要厚)以及内部蜿蜒的线束。建议四周留出至少1-2厘米的余量,便于散热和布线。
- 后面板:需要开一个足够大的圆孔或方孔,让投币器的线束插座能够穿过。同时可以考虑设计一个可拆卸的盖板,方便日后维护或清空硬币箱。
- 硬币收集:机箱底部应设计成倾斜或漏斗状,引导硬币滑向一侧,方便集中取出。可以在底部加一层柔软的内衬(如绒布或EVA泡棉)以减少噪音。
- 材质选择:
- 亚克力(激光切割):美观、透明、精度高,但相对较脆,不耐刮擦。
- 椴木板/胶合板(激光切割或CNC):质感温润,强度好,易于喷涂或粘贴装饰贴纸。
- 中密度纤维板(MDF,手工或机械加工):成本低,易于加工和喷漆,是DIY的常见选择。
- 现成防水盒(打孔改造):最省事的方案,选择尺寸合适的塑料防水接线盒,在前后面板打孔安装即可,优点是密封性好。
5.2 组装技巧与结构加固
- 连接方式:对于亚克力或木板,常见的连接方式有:
- 螺丝螺母连接:如教程所用,在面板边缘设计卡槽,用螺丝和螺母将相邻面板拉紧。优点是牢固,可拆卸。组装时务必先徒手将所有螺丝螺母预拧几圈,确保所有面板对齐后,再使用工具对称、逐步地拧紧。避免单点受力过大导致亚克力开裂。
- 胶合:使用合适的胶水(亚克力专用胶、木工白乳胶)进行粘合。强度高,外观无螺丝痕迹,但不可逆。
- 榫卯或卡扣设计:在激光切割时设计插接结构,无需额外紧固件,但对设计精度和材料厚度一致性要求极高。
- 投币器的固定:使用投币器自带的M4螺丝和螺母,从机箱内部向外固定。可以在机箱内壁对应位置粘贴几个螺母座,或者直接使用带垫片的螺丝穿透面板固定。确保投币器安装稳固,投入硬币时不会晃动。
- 线束管理:内部用扎带或魔术贴将电源线和信号线分别捆扎整齐,避免线材缠绕或靠近运动部件。电源适配器的插座部分可以在机箱侧面或后面板开孔固定,使其成为一个永久接口。
6. 系统调试、问题排查与进阶玩法
6.1 上电调试流程
- 独立测试投币器:在接入Picade之前,先单独给投币器上电。投入训练过的硬币,观察其动作是否正常(LED指示、螺线管声音、硬币落入正确位置)。用万用表的电压档,测量白线和黑线(共地)之间,在投币瞬间是否有电压跳变(从高电平跳到低电平再恢复)。这能确认投币器本身工作正常。
- 连接Picade并测试:关闭所有电源,按选定方案完成接线。先给Picade和树莓派上电,启动RetroPie系统。然后给投币器上电。投入一枚硬币,观察游戏中的信用点是否增加。如果使用方案一(并联),可以同时测试物理按钮是否也有效。
- 软件映射确认:进入RetroPie的配置界面,检查“投币”键的映射是否准确。有时默认映射可能不是你想要的那个按钮,可以在
RetroPie-Setup菜单或EmulationStation的输入配置中重新映射。
6.2 常见问题与解决方案速查表
| 现象 | 可能原因 | 排查步骤与解决方案 |
|---|---|---|
| 投币无反应,游戏不加信用点 | 1. 信号线未接通。 2. Picade输入引脚映射错误。 3. 投币器未正确输出脉冲。 | 1. 检查白线是否可靠连接到Picade输入端子,黑线是否与Picade共地。 2. 用万用表或示波器检测投币瞬间白线对地是否有脉冲信号。 3. 进入RetroPie,重新配置输入,测试当投币时,系统识别到的是哪个按键。 |
| 投币器通电无反应,LED不亮 | 1. 电源未接通或损坏。 2. 接线错误(极性接反)。 3. 投币器故障。 | 1. 用万用表测量DC母座输出端是否有12V电压。 2. 检查红线是否接+12V,黑线是否接GND。 3. 检查线束插头是否完全插入投币器底座。 |
| 识别率低,经常拒收真币 | 1. 硬币样本训练不充分或样本状态差异大。 2. 传感器窗口脏污。 3. 投币路径有阻碍,硬币通过速度不稳。 | 1. 重新进入编程模式,用更多、更典型的硬币样本进行训练。 2. 用棉签和少量无水酒精清洁投币器的光电传感器窗口。 3. 检查机箱投币口是否对齐,确保硬币自由落体通过识别区。 |
| 投币器动作,但Picade连续触发多次按键 | 投币器输出的脉冲宽度或波形不匹配,被Picade去抖电路误判为多次按下。 | 1. 这是较少见的情况。尝试在Picade的输入引脚和地之间并联一个0.1uF的电容,以滤除可能的抖动。 2. 查阅投币器手册,看是否能调整输出脉冲的宽度参数。 |
| 物理按钮与投币器同时工作时相互干扰 | 并联接线时,如果按钮是常闭型或线路有短路。 | 确保街机按钮是标准的常开型微动开关。检查接线点是否有焊锡短路或线皮破损。 |
6.3 进阶玩法与扩展思路
- 积分显示与统计:你可以利用树莓派的GPIO或USB接口,连接一个小型OLED屏幕或数码管,实时显示当前信用点总数。甚至可以编写一个简单的Python脚本,记录不同时段的投币数量,生成简单的“营收”报表。
- 声音与灯光反馈:通过树莓派编程,在检测到投币脉冲时(除了游戏内的声音),额外触发一个更响亮的、经典的街机投币音效(通过外接音箱播放)。同时,可以控制LED灯带闪烁,增强仪式感。
- 联网与远程管理:将树莓派接入网络,你可以远程查看投币状态、远程增加信用点(比如对朋友开放)、甚至设置基于时间的免费游玩时段。
- 多投币器支持:对于大型机柜,你可以连接多个投币器(需要控制器有足够输入端口),实现双人同时投币或区分不同币种通道。
- 代币系统:放弃使用真实货币,定制专属的游戏代币。在训练投币器时,将代币设为主要识别类型。这完全避免了法律风险,并且能打造独一无二的街机体验。
完成整个项目后,当你听到硬币滑入投币槽那声清脆的“叮当”,紧接着是螺线管有力的“咔哒”一声,最后游戏屏幕上的“CREDIT”数字稳稳地向上跳动——那一刻所获得的满足感,远非按下一个按钮所能比拟。这个项目完美地融合了硬件集成、嵌入式编程和实体制作,它让你亲手搭建了一座连接过去与现在的桥梁。最重要的是,在这个过程中积累的关于传感器信号处理、电压安全隔离和机械结构设计的经验,能够无缝应用到更多有趣的智能硬件项目中去。