Main

Carte Arduino UNO : Mise à jour du micro-logiciel de communication USB.

Le problème

  • Sur les Duemilanove, le CI utilisé pour la communication Série USB entre Arduino et le port USB était un CI FTDI qui fonctionne très bien. Avec la version Arduino UNO, ce CI a été remplacé par un nouveau CI dédié utilisant un micro-logiciel dédié. Ce changement entraîne des problèmes de communication entre le PC et la carte Arduino Uno sous Ubuntu. Ceci est vrai pour les versions avant mai 2011 apparemment.

La solution

  • Sur ces versions de carte Arduino UNO antérieures à mai 2011, il est nécessaire de mettre à jour le micrologiciel de communication USB de la carte UNO, ce qui se fait par le port USB. Voir ici la page décrivant la manip : http://arduino.cc/en/Hacking/DFUProgramming8U2

Procédure sous Ubuntu 10.04 LTS

  • On commence par installer le logiciel de programmation via une ligne de commande (ou depuis Synaptic) :
sudo apt-get install dfu-programmer
  • Ensuite télécharger ici la dernière version du micro-logiciel (firmware) : https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares ou bien utiliser celui qui se trouve dans le répertoire principal Arduino-xxx/hardware/arduino/firmware/arduino-usbserial
  • J'ai utilisé la version : Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3
  • Ensuite, si la carte UNO n'est pas une version SMD, c'est à dire si l'ATMega 328 de la carte n'est pas un CMS comme sur la photo :

Carte Arduino UNO SMD

  • Si le processeur de la carte n'est pas comme sur la photo et est donc bien un boitier DIL (avec des pattes), il faut souder une résistance derrière, de 10K (marron - noir- orange)... Je sais, çà fait bricolo... mais bon, les "pionniers essuient les plâtres"... !
  • Une fois fait, il faut initialiser le CI de communication USB en connectant transitoirement à l'aide d'un strap 2 des broches de la carte selon :

Pour la Mega 2560, l'initialisatino est un petit peu différente :

  • Retourner la carte branchée au port USB
  • Repérer les contact vert et rouge
  • Court-circuiter les 2 contacts verts et les garder connectés
  • Tout en gardant connectés les 2 contacts verts, court-circuiter également les 2 contacts rouge transitoirement
  • Ensuite déconnecter les contacts verts

Faire comme on peut pour y arriver : à 4 mains... avec les pieds... plus sérieusement avec un bout de scotch et un bout de fil, on garde facillement les 2 verts en contact.

Truc trouvé ici : http://www.gr-slb.com/blog/2011/04/02/arduino-mega-2560-upgrade/

Les Leds Rx/Tx qui clignotaient se sont arrêtées de clignoter.

  • Ensuite, aller dans le répertoire où vous avez mis/trouvé le fichier *.hex . Pour moi, c'est :
cd /home/user/Téléchargements/arduino-1.0/hardware/arduino/firmwares/arduino-usbserial
  • Ensuite, on efface le micrologiciel actuel avec la commande
sudo dfu-programmer at90usb82 erase

A ce moment là, la LED RX s'allume.

  • A présent, on lance la programmation avec le nouveau micrologiciel avec la commande :
sudo dfu-programmer at90usb82 flash Arduino-usbserial-atmega16u2-Uno-Rev3.hex

Pour la Mega 2560, çà sera :

sudo dfu-programmer at90usb82 flash Arduino-usbserial-atmega16u2-Mega2560-Rev3.hex

Les 2 LEDs TX et RX s'allument. Le message suivant est obtenu dans la console :


Validating...
4034 bytes used (49.24%)
 
  • On termine la procédure avec la commande de réinitialisation du CI de communication USB avec la commande :
sudo dfu-programmer at90usb82 reset

La LED RX seule reste allumée puis s'éteint.

  • Voilà, cette fois, c'est fini ! A présent, débrancher puis rebrancher le câble USB de la carte. Ouvrir le logiciel Arduino, ouvrir un programme, choisir carte UNO et choisir le port ACM0 (ou équivalent) qui doit être présent dans la liste.
  • La carte Arduino UNO fonctionne alors parfaitement : youpi !