Problema di caricamento di Arduino Sketch - avrdude: stk500_recv (): il programmatore non risponde


133

Ho un Arduino Duemilanove con un ATmega328 . Sto lavorando su Ubuntu 12.04 (Precise Pangolin) e la versione IDE di Arduino è 1.0. Di recente, ho provato a caricare alcuni degli schizzi di esempio su di esso, come quello Blink. Tuttavia, nessuno dei miei tentativi funziona e si traducono nello stesso errore ogni volta che lo provo:

avrdude: stk500_recv (): il programmatore non risponde.

Ho attivato /dev/ttyUSB0nel menu Strumenti Porta seriale . Ho anche selezionato la scheda corretta (Duemilanove con ATmega328) dall'elenco. Tuttavia, non sono in grado di risolvere il problema. Ho cercato anche online e nessuna delle altre risposte a questo problema sembra funzionare per me. Perché riscontro questo problema e come risolverlo?

Ho anche provato a girare l'ATmega di bordo e ad adattarlo nella direzione opposta. Ora non riscontro problemi con il caricamento, ma dopo non succede nulla. Anche il LED di bordo non sembra lampeggiare.


Disconnetti RST da GND sulla scheda Arduino Uno. Ho seguito questo tutorial e ho dimenticato di annullarlo.
ArtiomLK,

Ciò potrebbe essere dovuto al fatto che il baud rate è impostato su un valore errato (probabilmente troppo alto).
Konrad Gajewski,

Risposte:


108

