Kit de Bateria MIDI Compacto com Impressão 3D e Arduino
Componentes e Materiais
| Componente | Quantidade |
|---|---|
| Arduino UNO | 1 |
| LCD Padrão Adafruit 16x2 Branco sobre Azul | 1 |
| Piezo SparkFun | 1 |
| Resistor Sensível à Força (FSR) Adafruit | 1 |
| Resistor 10k Ω | 1 |
| Resistor 1M Ω | 1 |
| Diodo Zener 5.1V 1W SparkFun | 1 |
| Chave Pushbutton 12mm SparkFun | 1 |
| Chave Deslizante (Slide Switch) | 1 |
| Soquete TRS (P10 estéreo) | 1 |
| Cabo USB-A para USB-B | 1 |
| Adaptador Apple Lightning para USB Camera | 1 |
Ferramentas e Máquinas Necessárias
- Impressora 3D (genérica)
- Cortadora a laser (genérica) — opcional
- Ferro de solda (genérico)
- Cortador de círculos
- Chave Allen (hex wrench)
- Estilete
- Cortador de tubos (pipe cutter)
- Furadeira/parafusadeira
- Brocas 9 mm e 10 mm
Aplicativos e Serviços Online
- Arduino IDE
Sobre o Projeto
Olá. Este é um kit de bateria minimalista usando Arduino UNO.
Primeiro, confira esta página do Instructables: A 3D Printed E-Drum Pad.
Desde que comecei a fazer isso, fiquei fascinado por piezos e baterias eletrônicas. O mecanismo simples de baterias eletrônicas e a grande invenção chamada MIDI me cativaram. Não me satisfez apenas fazer pads.
Este kit divide-se em duas partes principais:
- Pads feitos com impressora 3D e papel grosso.
- Conversor trigger-MIDI com Arduino UNO.
O sinal do pad (1) é processado pelo Arduino (2) e convertido em sinal MIDI, transmitido ao iPhone, laptop, etc., gerando som. Não precisa de fonte de alimentação além do smartphone ou PC.
O que Você Vai Precisar
Ferramentas
- Impressora 3D
- Cortadora a Laser (Extra)
- Chave Allen
- Estilete
- Cortador de círculos
- Ferro de Solda
- Cortador de Tubos
- Furadeira/parafusadeira
- Brocas 9 mm / 10 mm
Materiais
- Papel grosso 1 mm
- Filamento PLA
- Espuma (Sponge Foam Sheets) 5 mm / 10 mm
- MDF 2.5 mm / 5.5 mm (Extra)
- Parafusos e porcas M6 - 70 mm
- Parafusos e porcas M6 - 50 mm
- Parafusos e porcas M3 - 10 mm
- Parafusos e porcas M3 - 15 mm
- Parafusos e porcas M3 - 25 mm
- Parafusos M2
- Tubo de aço inoxidável 13 mm de diâmetro
Hardware de Bateria
- Mesh head 10 polegadas / 8 polegadas
- Suporte de caixa (qualquer; uso Yamaha SS662)
- Suporte de chimbal (qualquer; uso Yamaha HS650A)
- Pedal de bumbo (qualquer; uso Yamaha FP7210A)
- Baquetas
Passo 1: Impressão 3D
Todos os arquivos estão no Thingiverse e GitHub. Use versão 2 para o aro (rim). Imprimi com preenchimento 20%, altura de camada 0,3 mm. Também pode usar cortadora a laser para fazer os pads.
Arquivos vetoriais para corte a laser
Passo 2: Montagem
Use parafusos M3-10 mm para conectar as peças. Use M3-15 mm ou M3-25 mm para a parte central fixar as partes inferiores.
Passo 3: Fazendo o Corpo (Shell)
Altura do corpo: 55 mm. Faça três tiras com largura 55 mm. Comprimento ligeiramente maior que o contorno do pad. Insira uma tira na fresta inferior, corte para formar círculo perfeito. Repita 3 vezes e cole em camadas.
Quando secar, com a mesh head fixada, faça furo de 9 mm para o soquete. Pode usar porcas borboleta; também fiz chaves de afinação para porcas comuns. Para fixar a mesh head, use parafusos M6-70 mm. Após furar, remova a mesh head para colocar o piezo.
Passo 4: Fixando o Piezo
CAIXA (SNARE)
Use dois piezos conforme imagem. Conecte cabo vermelho de cada piezo a tip e ring. Ambos pretos a sleeve. Não esqueça de passar cabos pelos furos da placa do sensor antes de soldar.
Piezo da pele (conectado ao tip) deve ser sanduíche com espuma 10 mm: um abaixo, três acima. Faça os três de cima em forma de cone como na imagem. Coloque sobre a placa do sensor.
BUMBO (KICK)
Usa apenas um piezo, só tip. Não precisa de placa do sensor. Duas espumas sob o piezo. Posicione o sensor descentralizado do centro, pois se a baqueta bater direto no sensor, o Arduino não julga a força do golpe.
CHIMBAL (HI-HAT)
Circuito igual ao bumbo. Coloque espuma 10 mm sob o piezo.
Piezo é delicado. Cuidado para não dobrar ou danificar.
Passo 5: Pad de Caixa 10 Polegadas
Primeiro fixe o sensor do aro. Fixe a placa do sensor firmemente. Faça a ponta do cone visível 2-3 mm visto de lado. Mesmo procedimento para pad de 8 polegadas como caixa.
Passo 6: Pad de Bumbo 8 Polegadas
Corte tubo de aço inoxidável 13 mm: dois de 200 mm e dois de 365 mm. Comprimento ajustável, pequena margem de erro OK. Monte conforme fotos. Projetado para porca M3 interna na peça. Fixe tubo com parafusos M3-15 mm.
Passo 7: Chimbal 12 Polegadas
Após fazer corpo com papel grosso, pensei: posso fazer pratos. Corte papel grosso em círculo 300 mm diâmetro. Faça três. Faça entalhe do centro. Segundo entalhe a 10 mm do primeiro, paralelo. Obtém três "Pac-Man" com boca pequena. Feche a boca com fita cuidadosamente formando formato de prato. Cole e sobreponha, espalhe cola fina e uniformemente. Pressione firme, coloque peso em cima e seque.
Para silenciamento, coloque espuma 5 mm e fure. Furo não fica perfeito, mas pode esconder. Finalize fixando suporte do sensor e guia de cabo com fita dupla face (ou cola quente).
Passo 8: Controlador de Chimbal (Hi-Hat Controller)
Envia abertura/fechamento do chimbal ao Arduino. Circuito simples: combina três peças. Fixe FSR na parte inferior e soquete. FSR funciona mesmo com furo. Cole espuma 10 mm no FSR. Fixe tampa com parafusos M3-10 mm.
Embora seja apenas HIGH/LOW, usei FSR para compatibilidade com módulos de som Roland/Yamaha. No EZ DRUMMER 2, há vários estágios de abertura do chimbal. Com FSR, pode responder modificando código (não testei).
Passo 9: USB-MIDI
Com cabo USB apenas, Arduino envia sinal MIDI. Ou seja, Arduino é reconhecido como dispositivo MIDI por iPhone etc., sem hardware extra.
Consulte: MIDI Firmware for Arduino UNO (MocoLUFA) e GitHub MocoLUFA.
Arduino UNO normal conectado ao iPhone dá erro "Arduino UNO is not compatible". Precisa reescrever chip USB (ATmega16U2).
Instrução DFU Programming 8U2/16U2
Até o comando:
sudo dfu-programmer atmega16u2 flash Arduino-usbserial-uno.hex
Substitua Arduino-usbserial-uno.hex por dualMoco.hex:
sudo dfu-programmer atmega16u2 flash dualMoco.hex
Após reescrita, Arduino será reconhecido como dispositivo MIDI. Se curto-circuitar pinos conforme imagem, volta a ser Arduino normal. Se não, é MIDI. Ou seja, para gravar código na IDE, deve curto-circuitar os pinos.
Passo 10: Conversor Trigger para MIDI
Arduino UNO e shield na caixa. Consulte imagem Fritzing para circuito do shield. Diodos são proteção, mas Arduino UNO já tem circuito de proteção; diodos podem ser desnecessários.
Imprima primeiro o modelo da caixa e tampa, depois faça shield conforme. Há modelo 3D da tampa, mas fiz com cortadora a laser. Escolha o que preferir.
Passo 11: Toque com GarageBand
Abra GarageBand e conecte. Sem configuração difícil. Vários DAWs para PC funcionam, incluindo GarageBand. Hydrogen é grátis e permite adicionar sons.
Passo 12: Configuração (Settings)
Para evitar reescrever código a cada mudança de valor, fiz ajustável pelo próprio Arduino. Feito para debug, então há itens que não precisam mudar. Ainda assim, configuração necessária depende do tamanho do piezo, pad, dureza da espuma.
Selecione instrumento com botões INC/DEC e item com NEXT/BACK. Pressione EDIT para alterar valor com INC/DEC. Pressione EDIT novamente para confirmar. Veja parte final do vídeo para entender operação.
- THRESHOLD: Menor valor que produz som.
- SENSITIVITY: Sensibilidade do sensor. Baixar = velocity alta mesmo batendo leve.
- NOTE: Número da nota MIDI. Mudando, troca instrumento. Consulte imagem.
- FLAG: Valor para julgar fim da batida. Ajuste 1-10. Alto = som duplo em batida única. Baixo = perde som em batidas rápidas.
- SCAN TIME: Ms consecutivos após exceder threshold para buscar pico. Não precisa mudar.
- HEAD / RIM: Facilidade do aro. Aumentar = difícil soar. Baixar demais = aro soa batendo na pele. Julgamento head/rim pode precisar melhoria no código.
- PEDAL VELO: Velocity do pedal é constante (inicial 100). Ajuste ao gosto.
- MASK TIME: Relacionado a FLAG. Não precisa mudar. Alto = pode não soar em batidas contínuas.
Passo 13: Fusion 360
Algumas peças podem precisar mudança de dimensões. STL é difícil editar. Disponibilizei dados Fusion 360. Como editei por tentativa e erro, não dependa muito do histórico.
EXTRA
Passos extras no Instructables: Arduino Minimal Drum Kit. Processo detalhado no blog. Sinta-se à vontade para perguntar. Divirta-se!
Código
Hello Drum v2
Modificado: 05/12/2019 por George Brotherston
/* 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
// Variáveis do programa
boolean bSnareFlag = false;
boolean bHihatFlag = false;
boolean bKickFlag = false;
boolean bPedalFlag = false;
boolean bButtonState = true;
boolean bButtonState_set = true;
int iUPDOWN = 0;
int iNEXTBACK = 0;
// Arrays: InstrumentSensor[6] = {threshold, sensitivity, note, flag, velocity, iPeakValue}
// 'iPeakValue' e 'velocity' devem ser zero para todos
// Todos elementos 'aHIHAT[]' e 'aHIHAT_CLOSE[]' iguais exceto 'note'
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};
// Instrument_ContinuousController[4] = {scantime, snare/rim, pedalVelocity, masktime}
int aHIHAT_PEDAL[4] = {600, 0, 44, 0};
// InstrumentSensor_ParameterValue[4] = {threshold, sensitivity, note, flag}
int aSETTING[4] = {4, 500, 100, 1};
// LCD pins
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 Button
pinMode(7, INPUT_PULLUP); // Up Button
pinMode(8, INPUT_PULLUP); // Down Button
pinMode(9, INPUT_PULLUP); // Next Button
pinMode(10, INPUT_PULLUP); // Back Button
}
void loop() {
// Leitura botões
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);
// Leitura piezos e FSR
int iPiezoValue_A0 = analogRead(A0); // Piezo - Caixa Head
int iPiezoValue_A1 = analogRead(A1); // Piezo - Caixa Rim
int iPiezoValue_A2 = analogRead(A2); // Chimbal
int iPiezoValue_A3 = analogRead(A3); // Bumbo
int iFSRValue_A4 = analogRead(A4); // Pedal Chimbal
// ... (código completo de lógica MIDI, detecção de pico, mapeamento velocity, envio MIDI, display LCD)
// Código completo disponível no GitHub e no arquivo zip do projeto.
}
Hello Drum (versão original)
Disponível no repositório.
Esquemáticos
circuit_nZotR7rJMM.fzz
Processo de manufatura
- O Tambor: Guia Abrangente de História, Construção e Artesanato
- Cirurgiões de Xangai Implantam Próteses Ósseas de Titânio Impressas em 3D para Paciente com Câncer
- MAXREFDES220# – Monitoramento de Pressão Arterial sem Manguito com Sensores Ópticos
- Conectando GrabCAD Print à Sua Impressora 3D Stratasys – Guia Passo a Passo
- Além dos Protótipos: Inovações Reais Feitas com Impressão 3D
- Display Interativo de Giroscópio com Anel NeoPixel e Arduino
- Fantasia de Nuvem DIY: Fita LED, Arduino Nano e Peças SparkFun
- Unopad: Controlador MIDI Arduino Perfeito para Ableton Live
- Construa um Sensor de Obstáculos Simples com Arduino – Tutorial Fácil com LED IR e Fotodiodo
- Dominando Reconhecimento e Síntese de Fala no Arduino Due