Pourquoi Arduino affiche « stk500_getsync() » sur les cartes Nano en classe

Cette erreur traduit presque toujours une discordance de vitesse en bauds lors du téléversement. Sélectionner « ATmega328P (Old Bootloader) » dans les paramètres du processeur résout immédiatement le problème sur les cartes clones.
Lorsque l'IDE Arduino renvoie avrdude: stk500_getsync(): not in sync: resp=0x00 (ou resp=0x15) pendant le téléversement sur un Arduino Nano, votre carte n'est presque certainement pas endommagée. Dans neuf cas sur dix en classe, l'ordinateur a simplement tenté de communiquer avec la carte à 115 200 bauds alors que le microcontrôleur attendait une synchronisation à 57 600 bauds. Il n'est pas nécessaire de remplacer le matériel : il suffit de modifier une option dans le menu Outils.
La solution en deux minutes : passer à l'« Old Bootloader »
Avant de tester des câbles, de réinstaller les pilotes ou de jeter la carte au recyclage, appliquez ce réglage dans l'IDE Arduino :
- Allez dans Outils > Type de carte > Arduino AVR Boards > Arduino Nano.
- Cliquez sur Outils > Processeur.
- Remplacez la sélection ATmega328P par ATmega328P (Old Bootloader).
- Vérifiez que le bon port COM est sélectionné sous Outils > Port, puis cliquez à nouveau sur Téléverser.
Si le croquis se compile et se téléverse sans encombre, le problème est résolu pour tout ce lot de cartes. Vous pouvez identifier ces cartes à l'aide d'un morceau d'adhésif de couleur afin que les élèves sachent quel profil de processeur sélectionner pendant les travaux pratiques.
Ce que signifie réellement « stk500_getsync() »
Le protocole stk500 est le standard de communication série utilisé par les microcontrôleurs AVR pour écrire les fichiers binaires compilés dans la mémoire flash. Lorsque vous cliquez sur Téléverser dans l'IDE Arduino, le logiciel compile votre code, puis fait appel à un utilitaire en ligne de commande nommé avrdude.
avrdude envoie une impulsion sur la ligne DTR de la liaison série pour réinitialiser la puce ATmega328P. Lors de cette réinitialisation, un petit programme préinstallé appelé bootloader (chargeur d'amorçage) s'exécute pendant environ une seconde avant tout croquis utilisateur. Durant cette brève seconde, le bootloader écoute sur ses broches série (RX et TX) pour détecter un signal de synchronisation envoyé par l'ordinateur : une séquence d'octets spécifique qui indique en substance : « J'ai un nouveau code pour toi. »
Si avrdude transmet ce paquet de synchronisation et ne reçoit qu'un silence complet ou des caractères incompréhensibles au lieu de l'octet d'acquittement attendu, il abandonne et signale stk500_getsync(): not in sync. Cette erreur ne traduit pas une défaillance matérielle interne : il s'agit simplement d'un dépassement de délai de connexion.
Pourquoi les clones de Nano présentent cet écart
Au début de l'année 2018, Arduino a mis à jour la carte de référence officielle Nano. Le bootloader ATmega historique a été remplacé par Optiboot, un bootloader plus léger qui communique à 115 200 bauds et n'occupe que 512 octets de mémoire flash au lieu de 2 048 octets. L'entrée standard « ATmega328P » dans l'IDE a alors été actualisée pour émettre à 115 200 bauds afin de s'adapter à cette nouvelle norme.
Cependant, l'immense majorité des cartes Nano présentes dans les salles informatiques et les kits STEM des établissements scolaires sud-africains sont des cartes tierces. Ces cartes s'articulent généralement autour du circuit intégré de pont USB-série CH340 plutôt qu'autour des puces FTDI FT232RL ou ATmega16U2 utilisées sur les cartes italiennes d'origine. Les fabricants étrangers produisant ces modules à bas coût ont continué d'installer le microprogramme d'origine éprouvé ATmegaBOOT, qui écoute strictement à 57 600 bauds.
Lorsqu'un élève sélectionne ATmega328P, l'IDE tente de négocier la connexion à 115 200 bauds. Le bootloader du Nano, qui écoute à 57 600 bauds, interprète les impulsions reçues comme des erreurs de trame ou du bruit parasite, et ne répond pas. L'ordinateur attend, ne reçoit aucun signal en retour et renvoie resp=0x00.
| Sélection du processeur dans l'IDE | Bootloader attendu | Vitesse de téléversement | Carte correspondante type |
|---|---|---|---|
| ATmega328P | Optiboot | 115 200 bauds | Arduino Nano officiel (après 2018) |
| ATmega328P (Old Bootloader) | ATmegaBOOT | 57 600 bauds | Clones de Nano scolaires standards (CH340/FTDI) |
| ATmega168 | ATmegaBOOT historique | 19 200 bauds | Cartes économiques plus anciennes avec 16 Ko de flash |
Les causes secondaires : broches 0 et 1, et alimentation
Si le passage d'une option de bootloader à l'autre ne résout pas l'erreur, passez en revue cette courte liste de vérifications matérielles avant de considérer qu'un microcontrôleur est hors service :
- Composants connectés aux broches D0 (RX) et D1 (TX) : c'est l'erreur matérielle la plus fréquente dans une classe animée. Les broches 0 et 1 du Nano sont physiquement reliées au convertisseur USB-série de la carte. Si un élève a câblé un module Bluetooth, un récepteur GPS, un capteur à ultrasons ou même une LED sur la broche 0 ou 1, ce circuit externe force les lignes série à l'état haut ou bas pendant le téléversement. Débranchez tous les fils de liaison de D0 et D1, téléversez le code sur la carte, puis rebranchez-les une fois l'opération terminée.
- Pilotes de pont USB manquants : les ordinateurs sous Windows n'intègrent pas toujours les pilotes pour les puces CH340 ou CP2102 fréquemment utilisées sur les Nano économiques. Si le menu Outils > Port est totalement grisé, le système d'exploitation ne détecte pas du tout l'interface série. L'installation du package de pilotes standard WCH CH341SER règle définitivement ce problème sur les chariots informatiques et les ordinateurs fixes de l'établissement.
- Câbles USB de charge uniquement : de nombreux câbles mini-USB fins fournis avec du matériel électronique économique ne contiennent que deux conducteurs d'alimentation et omettent les lignes de données D+ et D-. Si les LED du Nano s'allument mais qu'aucun port COM n'apparaît dans le Gestionnaire de périphériques, remplacez le câble par un cordon de données testé.
- Baisse de tension sur le bus : lorsqu'un élève branche plusieurs composants à forte consommation (comme des servomoteurs ou des modules de relais) directement sur la broche 5V du Nano, la tension du port USB peut chuter dès la connexion, bloquant l'ATmega328P dans un cycle ininterrompu de réinitialisations pour baisse de tension (brown-out reset) où le bootloader ne se stabilise jamais. Débranchez le rail 5V de la platine de prototypage (breadboard) et tentez le téléversement avec le microcontrôleur isolé.
Gérer efficacement un parc de matériel hétérogène
Dans une salle informatique scolaire de quarante postes avec des bacs de matériel partagés, mélanger des cartes officielles, des premiers clones et des cartes récentes équipées d'Optiboot sème la confusion chez les enseignants, qui perdent un temps pédagogique précieux à dépanner des microcontrôleurs visuellement identiques. Deux solutions pratiques permettent de simplifier la gestion :
La première consiste à étiqueter les cartes. Classez vos cartes par lot, réalisez un téléversement de test sur chacune d'elles et marquez toutes celles nécessitant l'Old Bootloader d'un trait de marqueur indélébile ou d'un ruban adhésif de couleur. Apprenez aux élèves à vérifier le marquage de la carte avant d'ouvrir l'IDE.
La seconde solution consiste à reprogrammer l'ensemble des cartes de la classe avec le nouveau bootloader Optiboot à l'aide d'un programmateur ISP (In-System Programmer) ou d'un autre Arduino fonctionnel configuré en « Arduino as ISP ». Remplacer l'ancien bootloader permet d'aligner toutes les cartes sur 115 200 bauds et de libérer 1,5 kilooctet de mémoire de programme sur chaque puce. Pour les établissements qui gèrent des stocks de composants partagés ou préparent du matériel pour des équipes en compétition, disposer d'une procédure standardisée de test sur banc évite des heures d'interruption en classe. Si votre département a besoin d'aide pour auditer les équipements de laboratoire ou se procurer des kits scolaires homogènes et vérifiés, notre équipe accompagne directement les écoles par le biais de Sheen Robotics School Services.
Une erreur stk500_getsync() provient presque toujours d'un problème de communication logicielle et non d'une détérioration physique. Avant d'engager le budget de l'établissement pour remplacer des cartes récalcitrantes, basculez le menu déroulant du processeur sur Old Bootloader et débranchez les broches numériques 0 et 1.



