Go Down

Topic: ARDUINO : problèmes de téléversement  (Read 562 times) previous topic - next topic

hbachetti

Oct 20, 2018, 03:03 pm Last Edit: Oct 22, 2018, 01:37 pm by hbachetti
Dans ce tuto nous allons essayer de recenser toutes les sources possibles de problèmes pendant le téléversement d'une carte ARDUINO.
J'ai essayé de regrouper ici une certaine quantité de problèmes rencontrés sur le forum. Ce n'est certainement pas complet mais cela pourrait le devenir avec le temps.

1. Le principe
Lors du téléversement L'IDE ARDUINO affiche le message "Téléversement ...".
Ensuite les opérations suivantes s'enchaînent :

    reset de la carte par le fil DTR de la liaison série
    le bootloader de l'ARDUINO se met à l'écoute de la ligne série
    l'IDE envoie le fichier .hex au bootloader
    celui-ci extrait les données binaires de chaque message et les écrit dans la mémoire FLASH
    le bootloader lance l'application

Trop de débutants  confondent compilation et téléversement. Le code C n'est pas envoyé à l'ARDUINO tel quel, il est d'abord compilé pour fabriquer un fichier en langage machine, dépendant du processeur utilisé.
Dans un premier temps, l'IDE affiche "Compilation du croquis". S'il y a un problème dans votre code, le fichier .hex ne sera pas généré et le téléversement n'aura pas lieu.
Ensuite, si la compilation s'est bien passée, il affiche "Téléversement ...", et c'est à ce moment que les ennuis peuvent commencer.

2. Les drivers USB
Selon l'OS que vous utilisez, il vous faudra installer on non un driver pour le convertisseur USB / série implanté sur la carte.
Selon l'origine le convertisseur peut être de différents types :

    FT232RL
    CH340G
    ATMEGA8 (anciennes version de UNO ou MEGA)
    ATMEGA16U2
    etc.

2.1. Windows
Il faut absolument identifier le convertisseur et utiliser le driver adapté. Pour une NANO par exemple, celui-ci est situé sous la carte.

Il y a beaucoup de tutos sur le WEB qui expliquent cette opération, CELUI-CI par exemple.

Si votre carte possède un convertisseur CH340G, il faut télécharger le driver ICI. Il y a aussi des tutos, dont CELUI-CI.

Après l'installation, en branchant la carte ARDUINO, un port série supplémentaire doit apparaître dans le "Gestionnaire de Périphériques".
En débranchant la carte le port doit disparaître.

2.2. LINUX
Les possesseurs d'un système LINUX n'auront pas à installer de driver, car la majeure partie de ceux-ci font partie de la distribution.
Il suffit de vérifier avec dmesg que le branchement de  la carte ARDUINO provoque la création d'un nouveau port de communication.

[11319.753230] usb 2-1.1.1: new full-speed USB device number 12 using ehci-pci
[11319.846506] usb 2-1.1.1: New USB device found, idVendor=1a86, idProduct=7523
[11319.846512] usb 2-1.1.1: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[11319.846515] usb 2-1.1.1: Product: USB2.0-Serial
[11319.846943] ch341 2-1.1.1:1.0: ch341-uart converter detected
[11319.848601] usb 2-1.1.1: ch341-uart converter now attached to ttyUSB1

A la déconnexion, avec dmesg vous verrez ceci :

[11484.934167] usb 2-1.1.1: USB disconnect, device number 12
[11484.934444] ch341-uart ttyUSB1: ch341-uart converter now disconnected from ttyUSB1
[11484.934479] ch341 2-1.1.1:1.0: device disconnected

Il se peut que l'IDE ne parvienne pas à ouvrir le port par manque de privilèges. Suivez ces INSTRUCTIONS.

2.3. La suite
Tant que le port n'apparaît pas dans le "Gestionnaire de Périphériques" Windows ou dans les messages affichés par dmesg, c'est tout à fait inutile d'aller plus loin.
Cette étape est essentielle et obligatoire.

3. Les problèmes
3.1. Les broches de la carte
Certaines cartes dont la NANO, sont livrées avec deux barrettes de broches mâles. Ces barrettes doivent être soudées proprement sur la carte.
Cela ne devrait pas gêner le téléversement si les elles ne le sont pas, mais l'exécution du code pourrait poser problème.
Certains ont déjà essayé de faire tourner une application avec les barrettes enfichées dans une breadboard et la carte simplement posée dessus, sans soudures. Et ce n'est pas une blague, c'est malheureusement arrivé !

3.2. Le type de carte et le processeur
Le bon type de carte doit être sélectionné dans le menu "Outils / Type de carte".
Pour certaines cartes le processeur peut être choisi dans le menu "Outils / Processeur".

Cas particulier : avec l'ARDUINO NANO vous avez le choix entre :

    ATmega328p
    ATmega328p (Old Bootloader)
    ATmega168

