数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 629|回复: 66

[外设] 制作太鼓达人Taiko_Hitbox过程记录(已开源 多图)

[复制链接]
发表于 前天 15:40 | 显示全部楼层 |阅读模式
2026年新年第一帖,新年快乐!

最近娃娃玩太鼓达人,一直用的手柄玩,感觉不是太好控制(我心疼手柄),所以就做了一个Taiko_Hitbox。

先看效果图吧,是不是很喜庆,1托2:



红钮对应红色鼓面,蓝钮对应蓝色鼓面,一看就会了


制作过程挺简单的,就一个盒子+按钮+PCB+主控mcu。记录下来,希望有人会用到
项目在github上,https://github.com/stevenpaul007-creator/Taiko_Hitbox


一,盒子设计

我也是第一次做亚克力板的盒子,之前没做过cad的项目,在3d方面感觉没什么经验。而且这也是我第一次用3d软件,之前都听他们说要用autocad什么的,查了一下都没有免费的,或者要用d版。所以我大胆的使用了freecad(v1.0.2)进行设计。完全免费,没有版权纠葛,可以放心大胆的使用。
前面说了,我不太会用建模软件,但是我会写python啊!用python直接写,用freecad就可以生成。

python文件在这:https://github.com/stevenpaul007 ... /AcrylicBox/main.py
文件里定义了各种尺寸,如果想改,可以自己改。

层高40mm(因为铜柱40mm),加上底部3mm、顶部3+2mm,一共48mm,长200mm,宽100mm,高48mm


导出了dxf文件,https://github.com/stevenpaul007 ... main/AcrylicBox/dxf
可以直接给淘宝厂家发过去。



这是效果图:






有两个顶面,中间用来夹住贴纸,为了好看。一共设计了11个按钮,上下左右abxy、lb、rb和start。完全满足太古达人的需求。

按钮采用24mm和12mm两种。24mm的是主要触发的按钮,狠狠的拍那种,其他小按钮都是功能按钮,用的不多。

7块亚克力板,顶面的用2mm(实际1.8mm),其他面和支撑使用3mm(实际2.8mm)。在某宝上找了一家,报价11元包邮,下单,几天就送到了。


二、PCB

gerber文件:https://github.com/stevenpaul007 ... _PCB_2025-12-30.zip

PCB在jlc上免费做的,这次给我了9片!!!感谢JLC!!!
在电路上,采用了国产的WCH芯片,其中CH334R是USB HUB芯片。CH552T是单片机。
我最近很喜欢用CH系列单片机,便宜,够用,写代码也比较容易。每个也就1块钱。外围也很简单,几个电容就可以。基本上不用电阻。


1. SCH

ch552:


ch334r:



2. pcb

效果图:



打板!!!!沉金走起!!!




大刑伺候!上烤肉板!




搞定!


其实1117可以不用,因为ch552和ch334都内置了ldo。不过为了稳定还是加上了。另外我手上没有小封装的钽电容,用了一个大的、一个电解电容,有点随意了。ch334需要12M晶振。

Q:为什么要用hub?
A:因为我想坐在沙发上看电视玩,距离电脑大概5m远。可以通过一根很长的usb线接hub,在通过短线连接第二个hitbox。

Q:为什么只焊接了一个usb母座?
A:因为1个就够了。其他的可要可不要。

Q:为什么不焊接下载电路?
A:用镊子怼就行



三、组装

组装比较简单,有手就行。

底面螺丝孔做一下沉头(因为螺丝是沉头的):



放4个pcb孔位的螺母儿,母儿的直径是4.1mm,孔的直径是3.9mm。用电烙铁怼进去。







背面看看效果:



插好4个支撑,这次做的有点紧,插进去就拔不出来。(cad文件里写了槽宽2.9mm,可以改为3mm)



顶面两层对好,放上“花花”的图。
图可以用铜版纸,价格比较高,我用的是10寸(23mm*45mm)的相片,淘宝上大概2块多1张,我做了2张,4块多钱4个图。





插入5根螺丝固定




用刀子裁去边边角角



拧上铜柱,扣去按钮位置




插上按钮:





翻过来,开始走线。先走共地线。(别问我为什么地线为什么是红色的,因为红色的线剩下的多呗)





线是用钳子压的,这里没用烙铁焊接,为了方便以后的更换。
然后给每个按钮接线。线留的有点长,不过还好,收在盒子里面看不见,而且太短了不好接



准备合体!!!!



拧好螺丝!!!!!



底部贴上防滑贴



螺丝我用了两种M3,为什么用两种?因为我有两种啊!




四、固件

https://github.com/stevenpaul007 ... /CH552_TAIKO_HITBOX


我找了一个倭寇人的开源依赖,可以使用ch552模拟switch手柄,我设计了12个按钮的扫描,实际使用了11个按钮。预留了ttl接口但没用上,可以扩展为额外2个按钮。


想自己编译的,可以使用arduinoide编译ino文件。不想编译的,我有编译好的hex文件:
https://github.com/stevenpaul007 ... ITBOX.ino.ch552.hex
可以使用WCHISPTool_CH54x-55x.exe通过usb接口对ch552进行编程。

