Résoudre le problème de téléversement avec Arduino Nano sous Windows 7

J'ai longtemps blâmé le câble USB "hybride" USB -> Mini USB que je me suis bricolé pensant que c'était la cause du problème. Hier soir j'ai décidé de me pencher dessus après avoir procrastiné tout ce temps, et j'ai enfin pu trouver une solution.

Dans ce qui suit, les screenshots seront en italien, je vais donc essayer de donner une traduction aussi correcte que possible, même si mon italien est.. pitoyable, pour n'utiliser qu'un euphémisme.

Sì, corretto

Le problème fait surface quand on essaie de téléverser un programme sur son Arduino Nano. Au bout de quelques instants, le processus s'arrête avec le message d'erreur suivant :

avrdude: stk500_getsync(): not in sync: resp=0x00

Pas très informatif, vous ne trouvez pas ? Après quelques recherches sur internet, j'ai constaté que c'était un problème très répandu, et qu'il était généralement question de pilotes et non d'un matériel défectueux comme on pourrait y penser au premier abord. Plusieurs solutions ont été proposées, mais aucune n'a fonctionné pour moi : utiliser des drivers plus récents, installer des drivers plus anciens, que ce soit de façon automatique ou manuelle. Changer certaines options du périphérique (notamment le baud rate) n'a pas abouti non plus.

J'ai fouillé internet sans succès, jusqu'à ce que je tombe sur ce post dont voici la traduction :

"J'ai pensé que celui que j'avais était défectueux, j'ai donc acheté un autre de marque légèrement différente. Il a nécessité l'ancien pilote qui est toujours disponible sur le site web de FTDI. L'installateur est plus facile à utiliser, mais si vous mettez à jour le pilote de façon manuelle, vous devrez faire de même pour le pilote de bus USB - tous à partir des propriétés du périphérique dans le gestionnaire de périphériques Windows."

La réponse d'en dessous confirme le succès de la méthode :

"Comme tu l'as proposé il faudra mettre à jour les DEUX pilotes : celui présent dans l'onglet 'Port COM', mais aussi l'autre qui est quant à lui présent dans l'onglet 'Contrôlleurs USB'".

Voilà donc le détail qui me manquait. Je m'en étais douté auparavant car le fichier contenant les pilotes comportait ftdibus.inf ainsi que ftdiport.inf, or moi j'installais ptdiport.inf en premier alors que je devais commencer par l'autre. Si vous en faîtes autrement, le pilote aura l'air d'être installé avec succès mais le téléversement ne fonctionnera pas.

Sans plus tarder, je me rends au gestionnaire de périphériques et je désinstalle le pilote du "port série USB" :

J'enlève puis je réinsère ensuite le câble USB, et là Windows détecte un nouveau matériel :

Ensuite, je double clique dessus et j'appuie sur le bouton "Mettre à jour le pilote" > Chercher le pilote sur l'ordinateur > Sélectionner le pilote manuellement > Contrôlleur USB > Disque du pilote > Parcourir > ftdibus.inf > USB Serial Converter > Suivant > Oui

Même procédure pour le nouveau périphérique qui sera détecté juste après, sauf qu'il faudra choisir "Ports COM et LPT" au lieu de "Contrôlleur USB" dans la liste qui s'affiche, et indiquer le fichier ftdiport.inf après avoir cliqué sur "Parcourir".

Si tout se passe bien, vous devriez avoir les deux périphériques suivants dans le gestionnaire de périphériques :

Le téléversement s'achève désormais avec succès :^D

Pour info, l'objectif final de toute cette galère est de tenter de faire tourner du code Ada sur l'Arduino. J'ignore si c'est possible, mais ça devrait l'être en théorie : grâce à WinAVR ou avr-ada, ça peut devenir une réalité. D'autres futurs projets incluent la création d'un programmateur de PIC16F84 et faire tourner du D sur l'Arduino (ou plutôt sur ATMega328p) mais ça, c'est une idée vraiment tirée par les cheveux.

Commentaires

Posts les plus consultés de ce blog

Writing a fast(er) youtube downloader

My experience with Win by Inwi

Porting a Golang and Rust CLI tool to D