Hiduino – Transforme seu Arduino em um dispositivo USB-MIDI Class Compliant

E aí pessoal! O tutorial de hoje é dedicado aos makers que já estão fazendo ou pretendem fazer seus controladores MIDI com Arduino. Já faz alguns anos que eu venho fazendo para mim e vendendo controladores MIDI feitos com Arduino e havia uma coisa que sempre me desagradou nesse tipo de controlador.

Para quem quer aprender a fazer seus controladores com Arduino, eu preparei um curso que vai te ensinar tudo o que você precisa saber para construir seus próprios controladores o: >> Fazendo Música com Arduino <<

Quem já viu meus vídeos sobre como fazer um controlador MIDI (assista aqui) sabe que o Arduino utiliza o protocolo serial para se comunicar através da porta USB e que, portanto, precisamos converter esse protocolo para MIDI, através do software Hairless MIDI e depois ainda mandar ele para uma porta MIDI virtual, como o IAC Driver (Mac), ou LoopBe (Windows). Ou seja, acaba sendo um pé no saco ter que trabalhar com mais softwares no meio do caminho.

A boa notícia é que há a possibilidade de transformar alguns Arduinos em um verdadeiro dispositivo MIDI USB, sem softwares no meio do caminho. A má notícia é que isso só funciona em alguns modelos, no Uno e no Mega, e a gente vai ver por quê.

Os Arduinos, em geral, possuem dois microcontroladores, um para executar o código e outro para fazer a conversão para serial e mandar pela porta USB. O Arduino Uno e Mega possuem o microcontrolador Atmega16U2 ou Atmega8U2 para fazer essa ponte entre o computador e o Arduino. Esse uC (micrcontrolador) pode ter sua firmware alterada para ser reconhecida como um dispositivo MIDI-USB, com o custo que não se poderá fazer mais o upload de outras sketches pela USB, a menos que se coloque a firmware anterior de volta. Portando, Arduinos mais baratos, ou outros modelos, com outros conversores, como o CH340, não irão funcionar.

Para fazermos isso seguiremos o projeto Hiduino, um projeto criado para criar firmwares e a documentação necessária para transformar o seu Arduino em um dispositivo USB-MIDI class compliant.

Aqui vai um exemplo com um controlador que estou fazendo:

Esse tutorial é um resumo de tutoriais que achei por aí, principalmente desse instructable daqui, assim como suas imagens, o qual devo todos os créditos! Ele foi feito pelo pessoal da Yaeltex, os quais sou imensamente grato e recomendo altamente a visita!

Então, vamos aos passos!

1 – Recompile e dê um nome ao seu Hiduino

Para isso você vai usar esta ferramenta criada pelo pessoal da Yaeltex chamada “Pimp my mocoLUFA“. Neste site escolha o nome que você dará ao seu controlador, escolha sua placa, clique em “compile” e salve o seu arquivo.

2 -Softwares necessários

** Atualização **Agora está mais fácil da fazer o upload da nova firmware. Aconselho você a olhar estes sites também:
Como fazer o upload da firmware sem outro Arduino
Como usar o Arduino com a mesma firmware tanto para serial quanto para MIDI

Agora é hora em que vamos fazer o upload da nova firmware no uC Atmega16U2/8U2.
Tenha muito cuidado nesta hora, pois uma vez instalada a nova firmware, você não será capaz de fazer upload de novas sketches através da USB. Entretanto, você poderá colocar novas sketches diretamente no uC principal através da porta ICSP com um ISP programmer ou um outro Arduino como um ISP programmer.

Para fazer o flash da nova firmware você vai precisar dos softwares:
Windows:
WinAVR – Para usar o avrdude
MacOS:
Crosspack – Para usar o avrdude
A últimas versões da:
IDE do Arduino
Biblioteca MIDI

3 – Conectando o programador

Para este passo você irá precisar de um ISP programmer (gravador USB), ou outro Arduino. Se você for utilizar o ISP programmer, pule os passos abaixo.

Se você for utilizar um Arduino como programador, utilize um Arduino Uno (o programador) com suas portas digitais 10, 11, 12, 13, 5v e gnd ligadas na porta ISP do Arduino a ser programado, de acordo com as imagens abaixo. Note que há a necessidade de usar um capacitor eletrolítico de 10uF com o positivo no Reset e o negativo no gnd.

4 – Sobre o AVRDUDE