Le choix "ATmega328p (Old Bootloader)" correspond à une ancienne version du bootloader. Si en choisissant "ATmega328p" le téléversement ne fonctionne pas choisissez "ATmega328p (Old Bootloader)".

L'ARDUINO PRO MINI se décline en quatre versions :

    ATmega328p (5V, 16MHz)
    ATmega328p (3.3V, 8MHz)
    ATmega168 (5V, 16MHz)
    ATmega168 (3.3V, 8MHz)

Choisissez bien l'option qui correspond à la carte que vous avez acheté. Si par exemple dans votre code vous ouvrez la ligne série à 115200 baud, que vous avez choisi l'option 115200 dans le moniteur série et que vous voyez des caractères étranges s'afficher, il est probable que la fréquence choisie pour le processeur ne soit pas la bonne.

3.3. L'USB
Le port de communication doit être choisi dans le menu "Outils / Port".
Il peut arriver que vous ayez plusieurs cartes branchées et que le port choisi ne corresponde pas à la carte voulue.
Vérifiez en branchant et débranchant la carte que le port choisi est le bon.
Lorsque l'on débute il vaut mieux travailler avec une seule carte à la fois.

Une source de problème peut être le câble USB. Utilisez un câble court et en bon état. Les cas de panne due au câble sont plutôt rares.

3.4. La ligne série
Le convertisseur USB / série envoie les caractères à transmettre à la ligne série de l'ATmega.
Les deux pins D0 (RX) et D1 (TX) ne doivent pas être reliées à d'autres composants ou modules (Bluetooth par exemple) pendant le téléversement.
Certaines cartes, la DUE par exemple, possèdent un port USB dédié. Utiliser de préférence ce port dit "Native USB Port".

3.5. Logiciels annexes
Certains logiciels peuvent bloquer l'accès au port série. Fermez tous les programmes susceptibles d'ouvrir les ports de communication, les terminaux série en particulier.
Certains dongles peuvent également poser problème, y compris certains dongles de souris / clavier. Essayez en les retirant.

3.6. Le RESET
Sur certaines cartes, le RESET automatique peut ne pas fonctionner, ou ne pas fonctionner avec certains PC.
Appuyez sur le bouton RESET un peu avant que le téléversement ne commence.

3.7. La panne
Vous avez peut effectué une manipulation précédente (erreur de tension d'alimentation par exemple) qui a détruit le convertisseur USB ou le processeur.
Si l'un des deux composants chauffe, il est probablement mort.
Cela vous incitera certainement à ne jamais commander une seule carte, sauf pour les modèles dont le prix est élevé.

3.8. Le bootloader
Il peut arriver que le bootloader soit détruit accidentellement à cause par exemple d'une chute lente de l'alimentation et des fuses mal programmés.

Dans un premier temps, il est judicieux de déterminer si c'est réellement la cause du problème. Lorsque vous appuyez sur le bouton RESET, la LED connectée sur la pin 13 doit s'allumer brièvement. Si ce n'est pas le cas, le bootloader est absent.

Il est possible de reprogrammer le bootloader en utilisant une autre carte UNO par exemple. Cette opération s'effectue en reliant le bus SPI de la UNO au connecteur ICSP de la carte à reprogrammer.

Un tuto est disponible ICI.

On peut également utiliser un programmateur USBasp.

Sous LINUX, j'ai écrit un tuto ICI.

Il y a CELUI-CI aussi.

4. Travailler sans le bootloader
Le bootloader ARDUINO n'est pas absolument nécessaire. On peut fort bien s'en passer en utilisant un programmateur comme celui décrit dans le paragraphe précédent.

Cela permet de gagner 2K en mémoire FLASH.
Le port USB de votre carte pourra être connecté au PC pour bénéficier du moniteur série (console).

Dans l'IDE ARDUINO, choisir dans le menu Outils / Programmateur : "USBasp" ou "Arduino as ISP" ou un autre programmateur de votre choix.
Dans le menu Croquis / Téléverser avec un programmateur

Pour revenir à la situation "normale", avec bootloader et téléversement par l'USB, choisir dans le menu Outils / Graver la séquence d'initialisation.

5. Références
Le guide officiel
La version BLOG
@+

Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

hbachetti

#1
Oct 20, 2018, 03:16 pm Last Edit: Oct 20, 2018, 03:23 pm by hbachetti
Les liens ne sont pas passés dans le copier / coller.
Correction en cours ...
##### EDIT #####
Fait.
Les ajouts et suggestions sont les bienvenus.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

lesept

Très bon tuto, qui j'espère évitera des messages à répétition...
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

hbachetti

C'est justement ce que je recherche, éviter de répéter à l'infini les mêmes phrases et les mêmes conseils.

merci lesept
@+
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

dfgh


hbachetti

Cela me trottait dans la tête depuis un moment.

merci dfgh
@+
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

Go Up