亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

3D 打造紧凑型 MIDI 架子鼓套件

元器件与物料清单

元器件 数量
Arduino UNO 1
Adafruit 标准 LCD - 16x2 白字蓝底 1
SparkFun 压电陶瓷片 1
Adafruit 力敏电阻 (FSR) 1
电阻 10kΩ 1
电阻 1MΩ 1
SparkFun 稳压二极管 - 5.1V 1W 1
SparkFun 轻触开关 12mm 1
滑动开关 1
TRS 插座 (立体声耳机座) 1
USB-A 转 B 型数据线 1
Apple Lightning 转 USB 相机转接器 1

所需工具与设备

应用与在线服务

项目简介

3D 打造紧凑型 MIDI 架子鼓套件

这是一个基于 Arduino UNO 的极简架子鼓套件。项目灵感来源于 Arduino 官方博客的 3D 打印电子鼓垫教程。我被压电陶瓷的简单原理和 MIDI 协议的巧妙深深吸引,不仅满足于制作鼓垫,更想打造完整套件。

整个鼓套件分为两大部分:

  1. 3D 打印鼓垫 + 厚纸鼓壳
  2. Arduino UNO 触发转 MIDI 转换器

鼓垫信号经 Arduino 处理转为 MIDI 信号,通过 USB 传输至 iPhone、电脑等设备发声。无需额外供电,手机/电脑即可供电。

所需材料清单

工具

材料

鼓硬件

步骤 1:3D 打印

所有模型文件在 Thingiverse 和 GitHub。边框请使用 Ver.2 版本。打印参数:填充率 20%,层高 0.3mm。鼓垫也可用激光切割制作,矢量文件见 GitHub vector 目录。

步骤 2:组装鼓垫框架

用 M3-10mm 螺栓连接各部件,中心柱用 M3-15mm 或 M3-25mm 螺栓固定底部。

3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件

步骤 3:制作鼓壳

鼓壳高度 55mm。制作三条宽 55mm 的纸条,长度略长于鼓垫周长。将纸条插入底部缝隙,裁剪成完美圆周长,重复三次叠加粘合。干燥后固定网面鼓皮,钻 9mm 孔安装插座。可使用蝴蝶螺母或自制调音键。网面固定用 M6-70mm 螺栓。钻孔后取下网面安装压电陶瓷。

3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件

步骤 4:安装压电陶瓷

压电陶瓷脆弱,操作勿弯折损伤!

军鼓 (双压电陶瓷)

踩鼓 (单压电陶瓷)

踩镲 (单压电陶瓷)

3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件

步骤 5:10 寸军鼓垫组装

先安装边沿传感器,牢固固定传感器板,锥形海绵侧视露出 2-3mm。8 寸垫作军鼓同理。

3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件

步骤 6:8 寸踩鼓垫组装

切割 13mm 不锈钢管:两根 200mm、两根 365mm (长度可微调)。按图组装,M3 螺母嵌入零件内固定管材,用 M3-15mm 螺栓锁紧。

3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件

步骤 7:12 寸踩镲制作

用厚纸制作镲片:剪 300mm 直径圆纸 3 张。从中心切口,再平行偏移 10mm 切第二刀,得到三个"小嘴吃豆人"形状。小心合拢切口用胶带固定成浅碗状。涂胶水叠加压实,压重干燥。消音用 5mm 海绵钻孔(孔位可隐藏)。双面胶粘贴传感器座和线槽(热熔胶更易操作)。

3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件

步骤 8:踩镲控制器

控制器将踩镲开合状态传给 Arduino。电路简单,三部分组合:底部粘贴 FSR 并固定插座(FSR 可开孔)、FSR 上贴 10mm 海绵、M3-10mm 螺栓固定盖子。

虽仅输出 HIGH/LOW,但用 FSR 是为兼容 Roland、Yamaha 音源模块,且 EZ DRUMMER 2 等专业鼓音源支持多级开合度。FSR 理论上只需改代码即可支持多级,但未实测。

3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件

步骤 9:USB-MIDI 固件刷写

仅用 USB 线即可让 Arduino 发送 MIDI 信号,被 iPhone 等识别为 MIDI 设备,无需额外硬件。

参考:morecatlab、mocolufa GitHub

普通 Arduino UNO 直连 iPhone 会报"不兼容",需重刷 USB 芯片 (ATmega16U2) 固件。参考 官方 DFU 教程,将 Arduino-usbserial-uno.hex 替换为 dualMoco.hex:

sudo dfu-programmer atmega16u2 flash dualMoco.hex

刷写后 Arduino 被识别为 MIDI 设备。短接图示引脚可恢复为普通 Arduino 模式(烧录代码时需短接),不短接则为 MIDI 模式。

3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件

步骤 10:触发转 MIDI 转换器电路

盒内含 Arduino UNO 和扩展板。电路参考 Fritzing 图。二极管为保护用,Arduino UNO 自带保护电路可能不需要,待验证。建议先打印外壳模型再按尺寸制作扩展板。外壳盖子也有 3D 模型,我用激光切割制作,二选一。

3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件

步骤 11:GarageBand 试奏

打开 GarageBand 连接即可,无需复杂设置。PC 端可用 Hydrogen(免费可扩展音色)等 DAW。

