Adaptadores USB-BLE MIDI Sem Fio – Conectividade Perfeita para Músicos
Componentes e Materiais
| Arduino 101 | OPÇÃO 1: Combinar com Breakout USB MIDI Host Hobbytronics | 1 |
| Hobbytronics USB MIDI Host Breakout | 1 | |
| Arduino ADK Rev. 3 | OPÇÃO 2: Combinar com breakout nRF52 ou Bean+ | 1 |
| SparkFun nRF52832 Breakout | 1 | |
| Punch Through LightBlue Bean+ | 1 | |
| Arduino UNO | OPÇÃO 3: Combinar com USB Host Shield e nRF52 breakout ou Bean+ | 1 |
| Arduino USB Host Shield | 1 | |
| SparkFun Logic Level Converter - Bi-Directional | Para interfacear lógica 5V com nRF52 breakout (3V3) | 1 |
Aplicativos e Serviços Online
| Arduino IDE |
Sobre o Projeto
Conecte sem fio seus instrumentos MIDI USB ao seu dispositivo iOS usando Bluetooth de baixa energia (BLE).
Um Kit de Conexão de Câmera da Apple é geralmente necessário para conectar um instrumento MIDI USB (como K-Board, BopPad ou Artiphon) a um aplicativo de música iOS (como GarageBand, DrumJam ou GeoShred). No entanto, com a ajuda de alguns componentes e sketches do Arduino, é fácil fazer um adaptador que lê mensagens MIDI de um instrumento USB e as envia para um dispositivo iOS usando Bluetooth LE (BLE).
Investiguei três abordagens diferentes e forneço instruções para cada uma neste projeto.
Arduino 101 / Hobbytronics USB HOST-MIDI
O primeiro design é o mais simples em termos de peças e conexões. Combina o suporte BLE fornecido pelo Arduino 101 com o suporte USB Host fornecido pelo breakout Hobbytronics USB HOST-MIDI.
O Arduino 101 e o breakout Hobbytronics comunicam-se via Serial I/O. O sketch rodando no Arduino 101 lê mensagens MIDI do breakout USB Host e as escreve em seu serviço BLE integrado.

O adaptador atualmente opera apenas em uma direção, recebendo mensagens do USB, mas não transmitindo para USB. Isso vale para todos os adaptadores neste projeto. Por esse motivo, o breakout Hobbytronics precisa apenas de três conexões: 5V, GND e TX. Conecte seu pino TX ao pino RX (D0) no Arduino 101.
Para programar o adaptador, carregue o sketch CurieUsbMidiBridge no Arduino 101. Agora você está pronto para conectar seu instrumento, conectar seu aplicativo iOS ao adaptador (procure por "CurieBLE") e começar a tocar.
Muitos aplicativos iOS suportam conexões BLE MIDI diretamente. Para aplicativos que não suportam, o aplicativo midimittr pode atuar como intermediário.
Por motivos de estabilidade, esta implementação do adaptador lida apenas com mensagens Note On e Note Off. Suporte para outras mensagens de canal como Control Change, After Touch e Pitch Bend pode ser habilitado em uma versão futura, mas por enquanto estão comentadas no sketch.
Arduino Mega ADK / SparkFun nRF52832
O segundo design aproveita o suporte BLE fornecido pelo SparkFun nRF52832 Breakout e o suporte USB Host fornecido pelo Arduino Mega ADK.
O breakout nRF52 da SparkFun e o Arduino Mega comunicam-se via I2C. O nRF52 é o mestre I2C, solicitando mensagens MIDI do Arduino Mega. As mensagens recebidas do Arduino Mega são enviadas através do serviço BLE do nRF52. O sketch rodando no Arduino Mega responde a requisições I2C, lendo mensagens MIDI de seu controlador USB Host integrado e escrevendo-as no nRF52.

