把街机塞进 15.6 寸小屏幕:Mai Pico,用树莓派 Pico 复刻 Maimai 手台

有没有在机厅被 Maimai 的转盘+触摸 combo 支配过?打完一局,钱包空了,手也抽筋了。回家想练歌,却发现模拟器要么手感离谱,要么整套设备比房租还贵。今天聊的 GitHub 项目 Mai Pico,就是一位国内大佬“whowechina”送给所有手残党的礼物:只用一张 15.6 寸便携屏、几块 3D 打印件和一颗树莓派 Pico,就能搓出一台「麻雀虽小、五脏俱全」的 Maimai Mini

把街机塞进 15.6 寸小屏幕:Mai Pico,用树莓派 Pico 复刻 Maimai 手台封面
HQ_386713402025-08-29 14:01:57CC BY-NC 3.0
13
Star

PCBA
该项目存在多块PCBA,可切换查看

IO
BOTTON

设计文件

KiCad图标OK.zip185.34KB

EDA查看器

复制嵌入代码

详细介绍

概览

Maimai 的精髓在两点:

  1. 八个物理按钮的“咔哒”节奏感;

  2. 那块能感知多点触摸的 ITO 玻璃。
    市面上要么买官方 10 万日元的手台,要么淘宝 3D 打印壳+山寨触摸板,手感随缘。Mai Pico 想做的,就是用开源硬件把这两件事一次性解决,顺便把价格打下来,让双人游戏也变成可能。

核心功能与原理

  1. 按钮圈:

    • 8 颗凯华 Choc 矮轴,30–45 g 线性手感,回弹跟手。

    • 每颗轴配两颗 WS2812B,RGB 灯效自己写,想跑马灯还是纯色随你。

  2. 触摸:

    • 自制 ITO 玻璃,3 片 MPR121 电容触摸芯片,把整块玻璃切成 24 个独立触摸区。

    • 协议直接参考 Sucareto 的 Mai2Touch,电脑端即插即用。

  3. 主控:

    • 树莓派 Pico(或 Pico W),USB-C 一线通。

    • 固件自带 HID 手柄/键盘双模式,想打 Maimai DX+ 还是自制模拟器都能识别。

  4. 双人模式:

    • 左右各一套按钮 + 触摸,USB 一进二出,两台机器肩并肩就是 Double Play。

  5. AIME 刷卡:

    • 预留 PN532 NFC 模块,刷实卡或手机 NFC 都行,段位不丢。

硬件部分

硬件部分由 IO 板与按键板组成。

按键板

IO 板

制作集锦

以下是一些爱好者的作品:

Lavide 的作品

Lavide 制作了一个漂亮的紧凑型一体化 Mai Pico 机框!

Romper 的作品

Romper 利用 Mai Pico 的触摸设计制作了一个全尺寸的控制器。

imfrea 的作品

imfrea 给 Mai Pico 设计了一套平价又好看的亚克力外壳。

IlIIllllIlIIlll 的作品

IlIIllllIlIIlll 也制作了一套外壳。


如何制作

PCB

  • 使用 gerber zip 文件(最新的 production\PCB\mai_io_v*.zip

 和 Production\PCB\mai_button_v*.zip)下单,常规 FR-4 板,厚度 1.6mm。你需要 1x io PCB 和 8x 按钮 PCBs 来构建一个 Mai Pico con。

  • 1x Raspberry Pico Pi Pico 或 Pico W。
    https://www.raspberrypi.com/products/raspberry-pi-pico

    注意另一侧的 3 个引脚,它们很难焊接,可能会留下气泡。

  • 1x USB Type-C 插座(918-418K2023S40001 或 KH-TYPE-C-16P)

  • 2x 0603 5.1kohm 电阻(R20,R21)用于 USB,如果你打算直接使用 Pi Pico 上面原生的 USB 插座,那么 Type-C 插座和电阻都可以省去,焊接也会简单不少。

  • 3x MPR121 模块,市场上有许多类型,选择像这样的。 https://www.sparkfun.com/products/retired/9695

    在将 MP121 模块焊接到主 PCB 板之前,记得用小刀切断 ADDR 和 GND 之间的微小连线,注意绝对不要切过头。

  • 因为我们使用的是 MPR121 模块,而不是芯片,所以 U5、U6、U7 区域的离散组件留空(新版里已经移除)。

  • 1x SN74LV1T34DBVR(SOT-23-5)电平转换器(U8),如果你找不到,就用 0603 10ohm 电阻(R4)替代,新版的设计里,它已经被移除。 

  • 4x 0603 1uF(0.1~1uF 都可以)电容器(C1,C2,C3,C7),可选,推荐。有些已经在新版本里移除。

  • 16x WS2812B-3528 RGB LED(每个按钮需要两个)。

  • 8x Kailh Choc v1 键盘开关,线性的,30gf 到 45gf 的。 

  • 1x PN532 NFC 模块和一些细电线, 只有需要 AIME 的时候才用得上.
    你需要把它焊接到 MPR121 所在的 I2C 总线上(GPIO 6 and 7)。

  • 以下仅适用于使用了光电开关的按钮。

    • 8x 0603 220ohm 电阻(R1,R2,R3,R4,R5,R6,R7,R8),它们是限流电阻。

    • 8x 0603 5.1kohm 电阻(R10,R11,R12,R13,R14,R15,R16),它们是上拉电阻。可能不需要,你可以先试试不焊接。

ITO 玻璃