通过usb口接电脑可以识别为手柄,接switch也识别。

还有一种固件我也在用,是rp2040的,叫gp2040 ce。也是很不错的固件,rp2040开发板大概10块钱一个,比ch552贵。


代码:
  1. // libs: https://github.com/stevenpaul007-creator/CH55xSwitchControl

  2. #include <CH55xSwitchControl.h>

  3. #define ButtonNum 12
  4. #define HATCOUNT  4

  5. #define UP 0
  6. #define DOWN 1
  7. #define LEFT 2
  8. #define RIGHT 3

  9. const uint8_t Pins[ButtonNum] = {
  10.   32, 14, 15, 16,    //up down left right
  11.   10, 11, 31, 30,    //A B X Y
  12.   17, 35, 34, 33     //LB RB - +
  13. };

  14. const uint16_t KeyCode[ButtonNum] = {
  15.   0, 0, 0, 0,
  16.   BUTTON_A, BUTTON_B, BUTTON_X, BUTTON_Y,
  17.   BUTTON_L, BUTTON_R, BUTTON_MINUS, BUTTON_PLUS
  18. };

  19. bool BUTTON_STATUS[ButtonNum] = {
  20.   false, false, false, false,
  21.   false, false, false, false,
  22.   false, false, false, false
  23. };
  24. bool BUTTON_STATUS_P[ButtonNum] = {
  25.   false, false, false, false,
  26.   false, false, false, false,
  27.   false, false, false, false
  28. };

  29. uint8_t DPAD_DIR = HAT_CENTER;
  30. uint8_t DPAD_DIR_LAST = HAT_CENTER;

  31. bool shouldSendReport = false;

  32. void setup() {
  33.   for (int i = 0; i < ButtonNum; i++) {
  34.     pinMode(Pins[i], INPUT_PULLUP);
  35.   }
  36.   setAutoSendReport(false);
  37.   USBInit();
  38. }

  39. void loop() {
  40.   for (byte i = 0; i < ButtonNum; i++) {
  41.     BUTTON_STATUS[i] = !digitalRead(Pins[i]);
  42.   }
  43.   DPAD_DIR = HAT_CENTER;

  44.   if (BUTTON_STATUS[UP]) {
  45.     DPAD_DIR = HAT_UP;
  46.   } else if (BUTTON_STATUS[DOWN]) {
  47.     DPAD_DIR = HAT_DOWN;
  48.   } else if (BUTTON_STATUS[LEFT]) {
  49.     DPAD_DIR = HAT_LEFT;
  50.   } else if (BUTTON_STATUS[RIGHT]) {
  51.     DPAD_DIR = HAT_RIGHT;
  52.   }

  53.   if (BUTTON_STATUS[UP] && BUTTON_STATUS[RIGHT]) {
  54.     DPAD_DIR = HAT_RIGHT_UP;
  55.   } else if (BUTTON_STATUS[UP] && BUTTON_STATUS[LEFT]) {
  56.     DPAD_DIR = HAT_UP_LEFT;
  57.   } else if (BUTTON_STATUS[DOWN] && BUTTON_STATUS[RIGHT]) {
  58.     DPAD_DIR = HAT_RIGHT_DOWN;
  59.   } else if (BUTTON_STATUS[DOWN] && BUTTON_STATUS[LEFT]) {
  60.     DPAD_DIR = HAT_DOWN_LEFT;
  61.   }

  62.   if (DPAD_DIR != DPAD_DIR_LAST) {
  63.     pressHatButton(DPAD_DIR);
  64.     shouldSendReport = true;
  65.     DPAD_DIR_LAST = DPAD_DIR;
  66.   }

  67.   for (int i = HATCOUNT; i < ButtonNum; i++) {
  68.     if (BUTTON_STATUS_P[i] != BUTTON_STATUS[i]) {
  69.       shouldSendReport = true;
  70.       BUTTON_STATUS_P[i] = BUTTON_STATUS[i];
  71.       if (BUTTON_STATUS[i]) {
  72.         pressButton(KeyCode[i]);
  73.       } else {
  74.         releaseButton(KeyCode[i]);
  75.       }
  76.     }
  77.   }

  78.   if (shouldSendReport)
  79.   {
  80.     sendReport();
  81.     shouldSendReport = false;
  82.   }
  83.   delay(5);  //naive debouncing
  84. }
复制代码



希望对你有用,完。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 3家元 +90 收起 理由
沙漠臭屁虫 + 30
vip2128 + 30
jf201006 + 30 優秀文章

查看全部打赏

发表于 前天 16:00 来自手机浏览器 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 前天 16:27 来自手机浏览器 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 前天 16:30 来自手机浏览器 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 16:37 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 16:37 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 前天 16:40 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 16:42 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 前天 17:32 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 17:34 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 前天 18:07 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 18:11 来自手机浏览器 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 前天 18:35 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 19:10 来自手机浏览器 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 前天 19:33 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 前天 21:20 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 前天 22:18 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 前天 22:57 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 昨天 09:55 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 昨天 10:00 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2026-1-6 23:45 , Processed in 0.202800 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz!

© 2006-2026 MyDigit.Net

快速回复 返回顶部 返回列表