O Flash do Hiduino será feito através de linha de comando e pra isso utilizaremos o comando “avrdude”.
Ele possui várias opções, tais como:
“-p” – Neste lugar coloque qual uC está sendo programado. Como: at90usb162 (Atmega16U2) ou at90usb82 (Atmega8U2).
“-P” Esta é a porta que está sendo usada para a comunicação. Normalmente usaremos usb para USB (se você usar o AVRISPMKII), COMx para um porta serial virtual no Windows, ou /dev/cu.usbserial ou /de/cu.KeySerial1 para serial no Mac. Neste caso, aconselho a olhar na IDE do Arduino em “porta” para ter certeza de qual está usando.
“-b” – Isto serve para substituir a baud rate da porta serial para programmers como o STK500. Deixe em 19200 se você estiver usando um Arduino como programador, em outro caso, não use esta opção.
“-c” – Aqui você especifica o tipo de programador que está usando. Escolha se você estiver usando um Arduino ou um AVRISPMKII.
“-U” – Este é um comando importante. É este que faz a programação.

5 – Transformando o Arduino em programador ISP

Este passo é apenas aos que vão utilizar o Arduino como programador ISP.
Com a IDE do Arduino aberta vá em exemplos e escolha “ArduinoISP”. Com o seu Arduino plugado na porta USB, escolha a sua placa e porta em “ferramentas” e faça o upload do código.

6 – Fazendo o flash da nova firmware com o avrdude

Abra a janela de terminal. No Windows vá em iniciar e digite “cmd” e aperte “enter”, no Mac aperte “command + space” e digite “terminal” e aperte “enter”.

Navegue até a pasta onde você salvou o seu arquivo .hex, que você fez com o Pimp My Arduino. Para navegar digite “ls” e aperte “enter” para ver todo os arquivos da pasta onde você está e “cd nome_da_pasta” para entrar na pasta desejada.
Execute um dos comandos abaixo de acordo com qual firmware você quer instalar e com que programador você está usando:

– Para fazer o flash da firmware HIDUINO:
Arduino como programador ISP:
avrdude -p at90usb162 -P COM10 -b 19200 -c arduino -U flash:w:arduino_midi.hex -v -F
Programador AVRISPMKII:
avrdude -p at90usb162 -P usb -c avrispmkii -U flash:w:arduino_midi.hex -v -F

– Para fazer o flash da firmware original do Arduino, para poder colocar outras sketches pela USB:
Arduino como programador ISP:
avrdude -p at90usb162 -b 19200 -P COM10 -c arduino -U flash:w:usbserial_uno_16u2.hex -v -F
Programador AVRISPMKII:
avrdude -p at90usb162 -P usb -c avrispmkii -U flash:w:usbserial_uno_16u2.hex -v -F

Depois de digitar umas das opções aperte “enter” para instalar a nova firmware. Quando terminado, você irá ver uma mensagem de sucesso. Lembre de alterar o que for necessário de acordo com as opções do avrdude, como porta, programador, nome do arquivo .hex, etc.

Erros comuns e suas possíveis soluções:
– Error: stk500_getsync(): not in sync: resp=0x15 o 0x00
Solução: Está faltando o capacitor de 10uF entre o reset e o gnd no Arduino programador.
– Error: Device signature: 0xXXXXXX Expected signature for BLABLA is 0xZZZZZZ.
Solução: Adicione ao final do comando “-F”, para substituir essa checagem.
– Error: avrdude: ser_open(): can’t open device “\\.\COMX”
Solução: O Arduino a ser programado ou o programador não está conectado.

9 – Seja feliz! (você será)

Agora o seu Arduino já deverá ser reconhecido como um dispositivo USB-MIDI Class Compliant, ou seja, da mesma forma que outros controladores MIDI de fábrica. 😀

Gostaria de lembrar que eu não sou nenhum expert nesse assunto e que este tutorial foi um adaptação, um resumo + meus comentários deste tutorial aqui, assim como as imagens aqui utilizadas.

De resto, ficarei feliz em tentar ajudar no que eu puder!

Caso você queira construir os seus próprios controladores MIDI, eu criei um curso onde ensino tudo isso, que você pode encontrar aqui: Fazendo Música com Arduino

Se você gostou (ou não) deste tutorial, ou tem dúvidas, não se esqueça de deixar o seu comentário abaixo!

Um abraço e até a próxima!

Leave a Comment

Your email address will not be published. Required fields are marked *