Problème de téléchargement Arduino Sketch - avrdude: stk500_recv (): le programmeur ne répond pas


133

J'ai un Arduino Duemilanove avec un ATmega328 . Je travaille sur Ubuntu 12.04 (Precise Pangolin), et la version de l'IDE Arduino est 1.0. Récemment, j'ai essayé de télécharger quelques exemples de croquis dessus, comme celui de Blink. Cependant, aucune de mes tentatives ne fonctionne et elles entraînent la même erreur à chaque fois que je l'essaie:

avrdude: stk500_recv (): le programmeur ne répond pas.

J'ai activé /dev/ttyUSB0dans le menu OutilsPort série . J'ai également sélectionné la bonne carte (Duemilanove avec ATmega328) dans la liste. Pourtant, je ne suis pas en mesure de résoudre le problème. J'ai également effectué des recherches en ligne et aucune des autres réponses à ce problème ne semble fonctionner pour moi. Pourquoi je rencontre ce problème et comment le résoudre?

J'ai également essayé de faire tourner l'ATmega embarqué et de l'installer dans l'autre sens. Maintenant, je ne rencontre aucun problème de téléchargement, mais rien ne se passe par la suite. La LED intégrée ne semble pas non plus clignoter.


Déconnectez RST de GND sur la carte Arduino uno. J'ai suivi ce tutoriel et j'ai oublié d'annuler cela.
ArtiomLK

Cela peut être dû au fait que la vitesse de transmission est définie sur une valeur erronée (probablement trop élevée).
Konrad Gajewski

Réponses:


108

J'ai eu ce problème avec un Crowduino, exécutant l'IDE Arduino sur OS X. La solution pour moi était d'activer la sortie verbeuse pendant le téléchargement (dans le volet des préférences de l'IDE Arduino).

Ensuite, lors du téléchargement, vous pouvez voir AVRDUDE envoyer trois paquets avrdude: Send: 0 [30] [20](avec les flashs RX correspondants sur la carte) juste avant l' avrdude: ser_recv(): programmer is not respondingerreur.

L'astuce consiste à appuyer sur le bouton de réinitialisation sur la carte immédiatement avant l'envoi de ces trois paquets. Ensuite, le programme sera téléchargé avec succès.


2
Eh bien, cela a résolu le problème pour moi au moins. Comment l'avez-vous compris?
SlackOverflow

8
@daniele D'autres personnes ont remarqué que si vous réinitialisez après X secondes, cela fonctionne. J'ai pensé que les paquets étaient une tentative de poignée de main. Donc, fondamentalement, je l'ai résolu en utilisant Google, de la patience et en jouant avec le tableau!
hoipolloi

J'ai essayé de réinitialiser et cela a fonctionné une fois, mais jusqu'à ce que je lise ceci, je ne savais pas le bon moment pour le faire, merci
Ulises Layera

4
FYI - J'ai dû installer les derniers pilotes FTDI pour résoudre ce problème de manière permanente
Scott Silvi

2
La mise à jour du pilote FTDI et le redémarrage d'Arduion m'ont aidé (MacOS 10.9.4, Arduino Nano 328)
peetonn

80

Assurez-vous qu'il n'y a pas d'entrée sur les broches Tx / Rx. Ensuite, cela fonctionnera.


Cela a fonctionné pour moi! J'avais un module Bluetooth connecté aux broches RX / TX.
johngreen