Ho avuto questo problema con un Crowduino, eseguendo l'IDE Arduino su OS X. La soluzione per me era accendere l'output dettagliato durante il caricamento (nel riquadro delle preferenze dell'IDE di Arduino).

Quindi, durante il caricamento, puoi vedere AVRDUDE inviare tre pacchetti avrdude: Send: 0 [30] [20](con i corrispondenti flash RX sulla scheda) subito prima avrdude: ser_recv(): programmer is not respondingdell'errore.

Il trucco è premere il pulsante di reset sulla scheda immediatamente prima dell'invio di questi tre pacchetti. Quindi il programma verrà caricato correttamente.


2
Bene, questo ha risolto il problema almeno per me. Come l'hai capito?
SlackOverflow

8
@daniele Altre persone hanno notato che se si reimposta dopo X secondi, allora funziona. Ho pensato che i pacchetti fossero un tentativo di stringere la mano. Quindi, fondamentalmente, l'ho risolto usando Google, pazienza e armeggiando con la lavagna!
Hoipolloi,

ho provato a ripristinare e ha funzionato una volta, ma fino a quando non ho letto questo non sapevo il momento giusto per farlo, grazie
Ulises Layera

4
Cordiali saluti - Ho dovuto installare gli ultimi driver FTDI per risolvere definitivamente questo problema
Scott Silvi,

2
L'aggiornamento del driver FTDI e il riavvio di Arduion mi hanno aiutato (MacOS 10.9.4, Arduino Nano 328)
peetonn,

80

Assicurarsi che non ci sia input sui pin Tx / Rx. Quindi funzionerà.


Questo ha funzionato per me! Avevo un modulo bluetooth collegato ai pin RX / TX.
johngreen,

Questo ha funzionato per me. Ho dovuto scollegare anche il cavo USB e riavviare Arduino, perché ho ricevuto un altro errore dopo aver scollegato i pin (e l'alimentazione, solo per essere sicuri)
oneindelijk

68

Ho avuto lo stesso problema - ecco perché ho trovato questa domanda.

Ho dovuto solo cambiare il processore da "ATmego328P" a "ATmego328P (vecchio bootloader)"

Problema risolto - almeno per me.

inserisci qui la descrizione dell'immagine


Ehi, dove posso trovare il pannello di selezione del processore nel nuovo IDE?
Muhammad Ali,

3
@MuhammadAli: ho appena aggiunto uno screenshot per rispondere alla tua domanda
Edgar,

Ti benedica, anche quello era il mio problema.
ofekp

2
Questo problema potrebbe apparire se stai usando la scheda ELEGOO NANO. La stessa soluzione è menzionata anche nel documento FAQ.
chetan92,

Se la scheda è un Arduino nano ed è stata prodotta in precedenza a gennaio 2018 selezionando semplicemente Processore> "ATmega328P (Vecchio Bootloader)" farà il trucco ( arduino.cc/en/Guide/ArduinoNano#toc4 )
Bit-Man

48

C'è qualche discorso voodoo nelle risposte qui intorno tra le buone idee. Proviamo a essere un po 'più reali su ciò che sta accadendo e riassumiamo le cose buone da controllare:

Fondamentalmente, quando ciò accade, è una buona idea abilitare la modalità dettagliata per AVRDUDE , per avere un'idea migliore di ciò che sta accadendo. Per fare ciò, devi solo andare nelle preferenze e selezionare la casella della modalità dettagliata. È anche una buona idea allontanarsi dall'IDE di Arduino e avviare una console per essere più a proprio agio nella lettura dell'output di AVRDUDE, che potrai fare clic sul uploadpulsante.

Ciò che è importante qui per mettere 3 o 4 -valla chiamata di comando. Ecco come appaiono tali comandi AVRDUDE, con parametri inventati in quanto totalmente dipendenti da come è stato installato Arduino:

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

Un buon modo per ottenere la riga di comando corretta da utilizzare è copiarlo dall'output dettagliato del log di output IDE di Arduino quando è stata abilitata la verbosità.

Quando arrivi avrdude: stk500_recv(): programmer is not responding, significa sostanzialmente che sta succedendo qualcosa di sbagliato, prima che inizi effettivamente il lampeggiamento.

Fondamentalmente devi controllare (dall'hardware al software, da basso ad alto livello):

  • se il cavo e / o i connettori non hanno micro-tagli;
  • se nessun punto di saldatura è cortocircuitato (cioè toccando qualcosa di metallico attorno), ciò significa:
    • se non c'è cortocircuito sul PCB tra Rxe Tx(di solito pin 1e0 );
    • se non c'è contatto con un elemento metallico sotto la scheda, o minuscole punte tra le gambe di un componente (come l'FTDI, il chip ATmega o qualsiasi altro);
  • se il chip ATmega non è senza alimentazione ( collegamento o interruzione GND / V CC o ingresso V CC inattivo ...);
  • se i pin 1e 0dell'Arduino non vengono utilizzati da alcuno scudo o design personalizzato ( /!\non si applica a Leonardo in quanto ha una gestione USB indipendente);
  • se il convertitore da USB a UART non presenta problemi ( FTDIsu Duemilanove o ATmega16U2 precedenti su Arduino Unos più recenti);
  • se il chip ATmega328 è fritto o installato in modo errato;
  • se il bootloader è stato sovrascritto o non funziona;
  • se viene applicato il baudrate corretto per accedere al bootloader;
  • se sono impostate le giuste impostazioni per il microcontrollore e la scheda target;

Di solito avrdude -v -v -v -vpuò aiutare molto a scoprire in quale fase sta fallendo. Se non è possibile stabilire una connessione USB (guasto del cavo, USB / UART, PCB ...) o è un problema del bootloader.

Aggiornamento : ho provato a girare l'ATmega di bordo e ad adattarlo nella direzione opposta. Ora non riscontro problemi con il caricamento, ma dopo non succede nulla. Anche il LED di bordo non sembra lampeggiare.

Temo che se hai invertito la posizione dell'ATmega e quindi non funziona, il fatto che hai posizionato la fonte di alimentazione sui pin digitali potrebbe aver bruciato il tuo chip.


A proposito, l'output di Arduino ha come ultima riga (prima di iniziare il caricamento) il percorso di avrdude, il percorso della configurazione e il percorso del file flash. Questo può essere facilmente copiato e incollato nella riga di comando e -v può essere aggiunto.
Powtac,

In effetti, però, iirc (non sto quasi mai usando la terribile UI), devi abilitare un output dettagliato nelle preferenze
zmo

1
Per me questo è successo perché ho impostato un baud rate errato nella configurazione avrdude di eclipse. Capito quando ho visto la riga di comando su arduino IDE.
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 tossicità in SO sta crescendo.

Risolto: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 tossicità in SO sta crescendo.

21

Prova a vedere se la tua scheda è stata selezionata correttamente. Fare clic sul menu Strumenti -> Scheda e verificare che sia selezionata la scheda corretta.


1
Questo è stato per me. Stavo usando uno Uno fino a quando non l'ho fritto e ho ottenuto un nuovo Mega. La nuovissima Mega stava riscontrando questo problema. Non sapevo nemmeno che esistesse questo menu. Grazie!
Mike,

Non quello, ma non è stato selezionato il seriale corretto ... Qualcosa a cui pensare, anzi! Grazie!
Heltonbiker,

come faccio a sapere quale scheda è compatibile con il mio Arduino?
turmuka,

12

È possibile verificare se sono presenti cavi jumper collegati ai pin 0 e 1. Questi pin vengono utilizzati per la comunicazione seriale e i cavi collegati possono impedire il caricamento del codice sulla scheda.

Se non viene collegato nulla, potrebbe trattarsi di un bug con AVRDUDE , puoi provare ad aggiornarlo.


3
Non c'è assolutamente nulla collegato a 0 e 1. avrdudeviene anche aggiornato ed è la versione più recente.
Pastafarian,

Non ho un'altra scheda. :( Anche se sembra che si stia verificando un errore simile su Windows, quindi potrebbe essere un problema con la scheda.
Pastafarian

Sì, è quello che direi ... Puoi provare un Serial.println()esempio per verificare se non è solo il led 13.
Ladislas,

10

Ho riscontrato anche questo problema e l'ho risolto reinstallando il driver seriale USB. Vedi anche: http://arduino.cc/en/Guide/Howto e http://www.ftdichip.com/Drivers/VCP.htm


1
Ogni volta che utilizzo Arduino Duemilanove ATMega328, mi dimentico sempre di farlo e controllo anche che sia selezionata la scheda corretta nell'app Arduino (in Strumenti a partire da 1.0.6.
Andrew

1
Se hai appena installato l'IDE arduino, questa risposta è (molto probabilmente) quello che stai cercando!
Zaxter,

5

L'errore sopra riportato è suddiviso in 3 fasi

  1. Se il boot loader è stato arrestato in modo anomalo
  2. se non hai selezionato la porta e la scheda appropriate dall'IDE
  3. Se si comunica con un'altra porta seriale sono collegati, ad esempio GND e pin Tx sono collegati ad altri dispositivi di comunicazione

Nel mio caso, avevo selezionato una scheda sbagliata. Grazie AMPS!
Jamshaid Kamran,

3

Ho risolto il problema su OS X v10.10 (Yosemite) seguendo queste istruzioni:

Chip FTDI e OS X 10.10

Tuttavia, il trucco proposto da Hoipolloi era una soluzione temporanea funzionante, anche su questa versione.


Questo ha funzionato anche per me il 10.10. Dopo quel post non ho dovuto fare i passaggi 4, 5 o 6. Ora posso aggiornare gli script usando Arduino IDE più volte senza ottenere quell'errore.
dbainbridge,

3

Ho avuto lo stesso problema al mio primo tentativo di Arduino Uno.

La mia soluzione era abbastanza semplice. Basta collegare e poi collegare il cavo USB.


3

Su Windows 7 , ho riscontrato questo problema più volte, ogni volta con diversi messaggi di errore. Fondamentalmente, l'IDE sta inviando alla porta sbagliata.

Per risolvere questo problema, vai semplicemente al menu StrumentiPorte → [seleziona la porta COM su cui si trova la tua scheda].

Assicurati di ricontrollare la porta della tua scheda:

  1. Avvia Gestione dispositivi

    Menu iniziale

  2. Assicurati che il tuo driver Arduino sia elencato sotto la porta corrispondente alle impostazioni della tua porta IDE (menzionata sopra)

    Gestore dispositivi

  3. La mia scheda è elencata sotto porto COM1. Se lo desideri, puoi semplicemente modificare la porta nelle impostazioni avanzate del driver:

    Inserisci qui la descrizione dell'immagine


2

Ho questo problema sul mio Arduino anche su Mac. Succede su due dei miei Arduinos (un Arduino Uno e un Arduino Pro collegati con FTDI).

Per Uno, aggancio il cavo al mio computer e premo upload, quindi inizio a contare fino a quando il LED "TX" lampeggia. Quindi ripetere il caricamento, ma poco prima che il LED TX lampeggi, premere il pulsante di ripristino e il caricamento ha esito positivo.

In seguito ho determinato che la sostituzione del cavo USB ha risolto questo problema.


1
Sostituzione del cavo USB risolto per me
Paul Bailey,

2

Sto pubblicando questo perché non ho trovato questa risposta altrove. Tutti i miei cloni di Arduino nano chinese (CH340) avevano questo problema dopo l'aggiornamento all'IDE di Arduino alla 1.8.9. Quello che ha funzionato per me è stato usare un Arduino Uno ufficiale di riserva che devo masterizzare il bootloader sui nanos difettosi usando le intestazioni ICSP sul nano. Per questo tutto ciò che ho fatto è stato seguire le istruzioni qui: chinese-clone-of-arduino-nano-with-chip-ch340g-how-to-fix-it . L'unica cosa che ho fatto diversamente è stata quella di impostare sempre l'opzione "Vecchio Bootloader" come detto prima in questo thread. A parte questo, ho seguito completamente le istruzioni su quel link e salvato i miei nanos da quel fastidioso problema. Spero che questo aiuti qualcuno là fuori.


1

Innanzitutto, assicurati che / dev / ttyUSB0 funzioni. Ad esempio collegare il mouse e verificare che funzioni. In secondo luogo, prova a selezionare un'altra scheda. Spesso le schede non originali non vengono riconosciute correttamente sotto il loro nome. In terzo luogo, prova a premere manualmente il pulsante di ripristino durante il caricamento dello schizzo. Probabilmente il ripristino automatico è interrotto.


1

Ho risolto un problema nel mio caso scaricando e installando i vecchi driver FDTM da qui .

Prova a installare FTDIUSBSerialDriver_10_4_10_5_10_6_10_7.mpkg, quindi riavvia Arduino.


è per lo più estraneo al problema dell'OP e il driver FTDI è utile solo se hai un Arduino 328.
zmo

1

Ho pensato di sottolineare che la mia nuovissima scheda Arduino Uno Rev3 utilizza il seguente driver LInux:

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

Questa è nota come CONFIG_USB_ACM:opzione : nel kernel LInux 3.x più recente.

Questo dispositivo viene quindi visualizzato come: /dev/ttyACM0o simile.


1

Hai qualcosa collegato al RESETpin su Arduino?

Ho riscontrato questo problema con un LCD grafico che doveva essere collegato al RESETPin. Scollegando il cavo jumper tra il display LCD e il RESETpin durante il caricamento del codice, è stato risolto per me, tutto ciò che dovresti fare è ricollegarti al termine del caricamento del codice.


1

Ho trovato la causa di questo ...

La modifica della mia porta seriale in /dev/tty.usbmodem2131 l'ha risolta. Si è scoperto che stavo usando la porta seriale sbagliata per tutto questo tempo!


1

Puoi provare:

  • Controlla le preferenze.txt serial.debug_rate: serial.debug_rate=9600
  • Altrimenti prova a premere il pulsante di ripristino di Arduino proprio durante il caricamento.
  • Altrimenti prova a selezionare un'altra carta nel menu Strumenti IDE di Arduino, quindi seleziona nuovamente la carta nell'elenco.

1

Questa combinazione delle risposte sopra ha risolto il problema per me:

  • eseguito l'aggiornamento Java:

    sudo apt-get install default-jdk

  • quindi ha ucciso l'IDE di Arduino e lo ha riavviato

  • la mia scheda corretta ora si presentava (Arduino Mega 2560, dove prima Mega 1280 era l'unica opzione)

  • per i conducenti, ho fatto questo:

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

Successivamente, il mio IDE di Arduino viene visualizzato /dev/ttyACM0nel menu Strumenti / Porta seriale.

Ora, tutto funziona alla grande!


Grazie! JDK non stava causando problemi nel mio caso, ma il sudo chmod a + rw / dev / serial / by-id / usb-Arduino ********** ha fatto il lavoro.
Artur Barseghyan,

1

Ecco una soluzione che ha funzionato per me in esecuzione su un MacBook Pro (desktop).

Stavo ottenendo lo stesso errore e si scopre perché avevo l'USB collegato a un dispositivo periferico (il mio monitor) anziché a un USB sul PC stesso. Ha immediatamente interrotto qualsiasi errore ed è una soluzione semplice.


1

Grazie @hoipolloi per la giusta direzione nel trovare la soluzione.

Comunque, ho dovuto fare un po 'di passi diversi per risolvere il problema.

Nel mio caso, l'Arduino Uno aveva funzionato bene, ma all'improvviso si è fermato dopo aver giocato con gli schizzi. Stavo ricevendo ilstk500_recv(): programmer is not responding tutto il tempo e niente ha funzionato. Quindi ho prestato attenzione che il LED 13 è sempre acceso sulla mia scheda. Sembrava che uno schizzo ad anello rigido stesse scorrendo ripetutamente sulla scheda e stesse bloccando qualsiasi input sulla scheda. Non sono sicuro, sono solo le mie persone.

Ho provato a fare clic su RESET in tutti i momenti possibili senza alcuna fortuna e improvvisamente ho provato i seguenti passaggi:

  1. Scollegare la scheda.
  2. Fare clic e tenere premuto RESET.
  3. Collegalo di nuovo.
  4. Aspetta un paio di secondi.
  5. Rilascia il pulsante RESET.

Successivamente ho notato che il LED 13 integrato si è spento per un secondo e poi si è riacceso. Sembrava che ci fosse una breve finestra di ripristino quando la scheda viene effettivamente ripristinata. Quindi, come nella soluzione di @ hoipolloi, ho colto il momento del "reset" proprio prima che i tre pacchetti venissero inviati e funzionasse.

Spero che questo ti aiuterà a capire il problema se nessuna delle altre soluzioni funziona.

SUGGERIMENTO . Se non vedi le tre Send: 0 [30] [20]righe quando carichi lo schizzo nella tua console, procedi come segue:

  1. Fai clic su "Carica" ​​nell'IDE di Arduino.
  2. Guarda la finestra del registro. Sarai in grado di trovare una linea come questa:

    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. Sembra che ingoia interruzioni di linea o simboli di spazio come qui -CE:\Program Files.... Dovrebbe essere -C E:\Program Files. Copia questo come nel Blocco note, aggiungi spazi mancanti per rendere la linea questa:

    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. Aggiungi 4 -v istruzioni come ho fatto sopra.

  5. Apri la riga di comando, incolla il comando al suo interno ed esegui.

Ora vedrai molto più dettagliato grazie a 4 -vargomenti. In origine, Arduino Studio ne utilizza solo uno.


0

Hai installato / aggiornato il driver per il cavo FTDI? (Passaggio tre su http://arduino.cc/en/Guide/Howto ). L'esecuzione dell'IDE Arduino dal mio Raspberry Pi funzionava perfettamente senza installare esplicitamente i driver (o erano preinstallati o il programma di installazione IDE Arduino se ne occupava). Sul mio Mac non è stato così e ho dovuto installare i driver del cavo oltre all'IDE.


0

Ho appena trascorso le ultime ore su questo stesso problema ... Basta andare qui " http://www.ftdichip.com/Drivers/VCP.htm ", scaricare gli ultimi driver e riavviare. Dovrebbe funzionare bene dopo. Ho anche scaricato una notte del software Arduino, ma non ho fatto la differenza.


0

Prova a caricare un programma senza -b (l'opzione di baud rate). In ~ / .arduino15 / preferenze.txt impostare build.verbose = true, quando arduino.cc non è in esecuzione. Nell'output dettagliato troverai il file esadecimale che dovresti caricare da una 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

Ho appena sostituito il chip 128 con la versione 328 e da Decimile il nome della mia scheda è stato cambiato in Uno o Ethernet a causa della nuova velocità di trasmissione 115200.


0

Se stai collegando Arduino tramite un hub USB, prova invece a collegarlo direttamente a una delle porte USB sul Mac.
Questo ha funzionato per me.


0

Nel mio caso il problema è stato sollevato quando stavo provando a fare alcune espressioni aritmetiche "strane"

ad es. (3.14 / 4) / 5 o 3.15% 2.55

Quindi, ti suggerirei di controllare tutte le espressioni aritmetiche nel caso in cui alcune di esse non possano essere calcolate da Arduino.

Spero che sia d'aiuto.


0

Nel mio caso (Mini Pro), la soluzione era così semplice, non so come mi mancasse. Avevo bisogno di crossover fili rx / tx.

Soluzione:

  • Il pin Arduino Rx va al pin FTDI Tx.
  • Il pin Arduino Tx va al pin FTDI Rx.

0

Nel mio caso è stato il baud rate sbagliato. Chiama questo comando:

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 

Come puoi vedere, la velocità di trasmissione è impostata su 57600. Quando rimuovi questo argomento (-b57600) ed eseguilo nella riga di comando, funziona bene.


0

Il mio problema era che ho aggiornato l'IDE di Arduino a una nuova versione e non ho ricollegato il filo. Sembra che quello fosse il problema

Basta scollegare il cavo e ricollegarlo. Grazie.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.