找一个服务定制蚀刻 ITO 镀膜玻璃。AutoCAD 文件是 Production\CAD\mai_pico_ito_v*.dwg。使用 2mm 厚,10-20ohm 平方电阻的 ITO 镀膜玻璃。

ITO 镀膜玻璃通过 "斑马线"(1.6mm 间距:0.8mm 黑色部分和 0.8mm 透明部分)连接到 IO PCB。使用 200°C 的硅加热头将斑马线粘贴到 PCB 的金手指部分和 ITO 镀膜玻璃上。这种线的正式名称是 "热压密封连接器"。

定制 ITO 镀膜玻璃相对较贵,但我们的尺寸小,所以并不像街机那么贵。

按键环

  • 从 Production\3DPrint\mai_*.stl 打印出 8 套 底座、连接板、按钮 和 盖子。

  • 购买 8 根 2mm(直径)* 40mm(长度)的钢轴,它们用作按钮铰链。

  • 这是如何组装它们的方法,这个渲染图像中没有显示铰链轴和 PCB 上的组件。

  • 这是我如何组装环的方法。请注意,这些图片中缺少按钮开关的线路。

    • 所有离散组件已准备好。

    • 首先焊接按钮 PCB。

    • 按键 PCB 使用细小且柔软的 3 线电缆串联,它们是 G、IN/OUT、V,分别代表地、信号进/出和电源。按钮开关信号引脚还没有焊接,你可以后面再焊接。请不用担心按钮 GPIO 的顺序,因为它们可以通过命令行重新映射。

    • 你需要 3M5423 UHMW 胶带(或类似的硬且超滑的 PTFE 胶带,厚度 0.2-0.3)。它用来润滑触摸键开关的按钮表面。

    • 将 3D 打印的部件和 PCBs 组装在一起。

    • 使用轴稍微扩大支撑孔,然后涂上一些键盘开关润滑剂,如 Krytox 205G0,使轴超级光滑。

    • 每个 连接板 需要 8x M2*4mm 螺丝将两个 底座 连接在一起。

    • 安装 盖子,每个需要 2x M2*5mm 螺丝。

便携显示器

分辨率:1920*1080,尺寸:15.6 英寸,刷新率:120Hz(推荐)或 60Hz,内置扬声器。

  • 它们很容易找到。选择闲鱼上有小瑕疵的会便宜得多,也一样很好用。

  • 有两种类型的驱动板,一种只有 micro-HDMI,另一种支持 type-C 显示(方便连接 Nintendo Switch)。两种都可以。

粘合到一起

  • 我使用 3M VHB 胶带(0.5mm 或 1mm 厚)将按钮环、ITO 玻璃和显示器粘在一起。

  • 只使用一点胶带,我使用 4 小块胶带将 ITO 玻璃粘到显示器上,另外 4 小块胶带将按钮环粘到 ITO 玻璃上。

  • 不要在 ITO 玻璃的走线上贴胶带,你可以在某个角度光线下看到 ITO 的走线。

固件

  • UF2 文件在 Production\Firmware 文件夹中。

  • 对于新的构建,连接 USB 到 PC 时按住 BOOTSEL 按钮,会出现一个名为 "RPI-RP2" 的磁盘。将 UF2 固件二进制文件拖入其中。就这样。

  • LED 和 Touch 协议的实现遵循 Sucareto 在 https://github.com/Sucareto/Mai2Touch 上的研究。

  • 它有一个命令行进行配置。你可以使用这个 Web Serial Terminal 连接到 Mai Pico 的 USB 串口。(注意:"?" 是帮助)

  • 当你点击这个网页的 Connect 按钮后,你能看到每个端口的名称。

  • 可以使用 gpio 命令重新映射按钮 GPIOs,固件支持 8 个主按钮和 4 个辅助按钮(分别是:Test, Service, Navigate, Coin)。

  • 可以使用 touch 命令重新映射触摸键。对于用 ITO 膜手作触摸板,或者自己定制了引脚不同的 ITO 镀膜玻璃的朋友,这个命令会很有用:

    • touch

       不带参数,可以用来检测当前按下的触摸键。

    • touch 1 9 E6

       是映射第二个 MPR121 传感器的电极 9 到 “E6”,注意 “XX” 表示不连接任何触摸键。

  • 可以使用 rgb 命令为每个按钮分配串联的 RGB LED 数量。

  • 可以通过 level 命令调整 LED 的亮度。

  • 有 MPR121 参数调整和灵敏度设置,自己探索。

  • 它实现了 3 个 COM 端口,一个用于命令行,另外两个用于 LED 和 Touch。通过向命令行发出 whoami,每个 COM 端口都会打印它们的身份。

  • 按钮信号通过 HID Joystick 或 HID NKRO(键盘)发送到主机。有两套 NKRO 键映射,使用 hid <joy|key1|key2> 在它们之间切换。在 NKRO 模式下,键映射是:

    • key1:WEDCXZAQ-按键环,3-Select

    • key2(小键盘):89632147-按键环,*-Select

    • 上述两套都有:F1-Test F2-Service F3-投币

  • factory

     用来复位到默认配置。当固件升级时,老配置可能失效,这时候请复位到默认配置,然后重新插拔一下控制器。

开源地址

最后是该项目的仓库:

https://github.com/whowechina/mai_pico

最后,项目是 CC-NC 授权。所以你只能给自己和或者免费给你的朋友 DIY,不能利用这个项目赚钱,比如收费的代做,出售整机等,连源作者都不敢提的抄袭或者稍微改改换个名字来打擦边球就更不可以了。有商业诉求的,请联系项目的作者。