Cela a fonctionné pour moi. J'ai dû débrancher également le câble USB et redémarrer arduino, car j'ai reçu une autre erreur après avoir débranché les broches (et l'alimentation, juste pour être sûr)
oneindelijk

68

J'ai eu le même problème - c'est pourquoi j'ai trouvé cette question.

Je n'ai eu qu'à changer le processeur de «ATmego328P» à «ATmego328P (Old Bootloader)»

Problème résolu - du moins pour moi.

entrez la description de l'image ici


Hé, où puis-je trouver le panneau de sélection du processeur dans le nouvel IDE?
Muhammad Ali

3
@MuhammadAli: Je viens d'ajouter une capture d'écran pour répondre à votre question
Edgar

Bénissez-vous, c'était aussi mon problème.
ofekp

2
Ce problème peut apparaître si vous utilisez la carte ELEGOO NANO. La même solution est également mentionnée dans le document FAQ.
chetan92

Si la carte est une Arduino nano et a été fabriquée avant janvier 2018, il suffit de sélectionner Processeur> «ATmega328P (Old Bootloader)» fera l'affaire ( arduino.cc/en/Guide/ArduinoNano#toc4 )
Bit-Man

48

Il y a du vaudou dans les réponses ici parmi les bonnes idées. Essayons d'être un peu plus réel sur ce qui se passe et résumons les bonnes choses à vérifier:

En gros, lorsque cela se produit, c'est une bonne idée d'activer le mode verbeux pour AVRDUDE , pour avoir une meilleure idée de ce qui se passe. Pour ce faire, il vous suffit d'aller dans les préférences et de cocher la case du mode détaillé. C'est aussi une bonne idée de s'éloigner de l'IDE Arduino et de lancer une console pour être plus à l'aise dans la lecture de la sortie d'AVRDUDE, que vous obtiendrez en cliquant sur le uploadbouton.

Ce qui est important ici de mettre 3 ou 4 -và l'appel de commande. Voici à quoi ressemble de telles commandes AVRDUDE, avec des paramètres créés car ils dépendent totalement de la façon dont l'Arduino a été installé:

avrdude -v -v -v -v -C /path/to/avrdude.conf -patmega328 -P/dev/usbport -U flash:w:/path/to/firmware.hex

Un bon moyen d'obtenir la ligne de commande correcte à utiliser est de la copier à partir de la sortie détaillée du journal de sortie Arduino IDE lorsque la verbosité a été activée.

Lorsque vous obtenez avrdude: stk500_recv(): programmer is not responding, cela signifie essentiellement que quelque chose de mal se produit, avant que le clignotement ne commence réellement.

En gros, vous devez vérifier (du matériel au logiciel, de bas niveau à haut niveau):

  • si le câble et / ou les connecteurs n'ont pas de microcoupes;
  • si aucun point de soudure n'est en court-circuit (c'est-à-dire en contact avec quelque chose de métallique), cela signifie:
    • s'il n'y a pas de court-circuit sur le PCB entre Rxet Tx(généralement les broches 1et 0);
    • s'il n'y a aucun contact avec un élément métallique sous la carte, ou de minuscules morceaux entre les jambes d'un composant (comme le FTDI, la puce ATmega ou tout autre);
  • si la puce ATmega n'est pas hors tension ( Raccourci GND / V CC ou coupure ou entrée V CC morte…);
  • si les broches 1et 0de l'Arduino ne sont pas utilisées par un bouclier ou une conception personnalisée ( /!\ne s'applique pas au Leonardo car il a une gestion USB indépendante);
  • si le convertisseur USB vers UART n'a pas de problème ( FTDIsur les anciens Duemilanove ou ATmega16U2 sur les nouveaux Arduino Unos);
  • si la puce ATmega328 est frite ou mal installée;
  • si le chargeur de démarrage a été écrasé ou échoue;
  • si le bon débit en bauds est appliqué pour entrer dans le chargeur de démarrage;
  • si les bons paramètres sont définis pour le microcontrôleur et la carte cibles;

Habituellement, cela avrdude -v -v -v -vpeut aider beaucoup à trouver à quel stade il échoue. Qu'il ne puisse pas du tout établir de connexion USB (panne de câble, USB / UART, PCB…), ou c'est un problème de bootloader.

Mise à jour : j'ai essayé de tourner l'ATmega embarqué et de l'installer dans l'autre sens. Maintenant, je ne rencontre aucun problème de téléchargement, mais rien ne se passe par la suite. La LED intégrée ne semble pas non plus clignoter.

J'ai peur que si vous inversez la position de l'ATmega, et que cela ne fonctionne pas, le fait que vous ayez placé la source d'alimentation sur des broches numériques ait brûlé votre puce.