O breakout SparkFun precisa de cinco conexões:
- 3V3
- GND
- RST
- SDA (24)
- SCL (25)
Como o breakout nRF52 da SparkFun opera em 3V3 e o Arduino Mega opera em 5V, os três pinos lógicos são conectados através de um conversor de nível bi-direcional.
NOTA: As atribuições SDA e SCL devem ser redefinidas no arquivo variants.h da SparkFun. Para mais detalhes, consulte esta discussão do guia de conexão.
Carregue o sketch nRF52MidiWireMaster no breakout SparkFun e UsbMidiWireSlave no Arduino Mega. Em seguida, conecte seu instrumento no conector USB Host, conecte seu aplicativo iOS ao adaptador (procure por "nRFMIDI") e comece a tocar!
Arduino Uno / USB Host Shield / Bean+
O design final emprega a capacidade BLE do LightBlue Bean+, emparelhando-o com um USB Host Shield conectado a um Arduino Uno, como mostrado na foto abaixo. Um Arduino Mega ADK pode substituir a combinação USB Host Shield + Arduino Uno. O diagrama Fritzing mostra a versão Arduino Mega ADK.

Assim como no design anterior, os dois MCUs comunicam-se via I2C. O Bean+ é o mestre I2C, solicitando mensagens MIDI do Arduino Uno. As mensagens recebidas do Uno são enviadas através do serviço BLE do Bean. O sketch rodando no Uno responde a requisições I2C, lendo mensagens MIDI do USB Host Shield anexado e escrevendo-as no Bean+.
O Bean+ precisa de quatro conexões:
- GND
- 5V
- SDA (A4)
- SCL (A5)
NOTA: Mude o Bean+ para operação 5V.
Carregue o sketch BeanMidiWireMaster no Bean+ e carregue UsbMidiWireSlave no Arduino Uno. Em seguida, conecte seu instrumento no USB Host Shield, conecte seu aplicativo iOS ao adaptador (procure por "Bean+") e comece a tocar.
Por motivos de desempenho, o suporte para mensagens de canal Control Change e After Touch foi comentado no sketch, mas pode ser habilitado em uma versão futura.
Código
CurieUsbMidiBridge.ino
Usar com Arduino 101 + Hobbytronics USB HOST-MIDI
https://github.com/joebowbeer/CurieUsbMidiBridge
nRF52MidiWireMaster.ino
Carregar no breakout nRF52 e carregar UsbMidiWireSlave.ino (veja abaixo) no Arduino conectado ao instrumento MIDI USB.
https://github.com/joebowbeer/nRF52MidiWireMaster
BeanMidiWireMaster.ino
Carregar no Bean+ e carregar UsbMidiWireSlave.ino (abaixo) no Arduino conectado ao instrumento MIDI USB.
https://github.com/joebowbeer/BeanMidiWireMaster
UsbMidiWireSlave.ino
Carregar no Arduino ADK (ou Arduino Uno + USB Host Shield). Lê mensagens MIDI do instrumento MIDI USB e escreve no mestre Wire (I2C).
https://github.com/joebowbeer/UsbMidiWireSlave
Esquemáticos
- Conectando Arduino 101 com Hobbytronics USB HOST-MIDI
- Conectando Arduino ADK com Sparkfun nRF52 Breakout
- Conectando Arduino ADK com LightBlue Bean+
Processo de manufatura
- Construa uma Rede de Sensores Sem Fio Acessível para Sua Casa
- Transferência de Dados Magnética Sem Fio com Arduino e Sensor 3D Infineon
- Construa um Spybot Controlado por Bluetooth com Arduino
- FlickMote: Controle Remoto IR por Gestos para Casa Inteligente
- DIY Arduino TV B-Gone: Controle Remoto Universal para Todas as TVs
- Construa um Relógio Mestre LED Personalizado com Alarme – Visível a 12 Metros
- Unopad: Controlador MIDI Arduino Perfeito para Ableton Live
- Jogo Breakout Touch com Arduino: Arcade Clássico em LCD TFT 2,4″
- Transforme seu Teclado MIDI em Tutor de Piano Inteligente com Arduino, LEDs e MuseScore
- Find Me: Localizador Inteligente de Objetos com Arduino e Bluetooth