Catégories
Liens
Ceci est une ancienne révision du document !
Cette page est destinée à faire comprendre comment faire apparaître la carte Arduino comme un appareil midi via USB. C'est très utile pour éviter d'installer les drivers sur les ordinateurs, comme dans une salle de classe de Collège où tous les ordinateurs sont sur un Windows décentralisé.
Cette technique fonctionne avec les cartes UNO, MEGA et semble-t-il Leonardo. L'idée est de reprogrammer le micro-contrôleur (atmega8u2 ou atmega16u2) dédié à la communication entre le port USB et le micro-contrôleur principal. Par défaut le programme permet une communication série, mais en le changeant nous pouvons faire apparaître une Arduino en tant qu'appareil Midi, Joystick ou clavier.
Ressources :
Sur une Carte Arduino UNO rev.3, il s'agit du ATMEGA16U2. Pour reprogrammer cette puce, il faut installer un programmeur, le dfu-programmer (voir DFUProgramming8U2). DFU pour Device Update Firmware.
Sur UBUNTU/Linux, cela semble très facile :
sudo apt-get install dfu-programmer
Mais la version semble ancienne (0.6.2) et ne pas prendre en compte la cible recherchée “atmega16u2”.
dfu-programmer --version dfu-programmer --targets
Pour mettre à jour, 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
La bonne version (0.7.2) et enfin dans la liste des cibles (targets), nous avons bien “atmega16u2”
dfu-programmer --version dfu-programmer --targets
Pour reprogrammer la puce (flash) :
1-Reset
Il faut d'abord faire un reset de la puce. Pour cela 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 ici avec un jumper (pins ISP). Voir une vidéo.
À 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
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%).
Ce firmware permet de basculer en mode MIDI (par défaut) ou en mode serial en connectant les pins 4 et 6 avec un jumper, comme sur cette photo.
Vous pouvez ainsi assez facilement programmer l'Arduino normalement et ensuite utiliser l'Arduino comme appareil MIDI. Pour basculer il faut débrancher/rebrancher le câble USB.