步骤 12:参数调节系统

为避免频繁改代码,设计了板载调节系统:INC/DEC 选择乐器,NEXT/BACK 选择参数,EDIT 进入修改模式再用 INC/DEC 调值,再按 EDIT 确认。视频后半段演示操作。

关键参数说明:

3D 打造紧凑型 MIDI 架子鼓套件
3D 打造紧凑型 MIDI 架子鼓套件

步骤 13:Fusion 360 源文件

部分零件需改尺寸,STL 难修改,提供 Fusion 360 源文件。因试错修改较多,历史时间线参考价值有限。

额外资源

欢迎提问交流,玩得开心!

代码

Hello Drum v2 (George Brotherston 修改版 2019/12/05)

/* Drum MIDI Controller
   Created: 28/06/2017 by Ryo Kosaka as "HELLO DRUM" Ver.1.0
   Modified: 05/12/2019 by George Brotherston */
#include 
#include 

// 变量声明
boolean bSnareFlag = false, bHihatFlag = false, bKickFlag = false, bPedalFlag = false;
boolean bButtonState = true, bButtonState_set = true;
int iUPDOWN = 0, iNEXTBACK = 0;

// 乐器参数数组: {threshold, sensitivity, note, flag, velocity, iPeakValue}
int aSNARE[6] = {150, 950, 38, 3, 0, 0};
int aSNARE_RIM[6] = {5, 500, 37, 3, 0, 0};
int aHIHAT[6] = {100, 800, 46, 1, 0, 0};
int aHIHAT_CLOSE[6] = {100, 800, 42, 1, 0, 0};
int aKICK[6] = {200, 700, 36, 1, 0, 0};
// 踩镲踏板: {scantime, snare/rim, pedalVelocity, masktime}
int aHIHAT_PEDAL[4] = {600, 0, 44, 0};
// 设置步进值
int aSETTING[4] = {4, 500, 100, 1};

// LCD 引脚
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

MIDI_CREATE_DEFAULT_INSTANCE();

void setup() {
  MIDI.begin(10);
  lcd.begin(16, 2);
  lcd.print("INITIALIZING...");
  lcd.setCursor(0, 1);
  lcd.print("DRUM MIDI CONTROLLER");
  pinMode(6, INPUT_PULLUP); // Set
  pinMode(7, INPUT_PULLUP); // Up
  pinMode(8, INPUT_PULLUP); // Down
  pinMode(9, INPUT_PULLUP); // Next
  pinMode(10, INPUT_PULLUP); // Back
}

void loop() {
  // 读取按键
  int iButton_set = digitalRead(6);
  int iButton_up = digitalRead(7);
  int iButton_down = digitalRead(8);
  int iButton_next = digitalRead(9);
  int iButton_back = digitalRead(10);
  
  // 读取压电陶瓷
  int iPiezoValue_A0 = analogRead(A0); // 军鼓面
  int iPiezoValue_A1 = analogRead(A1); // 军鼓边
  int iPiezoValue_A2 = analogRead(A2); // 踩镲
  int iPiezoValue_A3 = analogRead(A3); // 踩鼓
  int iFSRValue_A4 = analogRead(A4);   // 踩镲踏板

  // 编辑模式逻辑... (完整代码见原文)
  
  // 乐器触发检测逻辑
  // 军鼓面/边沿判别
  if (iPiezoValue_A0 > aSNARE[0] && !bSnareFlag) {
    // 峰值检测与力度计算
    // ...
  }
  
  // 踩镲开/合判别 (依据踏板 FSR 状态)
  if (iPiezoValue_A2 > aHIHAT[0] && !bHihatFlag) {
    // ...
  }
  
  // 踩镲踏板
  if (iPiezoValue_A0 > aHIHAT_PEDAL[0] && !bPedalFlag) {
    // ...
  }
  
  // 踩鼓
  if (iPiezoValue_A3 > aKICK[0] && !bKickFlag) {
    // ...
  }
  
  // 状态复位逻辑 (FLAG 判定)
  // ...
}

完整代码含详细注释,请下载源文件查看。

原理图

3D 打造紧凑型 MIDI 架子鼓套件

Fritzing 源文件: circuit_nZotR7rJMM.fzz

制造工艺

  1. 鼓:历史、构造与工艺全解析
  2. 互动陀螺仪 LED 显示:NeoPixel Ring + Arduino Pro Mini
  3. DIY 云朵发光服装 — LED 灯带 + Arduino Nano + SparkFun 元件
  4. Unopad:基于 Arduino 的无缝 Ableton Live MIDI 控制器
  5. 自制简易红外避障传感器:IR LED + 光电二极管 + Arduino
  6. 在 Arduino Due 上实现语音识别与语音合成 - BitVoicer Server 方案
  7. Icom 对讲机外置 S 表:基于 CI-V 协议与 Arduino 实现
  8. RDA5807M 迷你立体声 FM 收音机:Arduino Nano + Nokia 5110 + PAM8403 功放
  9. 上海外科医生为癌症患者3D打印定制钛合金骨植入体
  10. 连接GrabCAD Print与Stratasys 3D打印机——分步指南
  11. 超越原型:3D 打印的现实创新应用
  12. MAXREFDES220#:基于光学传感器的无袖带血压监测参考设计