Kit Adaptador USB-MIDI para Arduino Micro/Leonardo – Lista Completa de Peças
Componentes e Materiais
| Componente | Qtd | Notas |
|---|---|---|
| Arduino Micro (ou Leonardo) | 1 | Baseado no ATmega32u4 (USB nativo) |
| Optoacoplador 6N137 | 1 | Rápido, padrão para MIDI IN |
| Diodo 1N4148 | 1 | Proteção / polarização |
| Capacitor 100 nF | 1 | Desacoplamento |
| Resistor 220 Ω | 3 | Limitação corrente LED + MIDI OUT |
| Resistor 10 kΩ | 1 | Pull-up optoacoplador |
| Resistor 470 Ω | 1 | Entrada MIDI IN (pino 4 do 6N137) |
| LED genérico | 1 | Indicador de alimentação |
| Suporte para LED | 1 | Montagem na caixa |
| Conector DIN 5 pinos (MIDI) | 2 | 1 IN + 1 OUT + parafusos/porcas |
| Caixa plástica | 1 | Para acomodar tudo |
| PCB genérica (perfboard/stripboard) | 1 | Versão final soldada |
| Suportes PCB (ex: spacers nylon) | 1 kit | Fixação na caixa |
Software
- Arduino IDE
- Biblioteca Control Surface (instalar via Library Manager)
Sobre o Projeto
Adaptador MIDI USB bidirecional profissional. O ATmega32u4 (Micro/Leonardo) apresenta-se ao PC como interface MIDI USB nativa (class-compliant, sem drivers). Circuito MIDI padrão com isolamento ótico (6N137) no input.
Detalhes de Hardware
- MIDI IN: sinal entra no pino 4 do conector DIN → 6N137 → pino RX1 (Serial1) do Arduino.
- MIDI OUT: pino TX1 (Serial1) → transistor/diodo → pino 5 do conector DIN. Pino 2 do conector OUT ligado a GND (padrão MIDI).
- Alimentação: USB do Arduino (5V) → regulador 3.3V interno alimenta lado do optoacoplador.
- LED de status no pino 10 (configurável no código).
Software – Biblioteca Control Surface
Escolhida por implementar corretamente o protocolo MIDI (SysEx, tempo real, running status). Permite adicionar controlos extra (potenciómetros, pedais, botões) nas entradas analógicas/digitais livres. Suporta callbacks para processar mensagens antes de encaminhar (ex: filtrar "All Notes Off" defeituoso de sintetizadores antigos como Roland D-50).
Problema Conhecido e Correção
A biblioteca Control Surface 1.x tem buffer SysEx limitado (128 bytes), falhando com mensagens grandes (ex: editor/librarian D-50). Correção temporária (até sair v2.x):
- Em
src/MIDI_Parsers/MIDI_MessageTypes.hpp: mudeuint8_t length;parasize_t length; - Em
src/Settings/Settings.hpp: mudeconstexpr size_t SYSEX_BUFFER_SIZE = 128;para320;
Dois Sketches Incluídos
- Básico: Bridge MIDI USB ↔ Serial1 (MIDI DIN) transparente.
- Com filtro "All Notes Off": Ignora mensagens
0xB0 0x7B(Controller 123) vindas do MIDI IN, evitando corte brusco de sustain em VSTs. ConverteNote On velocity 0emNote Off.
Dica de Resolução de Problemas
Se não comunica com equipamento MIDI externo, verifique se não trocou pinos 4 e 5 do conector DIN (diagramas de pinout às vezes mostram vista de frente vs. verso do conector).
Alterar Nome do Dispositivo USB
Edite hardware/arduino/avr/boards.txt na pasta da Arduino IDE (com admin):
leonardo.build.usb_product="Arduino Leonardo"
→ leonardo.build.usb_product="Meu Adaptador MIDI"
Restaurar após upload.
Esquema
Disponível na secção Schematics (arquivo Fritzing usb_midi_interface_twiE32gvR3.fzz e imagem PNG).
Processo de manufatura
- Alerta Inteligente de Sede para Plantas – Sensor DIY para Hidratação Ideal
- Relógio de Palavras em Italiano com Arduino Nano, NeoPixel, LCD e RTC
- Economize Pinos do Arduino: Conecte Teclado 4x3 com Apenas Três Conexões
- Kit de Bateria MIDI Compacto com Impressão 3D e Arduino
- Medidor kWh Confiável com Sigfox e Arduino MKR Fox 1200
- Monitor de Temperatura com Bluetooth usando Arduino Nano
- Medidor de Capacitância Autoranging DIY (10 pF–10 µF) – Montagem Fácil com Arduino
- Fechadura por Gestos Sem Toque: Acesso Seguro com APDS-9960 e Arduino
- Circuito de Entrada Analógica Isolada para Arduino
- Teste de Tempo de Reação Preciso com Arduino UNO