🛠 Récupérer un Micro bloqué : bootloader Caterina et rituel de l'upload
Objectifs
Comprendre le rituel d'upload du Micro (bootloader Caterina, protocole AVR109) et savoir récupérer une carte qui n'accepte plus aucun téléversement : fenêtre de 1200 bauds, reset manuel, puis reprogrammation du bootloader par ICSP en dernier recours.
Matériel
- 1 Arduino Micro (ou Pro Micro 32U4) + câble micro-USB de données
- En dernier recours : un programmateur ICSP (par exemple une autre carte Arduino en Arduino ISP) et un câble ISP 6 broches
Code complet
// Sketch-minimal de controle après récupération : clignotement + amorce CDC.
// Après un upload reussi, cette LED prouve que l'application tourne.
void setup {
pinMode(LED_BUILTIN, OUTPUT); // broche 13
Serial.begin(9600); // CDC USB
}
void loop {
digitalWrite(LED_BUILTIN, HIGH);
delay(200);
digitalWrite(LED_BUILTIN, LOW);
delay(200);
}
// Ritual d'upload Caterina :
// 1) L'IDE ouvre le port a 1200 bauds (upload.use_1200bps_touch) : le
// bootloader reste actif ~8 s puis redemarre sur l'application.
// 2) Si l'ouverture 1200 ne déclenche rien : appuyer sur RESET juste
// après l'affichage du message de televersement, dans la fenetre de 8 s.
// 3) En secours absolu : graver bootloaders/caterina/Caterina-Micro.hex
// via ICSP (arduino-cli ou IDE > Graver le bootloader).
Vérification attendue
Après double appui sur reset (ou 1200 bauds), le port USB disparaît puis réapparaît avec le PID bootloader (0x8037 pour 0x2341) ; l'upload aboutit et le sketch-minimal fait clignoter la LED 13 rapidement. En cas de reprogrammation ICSP, le fusible et le bootloader sont restaurés et l'upload redevient normal.
Erreurs fréquentes
- Lancer l'upload trop tard après le reset : la fenêtre Caterina ne dure qu'environ 8 secondes.
- Croire la carte morte alors qu'un sketch coupe USB ou attend Serial : maintenir reset pendant le branchement puis uploader dans la foulée.
- Mauvais port sélectionné : pendant le reset, le numéro de port COM peut changer (périphérique différent).
- Écrire un sketch qui désactive les interruptions globalement : Caterina peut alors rater l'horloge de reset ; le noyau Arduino gère le saut au bootloader, mais un code bas-niveau doit rester prudent (voir issues #122/#218).
- Confondre les PIDs : 0x0037 = port applicatif, 0x8037 = bootloader ; le Genuino Micro utilise le VID 0x2A03.
- Graver un hex de Leonardo sur un Micro : utiliser exclusivement Caterina-Micro.hex.
Autres tutoriels pour cette carte
- Faire clignoter la LED embarquée (et comprendre les LED TX/RX)
- Lire un bouton avec une résistance de pull-up interne
- Lire un capteur analogique sur le convertisseur 10 bits
- Transformer le Micro en clavier USB (HID) avec bouton de sécurité
- Pont Serial vers Serial1 : passerelle USB vers TTL
- Piloter un servo moteur avec le PWM et un potentiomètre
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinoclavier-auto-tape.inoArduinosouris-cercle.inoArduinotelecommande-media.inoArduinobouton-clic-souris.inoArduino