Made with KiCad(136):DonCon2040 - 一款基于RP2040的太鼓达人街机控制器

描述

“ DonCon2040 是一款为 DIY 太鼓达人街机风格鼓控制器设计的固件(并由此延伸出一款 PCB)。

KiCAD  Made with KiCad 系列将支持新的展示方式。直接将以下链接复制到浏览器中(或点击“阅读原文”):https://www.eda.cn/ecadViewer/viewerPage?xmlId=c7d1bada-0e85-4945-956f-7bbe8d305ebe&fileZip=%2Fdata%2Fdesign%2Fdemo%2Fc7d1bada-0e85-4945-956f-7bbe8d305ebe.zip即可动态查看设计的原理图、PCB、3D 及 BOM,查询设计中器件、走线、焊盘的属性详情。还可以在原理图中与AI小助手互动,帮您更高效地学习设计细节:KiCADKiCADKiCADKiCAD概览

如果你在寻找更通用、即刷即用且能随时配置的方案,我推荐你看看像 GP2040-CE(https://github.com/OpenStickCommunity/GP2040-CE 这样更通用的项目。然而,如果你想构建更专业或定制化的设备,可以随时使用本项目作为基础。它被设计成具有一定的模块化特性,应该很容易改造。可以参考 DivaCon2040(https://github.com/ravinrabbid/DivaCon2040 项目,看看改造后可能是什么样子。

KiCADKiCAD

功能特性

  • 多种控制器模拟模式

    • HORI PS4-095 太鼓控制器 (PS4) (可在 PS4 上工作,详情请参阅 PS4 验证)

    • HORI NSW-079 太鼓控制器 (Switch) (兼容 Switch 上的《太鼓之达人 咚咚雷音祭》 / 《太鼓之达人 Drum'n'Fun》)

    • Dualshock 4 (仅适用于 PC/Steam,无法在真实的 PS4 主机上使用!)

    • Dualshock 3

    • Switch Pro Controller

    • XInput

    • XInput Analog (兼容 TaikoArcadeLoader 的模拟输入)

    • 键盘 (按键映射: 'DFJK' / 'CBN,')

    • MIDI

    • 调试模式 (将通过 USB 串口输出当前状态并允许直接刷写)

  • 通过外部 i2c GPIO 扩展器增加额外按键

  • 通过连接的 OLED 屏幕上的菜单进行基本配置

  • 单个 WS2812 LED 用于触发反馈

  • 显示屏上显示连打计数器

固件编译

我强烈建议你自行编译固件,以便在 include/GlobalConfiguration.h 文件中进行调整,使其与你的特定控制器构造相匹配。你仍然可以使用 预编译的二进制版本,该版本已为 DonConIO 预先配置好。

VSCode (Windows, Linux, MacOS)

  1. 安装 VSCode 并获取 Raspberry Pi Pico 扩展。

  2. 在扩展中选择“Import Project”,然后选择你克隆此仓库的文件夹。

  3. 最后使用“Compile Project”进行编译。

命令行 (CLI)

  1. 请参阅 pico-sdk readme 查看所需预备环境的列表。

  2. 使用环境变量 PICO_SDK_PATH 来指定本地的 pico-sdk 路径,使用 PICO_BOARD 来选择其他目标板。默认情况下,pico-sdk 将从 Github 获取,目标板为 "pico"。

  •  
  •  
  •  
mkdir build && cd buildcmake ..make

配置

一些你可能需要更频繁更改的设置,可以通过连接的 OLED 显示屏上的屏幕菜单进行修改。同时按住 Start 和 Select 键 2 秒钟可进入菜单:

  • 控制器模拟模式

  • LED 亮度

  • 触发阈值

  • 保持时间

  • 进入 BOOTSEL 模式以刷写固件

如果你在退出菜单时选择“保存”,这些设置将被保存到闪存中,并在断电重启后依然生效。

默认值和其他所有设置都是静态编译到固件中的。你可以在 include/GlobalConfiguration.h 文件中找到所有内容。这包括默认控制器模式、i2c 引脚、外部 ADC 配置、地址和速度、默认触发阈值、范围和去抖延迟、按键映射、LED 颜色和亮度。

去抖延迟 / 保持时间

去抖延迟也隐式地充当了敲击后输入的“保持时间”。在某些平台上,如果这个时间太短,输入可能无法被正确识别。例如,Switch 上的《太鼓之达人》需要至少 25 毫秒。

如果你注意到即使控制器上的 LED/显示屏已显示敲击成功,但游戏中仍有漏输入的情况,请尝试增加这个值。

PS4 验证

PS4 需要控制器每隔几秒钟签署一次加密质询,否则在插入约 8 分钟后将停止工作。对于太鼓达人游戏来说,这个问题还算可以忍受,因为你可以在每首歌开始前重新插拔控制器,以避免在游戏过程中遇到超时问题。尽管如此,这还是很烦人。

DonCon2040 可以签署这些质询,但你需要从一个原装 DS4 控制器中获取一些数据,并将其编译到固件中。你需要一个序列号文件、一个签名文件和一个私钥文件。我不能也不会帮助你如何获取这些文件,你需要自己想办法解决

要编译固件,请在你放置所需文件的文件夹中运行 scripts/generateAuthConfig.py 脚本。将生成的 PS4AuthConfiguration.h 文件复制到 include目录,替换掉现有文件。然后按照 固件编译 部分的说明进行编译。

签署质询会占用 RP2040 的第二个核心 2-3 秒,因此显示屏、外部控制器和 LED 会时不时地看起来像卡住了一样。鼓的输入处理不受影响。

硬件

IO 板

pcb 子文件夹中的 DonConIO 板在设计上力求接近原版街机硬件。它搭载一个 Seeed Studio XIAO RP2040,并为 Sensatec GSS-4S* 压电式冲击传感器提供信号调理。详情请参阅其 README 文件。

如果你不想使用这个板子,该固件在适当配置后应该可以在大多数 RP2040 板子上使用。你也可以使用更简单的触发方案,只要它能向 ADC 输入提供一个模拟触发电平即可兼容。

控制器按键和显示屏

额外的控制器按键和显示屏连接到同一个 i2c 总线(如果你的板子有多个 i2c 总线,也可以连接到不同的总线)。显示屏请使用标准的分辨率为 128x64 的 SSD1306 OLED 显示屏。按键需要连接到一个 MCP23017 IO 扩展器。

可参考 DonConPad 项目作为一个示例性的游戏手柄 PCB。

请注意,目前显示屏和按键是使用该控制器的强制性要求。

物理结构

关于物理结构,我只给出一个粗略的纲要,因为我对其性能仍不完全满意,并且还在尝试一些替代方案:

  • 鼓面由 12mm 厚的复合板制成。外径约为 42cm,内径约为 35cm。

  • 鼓面通过橡胶减震器安装在另一块 20mm 厚的复合板上。街机鼓的背板似乎更薄,但由于它们是牢固地安装在街机框体上的,我想增加一些重量应该没坏处。

  • 橡胶减震器高 15mm,直径 20mm。街机鼓似乎使用锥形减震器,但至少我能搞到的锥形减震器感觉太软了,所以我用了直筒形的。

  • 鼓皮方面,我尝试过用 2mm 的天然橡胶片覆盖一些帆布,效果还算不错,但声音很响且回弹很小。我现在进口了真正的街机鼓皮,效果好得多。

原理图 & PCB

IO 板

KiCADKiCADKiCADKiCADKiCADKiCAD控制板KiCADKiCADKiCADKiCADKiCADKiCADLicense MIT

仓库 & 下载

可以在Github中获取开源仓库:
https://github.com/ravinrabbid/DonCon2040

Baidu 下载:KiCAD    
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分