Wiki

Reso-nance numérique | Arts et cultures libres

Outils du site


Panneau latéral

logiciels:arduino-midi:accueil

Ceci est une ancienne révision du document !


Arduino et MIDI

Cette page est destinée à faire comprendre comment faire apparaître la carte Arduino comme un appareil midi via USB. Cette fonctionnalité est très utile car elle permet d'éviter l'installation de drivers sur les ordinateurs, comme dans une salle de classe de Collège où tous les ordinateurs sont sur un Windows décentralisé…

Seules les cartes UNO, MEGA et semble-t-il Leonardo peuvent être utilisée comme cela. En effet, sur ces cartes, il existe un petit micro-contrôleur (souvent atmega8u2 ou atmega16u2) qui est dédié à la communication entre le port USB et le micro-contrôleur principal. C'est l'interface de communication. Par défaut le programme à l'intérieur utilise une communication Midi, mais comme celui-ci est dorénavant programmable, nous pouvons le changer pour faire apparaître l'Arduino en tant qu'appareil Midi, Joystick ou clavier. Pour informations, sur les anciennes cartes Arduino, il n'y avait pas ce micro-contrôleur, il y avait un composant nommé FTDI, pour la communication série. Étant propriétaire, il n'est pas modifiable.

Ressources :

DFU-PROGRAMMER

Sur les cartes Arduino UNO rev.3, il faut pouvoir reprogrammer le micro-contrôleur ATMEGA16U2. Pour cela il faut d'abord installer un programme sur votre ordinateur qui va pouvoir communiquer avec lui : le dfu-programmer (DFU pour Device Update Firmware). Ressource : DFUProgramming8U2.

Sur UBUNTU/Linux, cette commande installe le programme:

sudo apt-get install dfu-programmer

Mais la version semble ancienne (0.6.2) et ne pas prendre en compte la cible recherchée ici “atmega16u2”.

dfu-programmer --version // pour vérifier la version
dfu-programmer --targets // pour lister les cibles, nous devrions y trouver atmega16u2

Il est donc nécessaire d'installer la dernière version. Télécharger la dernière version : https://sourceforge.net/projects/dfu-programmer/files/latest/download?source=files

sudo apt-get install build-essential libusb-1.0-0-dev
cd dfu-programmer-0.7.2/
./bootstrap.sh
./configure
make
sudo make install

Nous avons maintenant une version plus récente (0.7.2) et dans la liste des cibles (targets), nous avons enfin “atmega16u2”

dfu-programmer --version
dfu-programmer --targets

FLASHER

Pour reprogrammer la puce, on parle de flash.

1 - Reset
Il faut d'abord faire un reset de la puce. Il faut connecter la carte Arduino en USB à l'ordinateur et connecter le GND et RESET des pins mâles au dessus de la puce atmega16u2, avec un jumper par exemple. Ces pins sont utiles pour programmer un micro-contrôleur de l'extérieur (ISP). Voir une vidéo de la manipulation.

À partir de ce moment-là, la carte Arduino n'est plus reconnue en tant que périphérique USB/Série.

2 - Erase
Après avoir enlever le jumper. Vous pouvez entrer cette commande pour effacer le programme de la puce

sudo dfu-programmer atmega16u2 erase 
Checking memory from 0x0 to 0x2FFF...  Not blank at 0x1.
Erasing flash...  Success

3 - Remettre le programme par défaut
Ce n'est pas notre intention ici, mais vous pouvez revenir en arrière et remettre le programme par défaut, celui qui fait apparaître l'Arduino comme un appareil série.

Aller dans le répertoire de votre logiciel Arduino

cd ~/Softs/Arduino/hardware/arduino/avr/firmwares/atmega

Vous trouverez un fichier “Arduino-usbserial-uno.hex”, c'est lui que nous allons flasher pour retrouver le comportement par défaut de la carte.

 sudo dfu-programmer atmega16u2 flash Arduino-usbserial-uno.hex
Checking memory from 0x0 to 0xFFF...  Empty.
0%                            100%  Programming 0x1000 bytes...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]  Success
0%                            100%  Reading 0x3000 bytes...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]  Success
Validating...  Success
0x1000 bytes written into 0x3000 bytes memory (33.33%).

Vous devriez pouvoir réutiliser l'Arduino comme avant.

MIDI FIRMWARE

Flash atmega16u2

  1. Télécharger MOCOLufa et dézipper le: https://github.com/kuwatay/mocolufa
  2. Reset de l'atmega16u2, comme vu précédemment
  3. Erase
  4. Flash du firmware Midi : sudo dfu-programmer atmega16u2 flash mocolufa/HEX/dualMoco.hex
$ sudo dfu-programmer atmega16u2 flash dualMoco.hex 
Checking memory from 0x0 to 0x167F...  Empty.
0%                            100%  Programming 0x1680 bytes...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]  Success
0%                            100%  Reading 0x3000 bytes...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]  Success
Validating...  Success
0x1680 bytes written into 0x3000 bytes memory (46.88%).

C'est ce firmware qui permet de faire passer l'Arduino comme un périphérique Midi. C'est lui qui fait tout le travail ! En plus, il permet une autre fonctionnalité très pratique, de basculer en mode MIDI (par défaut) ou serial en connectant simplement les pins 4 et 6 de l'ISP, avec un jumper, comme sur cette photo.

Car vous ne pouvez pas reprogrammer l'Arduino en mode Midi. Vous ne pouvez le faire qu'en mode serial ou bien en passant par les pins ISP du micro-contrôleur principal. Vous pouvez ainsi assez facilement programmer l'Arduino et ensuite utiliser l'Arduino comme appareil MIDI. Pour basculer, il faut débrancher/rebrancher le câble USB.

Programme Midi

  1. Installer la bibliothèque MIDI dans votre dossier Arduino/libraries
  2. Passer l'Arduino en mode serial (voir au dessus). Débrancher, rebrancher. Vous verrez alors apparaître la carte dans le sélecteur de Ports du logiciel Arduino.
  3. Téléverser un exemple de la bibliothèque MIDI
  4. Passer l'Arduino en mode Midi en enlevant simplement le jumper. Débrancher, rebrancher.
  5. Visualiser le résultat sur un logiciel Midi
/home/resonancg/www/wiki/data/attic/logiciels/arduino-midi/accueil.1466785537.txt.gz · Dernière modification: 2016/06/24 18:25 de resonance