BTW, la sortie Arduino a comme dernière ligne (avant de commencer le téléchargement) le chemin vers avrdude, le chemin vers la configuration et le chemin vers le fichier flash. Cela peut facilement être copié dans la ligne de commande et les -v peuvent être ajoutés.
powtac

En effet, cependant, iirc (je n'utilise presque jamais la terrible interface utilisateur), vous devez activer la sortie verbeuse dans les préférences
zmo

1
Pour moi, cela s'est produit parce que j'ai défini un débit en bauds incorrect dans la configuration eclipse avrdude. Je l'ai compris quand j'ai vu la ligne de commande sur l'IDE arduino.
Tejas Kale

avrdude: no programmer has been specified on the command line or the config file Specify a programmer using the -c option and try again
K - La toxicité du SO augmente.

Corrigé:avrdude -v -v -v -v -C/etc/avrdude.conf -patmega328 -carduino -P/dev/ttyACM0 -U flash:w:~/Arduino/WebServer/WebServer.ino.standard.hex
K - La toxicité du SO augmente.

21

Essayez de voir si votre tableau a été sélectionné correctement. Cliquez sur le menu Outils -> Tableau et vérifiez si le bon tableau est sélectionné.


1
C'était tout pour moi. J'utilisais un Uno jusqu'à ce que je le fasse frire et obtienne un nouveau Mega. Le tout nouveau Mega voyait ce problème. Je ne savais même pas que ce menu existait. Merci!
Mike

Pas ça, mais le numéro de série correct n'a pas été sélectionné ... Quelque chose à penser, en effet! Merci!
heltonbiker

comment savoir quelle carte est compatible avec mon Arduino?
turmuka

12

Vous pouvez vérifier si des fils de cavalier sont branchés sur les broches 0 et 1. Ces broches sont utilisées pour la communication série et des câbles branchés peuvent empêcher le téléchargement du code sur la carte.

Si rien n'est branché, cela peut être un bogue avec AVRDUDE , vous pouvez essayer de le mettre à jour.


3
Il n'y a absolument rien de connecté à 0 et 1. avrdudeest également mis à jour et est la dernière version.
Pastafarian

Je n'ai pas d'autre conseil. :( Bien qu'une erreur similaire semble se produire sur Windows, cela peut donc être un problème avec le tableau.
Pastafarian

Ouais c'est ce que je dirais ... Vous pouvez essayer un Serial.println()exemple pour vérifier si ce n'est pas seulement le led 13.
ladislas

10

J'ai également rencontré ce problème et je l'ai résolu en réinstallant le pilote série USB. Pls voir également: http://arduino.cc/en/Guide/Howto et http://www.ftdichip.com/Drivers/VCP.htm


1
Chaque fois que j'utilise mon Duemilanove ATMega328, j'oublie toujours de le faire, et vérifier aussi que le Conseil est sélectionné dans l'application Arduino (sous Outils au 1.0.6.
Andrew

1
Si vous venez d'installer l'IDE arduino, cette réponse est (très probablement) ce que vous recherchez!
Zaxter le

5

L'erreur ci-dessus se déroule en 3 étapes

  1. Si le chargeur de démarrage est tombé en panne
  2. si vous n'avez pas sélectionné le bon port et la bonne carte à partir de l'IDE
  3. Si vous communiquez avec un autre port série, les broches GND et Tx sont connectées à un autre appareil de communication

Dans mon cas, j'avais sélectionné une mauvaise planche. Merci AMPS!
Jamshaid Kamran

3

J'ai résolu le problème sur OS X v10.10 (Yosemite) en suivant ces instructions:

Puce FTDI et OS X 10.10

Cependant, l'astuce proposée par hoipolloi était une solution temporaire de travail, sur cette version également.


Cela a également fonctionné pour moi le 10.10. Suite à cet article, je n'ai pas eu à faire les étapes 4, 5 ou 6. Maintenant, je peux mettre à jour des scripts en utilisant Arduino IDE plusieurs fois sans obtenir cette erreur.
dbainbridge

3

J'ai eu le même problème lors de mon premier essai d'Arduino Uno.

Ma solution était assez simple. Il suffit de brancher puis de brancher le câble USB.


3

Sur Windows 7 , j'ai eu ce problème plusieurs fois, à chaque fois avec des messages d'erreur différents. Fondamentalement, l'IDE envoie au mauvais port.

Pour résoudre ce problème, allez simplement dans le menu OutilsPorts → [sélectionnez le port COM sur lequel se trouve votre carte].

Assurez-vous de vérifier le port de votre carte:

  1. Démarrez le Gestionnaire de périphériques

    Le menu Démarrer

  2. Assurez-vous que votre pilote Arduino est répertorié sous le port correspondant aux paramètres de port de votre IDE (mentionnés ci-dessus)

    Gestionnaire de périphériques

  3. Ma carte est répertoriée sous port COM1. Si vous le souhaitez, vous pouvez simplement modifier le port dans les paramètres avancés du pilote:

    Entrez la description de l'image ici


2

J'ai ce problème sur mon Arduino fonctionnant également sur Mac. Cela se produit sur deux de mes Arduinos (un Arduino Uno et un Arduino Pro connecté avec FTDI).

Pour l'Uno, je branche le câble à mon ordinateur et j'appuie sur upload, puis je commence à compter jusqu'à ce que la LED «TX» clignote. Ensuite, répétez le téléchargement, mais juste avant que le voyant TX ne clignote, appuyez sur le bouton de réinitialisation et le téléchargement réussit.

J'ai déterminé plus tard que le changement de câble USB résolvait ce problème.


1
Changer le câble USB fixé pour moi
Paul Bailey

2

Je poste ceci parce que je n'ai pas trouvé cette réponse ailleurs. Tous mes clones Arduino nano chinois (CH340) ont eu ce problème après la mise à niveau vers l'IDE Arduino vers la 1.8.9. Ce qui a fonctionné pour moi, c'est d'utiliser un Arduino Uno officiel de rechange que je dois graver le chargeur de démarrage sur les nanos défectueux en utilisant les en-têtes ICSP sur le nano. Pour cela, tout ce que j'ai fait a été de suivre les instructions ici: chinois-clone-of-arduino-nano-with-chip-ch340g-how-to-fix-it . La SEULE chose que j'ai faite différemment a été de toujours définir l'option "Old Bootloader" comme indiqué précédemment dans ce fil. À part cela, j'ai complètement suivi les instructions sur ce lien et j'ai sauvé mes nanos de ce problème ennuyeux. J'espère que cela aide quelqu'un là-bas.


1

Tout d'abord, assurez-vous que / dev / ttyUSB0 fonctionne. Par exemple, branchez la souris et vérifiez qu'elle fonctionne. Deuxièmement, essayez de sélectionner une autre carte. Il arrive souvent que les cartes non originales ne soient pas reconnues correctement sous leurs noms. Troisièmement, essayez d'appuyer sur le bouton de réinitialisation manuellement lors du téléchargement du croquis. La réinitialisation automatique est probablement interrompue.


1

J'ai résolu un problème dans mon cas en téléchargeant et en installant d'anciens pilotes FDTM à partir d' ici .

Essayez d'installer FTDIUSBSerialDriver_10_4_10_5_10_6_10_7.mpkg, puis redémarrez Arduino.


il n'a généralement aucun rapport avec le problème de l'OP, et le pilote FTDI n'est utile que si vous avez un Arduino 328.
zmo

1

Je pensais juste que je soulignerais que ma toute nouvelle carte Arduino Uno Rev3 utilise le pilote LInux suivant:

Device Drivers    
|-USB Drivers
  |-USB Modem (CDC ACM) support

Ceci est connu comme l' CONFIG_USB_ACM:option : dans le noyau LInux 3.x le plus récent.

Cet appareil apparaît alors comme: /dev/ttyACM0ou similaire.


1

Avez-vous quelque chose de connecté à la RESETbroche sur l'Arduino?

J'ai rencontré ce problème avec un écran LCD graphique qui devait être connecté à la RESETbroche. Déconnecter le fil de liaison entre l'écran LCD et la RESETbroche lors du téléchargement du code l'a corrigé pour moi, tout ce que vous auriez à faire est de vous reconnecter une fois le téléchargement du code terminé.


1

J'ai trouvé la cause de cela ...

Changer mon port série en /dev/tty.usbmodem2131 l'a corrigé. Il s'avère que j'utilisais le mauvais port série pendant tout ce temps!


1

Tu peux essayer:

  • Enregistrez-vous preferences.txt serial.debug_rate: serial.debug_rate=9600
  • Sinon, essayez d'appuyer sur le bouton de réinitialisation de votre Arduino juste lors du téléchargement.
  • Sinon, essayez de sélectionner une autre carte dans le menu Outils de l' IDE Arduino , puis resélectionnez votre carte dans la liste.

1

Cette combinaison des réponses ci-dessus a résolu le problème pour moi:

  • effectué la mise à jour Java:

    sudo apt-get install default-jdk

  • puis tué l'IDE Arduino et l'a redémarré

  • ma carte correcte est maintenant apparue (Arduino Mega 2560, où avant Mega 1280 n'était qu'une option)

  • pour les pilotes, j'ai fait ceci:

    sudo chmod a+rw /dev/serial/by-id/usb-Arduino__www.arduino.cc__(a bunch of numbers)

Après cela, mon IDE Arduino s'affiche /dev/ttyACM0dans le menu outils / port série.

Maintenant, tout fonctionne très bien!


Merci! JDK ne posait pas de problèmes dans mon cas, mais le sudo chmod a + rw / dev / serial / by-id / usb-Arduino ********** a fait le travail.
Artur Barseghyan du

1

Voici une solution qui a fonctionné pour moi fonctionnant sur un MacBook Pro (bureau).

J'obtenais la même erreur et il s'avère que c'est parce que j'avais connecté l'USB à un périphérique (mon moniteur) plutôt qu'à un USB sur le PC lui-même. Il a immédiatement stoppé toutes les erreurs et constitue une solution simple.


1

Merci @hoipolloi pour la bonne direction dans la recherche de la solution.

Quoi qu'il en soit, j'ai dû faire des étapes un peu différentes pour résoudre le problème.

Dans mon cas, l'Arduino Uno avait bien fonctionné, mais il s'est soudainement arrêté après avoir joué avec des croquis. Je recevais lestk500_recv(): programmer is not responding tout le temps et rien ne fonctionnait. Ensuite, j'ai fait attention que la LED 13 est toujours allumée sur ma carte. On aurait dit qu'un croquis en boucle dure tournait encore et encore sur le tableau et bloquait toute entrée sur le tableau. Je ne sais pas, ce sont juste mes idées.

J'ai essayé de cliquer sur RESET à tous les moments possibles sans aucune chance et j'ai soudainement essayé les étapes suivantes:

  1. Débranchez la carte.
  2. Cliquez et maintenez RESET.
  3. Rebranchez-le.
  4. Attendez quelques secondes.
  5. Relâchez le bouton RESET.

Après cela, j'ai remarqué que la LED intégrée 13 s'éteignait pendant une seconde, puis se rallumait. Il semblait qu'il y avait une courte fenêtre de réinitialisation lorsque la carte est en cours de réinitialisation. Ensuite, comme dans la solution de @ hoipolloi, j'ai attrapé le moment de "réinitialisation" juste avant l'envoi des trois paquets et cela a fonctionné.

J'espère que cela vous aidera à comprendre le problème si aucune des autres solutions ne fonctionne.

CONSEIL . Si vous ne voyez pas les trois Send: 0 [30] [20]lignes lors du téléchargement de l'esquisse dans votre console, procédez comme suit:

  1. Cliquez sur "Télécharger" dans votre IDE Arduino.
  2. Regardez la fenêtre du journal. Vous pourrez trouver une ligne comme celle-ci:

    E:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CE:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM3 -b115200 -D -Uflash:w:C:\Users\Sergey\AppData\Local\Temp\build44ca75bc60fd83cc8ef41e35d4d83388.tmp/sketch_sep07a.ino.hex:i
    
  3. On dirait qu'il avale les symboles de saut de ligne ou d'espace comme ici -CE:\Program Files.... Ça devrait être -C E:\Program Files. Copiez ceci comme dans le Bloc-notes, ajoutez des espaces manquants pour rendre la ligne suivante:

    E:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -v -v -v -v -C "E:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf" -patmega328p -carduino -PCOM3 -b115200 -D -U flash:w:C:\Users\Sergey\AppData\Local\Temp\build44ca75bc60fd83cc8ef41e35d4d83388.tmp/sketch_sep07a.ino.hex:i
    
  4. Ajoutez 4 -vinstructions comme je l'ai fait ci-dessus.

  5. Ouvrez la ligne de commande, collez-y la commande et exécutez.

Vous verrez maintenant beaucoup plus verbeux grâce à 4 -varguments. À l'origine, Arduino Studio n'en utilise qu'un seul.


0

Avez-vous installé / mis à jour le pilote du câble FTDI? (Étape trois sur http://arduino.cc/en/Guide/Howto ). L'exécution de l'IDE Arduino à partir de mon Raspberry Pi a bien fonctionné sans installer explicitement les pilotes (soit ils étaient préinstallés, soit le programme d'installation Arduino IDE s'en est occupé). Ce n'était pas le cas sur mon Mac et j'ai dû installer les pilotes de câble en plus de l'IDE.


0

Je viens de passer les dernières heures sur ce même problème ... Allez simplement ici " http://www.ftdichip.com/Drivers/VCP.htm ", téléchargez les derniers pilotes et redémarrez. Devrait fonctionner très bien après cela. J'ai également téléchargé une nuit du logiciel Arduino, mais je ne pense pas que cela fasse une différence.


0

Essayez de charger un programme sans -b (l'option de débit en bauds). Dans ~ / .arduino15 / preferences.txt, définissez build.verbose = true, lorsque arduino.cc n'est pas en cours d'exécution. Dans la sortie détaillée, vous trouverez le fichier hexadécimal que vous devez charger à partir d'une console:

avrdude -v -v -v -v -C/usr/share/arduino/hardware/tools/avr/etc/avrdude.conf -patmega328p -carduino -P/dev/ttyUSB2  -D -Uflash:w:/tmp/build2314497724350388190.tmp/sketch_nov13b.cpp.hex:i

Je viens de remplacer la puce 128 par la version 328 et de Decimile mon nom de carte a été changé en Uno ou Ethernet en raison du nouveau débit en bauds 115200.


0

Si vous connectez votre Arduino via un concentrateur USB, essayez de le connecter directement à l'un des ports USB du Mac à la place.
Cela a fonctionné pour moi.


0

Dans mon cas, le problème a été soulevé lorsque j'essayais de faire des expressions arithmétiques "étranges"

par exemple (3,14 / 4) / 5 ou 3,15% 2,55

Donc, je vous suggère de vérifier toutes les expressions arithmétiques au cas où certaines d'entre elles ne pourraient pas être calculées par l'Arduino.

J'espère que ça aide.


0

Dans mon cas (Mini Pro), la solution était si simple, je ne sais pas comment j'ai manqué cela. J'avais besoin de croiser les fils rx / tx.

Solution:

  • La broche Arduino Rx va à la broche FTDI Tx.
  • La broche Arduino Tx va à la broche FTDI Rx.

0

Pour mon cas, c'était le mauvais débit en bauds. Il appelle cette commande:

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM4 **-b57600** -D -Uflash:w:C:\Users\Vahid\AppData\Local\Temp\arduino_build_527841/AnalogReadSerial.ino.hex:i 

Comme vous pouvez le voir, la vitesse de transmission est définie sur 57600. Lorsque vous supprimez cet argument (-b57600) et que vous l'exécutez en ligne de commande, cela fonctionne correctement.


0

Mon problème était que j'ai mis à jour l'IDE Arduino vers une nouvelle version et je n'ai pas reconnecté le fil. On dirait que c'était le problème

Déconnectez simplement le câble et reconnectez-le. Merci.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.