Problema de upload do Sketch do Arduino - avrdude: stk500_recv (): o programador não está respondendo

133

Eu tenho um Arduino Duemilanove com um ATmega328 . Estou trabalhando no Ubuntu 12.04 (Precise Pangolin), e a versão do IDE do Arduino é 1.0. Recentemente, tentei fazer upload de alguns esboços de amostra nele, como o Blink. No entanto, nenhuma das minhas tentativas está funcionando e elas resultam no mesmo erro toda vez que eu tento:

avrdude: stk500_recv (): o programador não está respondendo.

Ativei /dev/ttyUSB0no menu FerramentasPorta serial . Também selecionei o quadro correto (Duemilanove com ATmega328) da lista. No entanto, não consigo resolver o problema. Também pesquisei on-line e nenhuma das outras respostas para esse problema parece estar funcionando para mim. Por que estou enfrentando esse problema e como resolvê-lo?

Também tentei girar o ATmega a bordo e montá-lo na outra direção. Agora, não encontro problemas ao fazer o upload, mas nada acontece depois. O LED onboard também não parece estar piscando.

Pastafarian
fonte
Desconecte o RST do GND na placa uno do Arduino. Eu segui este tutorial e esqueci de desfazer isso.
ArtiomLK
Isso pode ocorrer porque a taxa de transmissão está definida como um valor errado (provavelmente alto demais).
Konrad Gajewski

Respostas:

108

Eu tive esse problema com um Crowduino, executando o IDE do Arduino no OS X. A solução para mim foi ativar a saída detalhada durante o upload (no painel de preferências do IDE do Arduino).

Então, ao fazer o upload, você pode ver o AVRDUDE enviando três pacotes avrdude: Send: 0 [30] [20](com o RX correspondente piscando na placa) imediatamente antes do avrdude: ser_recv(): programmer is not respondingerro.

O truque é pressionar o botão de reset na placa imediatamente antes que esses três pacotes sejam enviados. Em seguida, o programa será carregado com sucesso.

hoipolloi
fonte
2
Bem, isso resolveu o problema para mim, pelo menos. Como você descobriu?
SlackOverflow
8
@daniele Outras pessoas notaram que, se você redefinir após X segundos, funcionará. Imaginei que os pacotes eram uma tentativa de apertar a mão. Então, basicamente, eu resolvi usando o Google, paciência e zoando com o conselho!
hoi polloi
i tentou zerando e funcionou uma vez, mas até que eu li isso eu não sabia o momento certo para fazê-lo, graças
Ulises Layera
4
FYI - Eu tive que instalar os drivers mais recentes FTDI, a fim de resolver este problema de forma permanente
Scott Silvi
2
Atualizando FTDI motorista e reiniciar Arduion me ajudou (MacOS 10.9.4, Arduino Nano 328)
peetonn
80

Verifique se não há entrada nos pinos Tx / Rx. Então vai funcionar.

rednaks
fonte
Isso funcionou para mim! Eu tinha um módulo bluetooth conectado aos pinos RX / TX.
John Green
Isso funcionou para mim. Eu tive que desligue também o cabo USB e reinicie arduino, porque eu recebi outro erro depois de desligar os pinos (e o poder, só para ter certeza)
oneindelijk
68

Eu tive o mesmo problema - foi por isso que encontrei esta pergunta.

Eu só precisei mudar o processador de “ATmego328P” para “ATmego328P (Old Bootloader)”

Problema resolvido - pelo menos para mim.

insira a descrição da imagem aqui

Edgar
fonte
Ei, onde posso encontrar o painel de seleção do processador no novo IDE?
Muhammad Ali
3
@ MuhammadAli: Acabei de adicionar uma captura de tela para responder à sua pergunta
Edgar
Deus te abençoe, esse também foi o meu problema.
ofekp
2
Esse problema pode aparecer se você estiver usando a placa ELEGOO NANO. A mesma solução é mencionada no documento FAQ também.
chetan92
Se a placa for um Arduino nano e foi fabricada anteriormente até janeiro de 2018, basta selecionar Processador> "ATmega328P (Old Bootloader)" fará o truque ( arduino.cc/en/Guide/ArduinoNano#toc4 )
Bit-Man
48

Há algumas conversas sobre vodu nas respostas por aqui, entre boas idéias. Vamos tentar ser um pouco mais reais sobre o que está acontecendo e resumir as coisas boas para verificar:

Basicamente, quando isso acontece, é uma boa idéia ativar o modo detalhado para AVRDUDE , para ter uma idéia melhor do que está acontecendo. Para fazer isso, você só precisa ir nas preferências e marcar a caixa de modo detalhado. Também é uma boa ideia se afastar do Arduino IDE e iniciar um console para ficar mais confortável ao ler a saída do AVRDUDE, que você clicará no uploadbotão.

O importante aqui é colocar 3 ou 4 -vna chamada de comando. Veja como se parece com esses comandos AVRDUDE, com parâmetros inventados, pois são totalmente dependentes de como o Arduino foi instalado:

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

Uma boa maneira de obter a linha de comando correta é copiá-la da saída detalhada do log de saída do Arduino IDE quando a verbosidade estiver ativada.

Quando você chega avrdude: stk500_recv(): programmer is not responding, significa basicamente que algo de errado está acontecendo, antes que o flash comece.

Basicamente, você deve verificar (do hardware ao software, de baixo a alto nível):

  • se o cabo e / ou conectores não tiver microcortes;
  • se nenhum ponto de solda estiver em curto-circuito (ou seja, tocar em algo metálico), isso significa:
    • se não houver curto-circuito no PCB entre Rxe Tx(geralmente pinos 1e 0);
    • se não houver contato com um elemento metálico abaixo da placa ou pequenos pedaços entre as pernas de um componente (como o FTDI, o chip ATmega ou qualquer outro);
  • se o chip ATmega não estiver sem energia ( atalho GND / V CC ou corte ou entrada V CC mortos ...);
  • se os pinos 1e e 0do Arduino não estiverem sendo usados ​​por algum escudo ou design personalizado ( /!\não se aplica ao Leonardo , pois possui manipulação USB independente);
  • se o conversor USB para UART não apresentar problemas ( FTDIno Duemilanove mais antigo ou no ATmega16U2 no Arduino Unos mais recente);
  • se o chip ATmega328 estiver frito ou instalado incorretamente;
  • se o carregador de inicialização foi substituído ou está falhando;
  • se a taxa de transmissão correta for aplicada para entrar no carregador de inicialização;
  • se as configurações corretas estiverem definidas para o microcontrolador de destino e a placa;

Geralmente, isso avrdude -v -v -v -vpode ajudar bastante a encontrar em que estágio está falhando. Se ele não consegue fazer uma conexão USB (cabo com falha, USB / UART, PCB ...) ou se é um problema no gerenciador de inicialização.

Atualização : tentei girar o ATmega a bordo e montá-lo na outra direção. Agora, não encontro problemas ao fazer o upload, mas nada acontece depois. O LED onboard também não parece estar piscando.

Receio que se você inverteu a posição do ATmega e ele não funciona, o fato de você ter colocado a fonte de alimentação nos pinos digitais pode ter queimado seu chip.

zmo
fonte
BTW, a saída do Arduino tem como última linha (antes de iniciar o upload) o caminho para avrdude, o caminho para a configuração e o caminho para o arquivo flash. Isso pode ser facilmente copiado e colado na linha de comando e os -v's adicionados.
Powtac
Na verdade, porém, IIRC (estou quase nunca usando o UI terrível), você tem que habilitar detalhado saída nas preferências
Zmo
1
Para mim, isso aconteceu porque eu defini uma taxa de transmissão incorreta na configuração do eclipse avrdude. Descobri isso quando vi a linha de comando no IDE do 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 - A toxicidade no SO está crescendo.
Corrigido:avrdude -v -v -v -v -C/etc/avrdude.conf -patmega328 -carduino -P/dev/ttyACM0 -U flash:w:~/Arduino/WebServer/WebServer.ino.standard.hex
K - A toxicidade no SO está aumentando.
21

Tente ver se seu quadro foi selecionado corretamente. Clique no menu Ferramentas -> Quadro e verifique se o quadro correto está selecionado.

linhadiretalipe
fonte
1
Foi isso para mim. Eu estava usando um Uno até fritá-lo e obter um novo Mega. O novo Mega estava vendo esse problema. Eu nem sabia que esse menu existia. Obrigado!
1555 Mike
Não é isso, mas a série correta não foi selecionada ... Algo para pensar, de fato! Obrigado!
heltonbiker
como sei qual placa é compatível com o meu Arduino?
turmuka
12

Você pode verificar se há algum jumper conectado aos pinos 0 e 1. Esses pinos são usados ​​para comunicação serial e os fios conectados podem impedir que o código seja carregado na placa.

Se nada estiver conectado, pode haver um erro no AVRDUDE , você pode tentar atualizá-lo.

ladislas
fonte
3
Não há absolutamente nada conectado a 0 e 1. avrdudetambém é atualizado e é a versão mais recente.
precisa
Eu não tenho outro quadro. :( Apesar de um erro semelhante parece estar ocorrendo no Windows, por isso pode ser um problema com a placa.
Pastafarian
Sim, é o que eu diria ... Você pode tentar um Serial.println()exemplo para verificar se não é apenas o led 13.
Ladislas
10

Também resolvi esse problema e o resolvi reinstalando o driver serial USB. Veja também: http://arduino.cc/en/Guide/Howto e http://www.ftdichip.com/Drivers/VCP.htm

Anthony
fonte
1
Sempre que uso meu Arduino Duemilanove ATMega328, sempre esqueço de fazer isso e também verifico se a placa correta está selecionada no aplicativo Arduino (em Ferramentas a partir de 1.0.6.
Andrew
1
Se você acabou de instalar o arduino IDE, então esta resposta é (provavelmente) o que você está procurando!
Zaxter 7/01/15
5

O erro acima ocorre em 3 etapas

  1. Se o carregador de inicialização foi travado
  2. se você não selecionou a porta e a placa adequadas do IDE
  3. Se você estiver se comunicando com outra porta serial, os pinos GND e Tx serão conectados a outro dispositivo de comunicação.
AMPS
fonte
No meu caso, eu selecionei um painel errado. Obrigado AMPS!
Jamshaid Kamran
3

Resolvi o problema no OS X v10.10 (Yosemite) seguindo estas instruções:

Chip FTDI e OS X 10.10

No entanto, o truque proposto por hoipolloi foi uma solução temporária de trabalho, também nesta versão.

Sigismondo
fonte
Isso também funcionou para mim na 10.10. Após essa postagem, não precisei executar as etapas 4, 5 ou 6. Agora, eu posso atualizar os scripts usando o Arduino IDE várias vezes sem obter esse erro.
dbainbridge
3

Eu tive o mesmo problema na minha primeira tentativa do Arduino Uno.

Minha solução foi bastante simples. Apenas desconecte e conecte o cabo USB.

Ozan Atmar
fonte
3

No Windows 7 , tive esse problema várias vezes, sempre com diferentes mensagens de erro. Basicamente, o IDE está enviando para a porta errada.

Para corrigir isso, basta ir ao menu FerramentasPortas → [selecione a porta COM em que sua placa está].

Verifique a porta da sua placa:

  1. Inicie o Gerenciador de dispositivos

    Menu Iniciar

  2. Verifique se o driver do Arduino está listado na porta correspondente às configurações de porta do IDE (mencionadas acima)

    Gerenciador de Dispositivos

  3. Minha placa está listada em port COM1. Se desejar, você pode simplesmente alterar a porta nas configurações avançadas do driver:

    Digite a descrição da imagem aqui

Domi
fonte
2

Eu também tenho esse problema no meu Arduino em execução no Mac. Isso acontece em dois dos meus Arduinos (um Arduino Uno e um Arduino Pro conectado ao FTDI).

Para o Uno, conecto o cabo ao meu computador, pressiono upload e começo a contar até o LED "TX" piscar. Em seguida, repita o upload, mas pouco antes do LED TX piscar, pressione o botão Redefinir e o upload será bem-sucedido.

Mais tarde, determinei que a alteração do cabo USB corrigia esse problema.

mrsoltys
fonte
1
Alterando o cabo USB fixa para mim
Paul Bailey
2

Estou postando isso porque não encontrei essa resposta em outro lugar. Todos os meus clones do nano-chinês (CH340) do Arduino tiveram esse problema após a atualização para o Arduino IDE para 1.8.9. O que funcionou para mim foi usar um Arduino Uno oficial que eu tenho que gravar o gerenciador de inicialização nos nanos defeituosos usando os cabeçalhos do ICSP no nano. Para isso, tudo o que fiz foi seguir as instruções aqui: clone-de-arduino-nano-chinês-com-chip-ch340g-como-consertá-lo . A única coisa que fiz de diferente foi sempre definir a opção "Old Bootloader", como dito anteriormente neste tópico. Fora isso, eu segui completamente as instruções nesse link e salvei meus nanos desse problema irritante. Espero que isso ajude alguém por aí.

Dave
fonte
1

Primeiro, verifique se / dev / ttyUSB0 funciona. Por exemplo, conecte o mouse e verifique se funciona. Segundo, tente selecionar outro quadro. Geralmente, as placas não originais não são reconhecidas corretamente sob seus nomes. Terceiro, tente pressionar o botão de redefinição manualmente durante o upload do esboço. Provavelmente a redefinição automática está interrompida.

Sergei B.
fonte
1

Resolvi um problema no meu caso baixando e instalando drivers FDTM antigos a partir daqui .

Tente instalar e FTDIUSBSerialDriver_10_4_10_5_10_6_10_7.mpkg, em seguida, reinicie o Arduino.

shimaro
fonte
é principalmente relacionado ao problema do OP, eo motorista FTDI só é útil se você tem um Arduino 328.
Zmo
1

Apenas pensei em salientar que minha nova placa Arduino Uno Rev3 usa o seguinte driver LInux:

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

Isso é conhecido como a CONFIG_USB_ACM:opção : no kernel do LInux 3.x mais recente.

Este dispositivo aparece como: /dev/ttyACM0ou similar.

James Mills
fonte
1

Você tem algo conectado ao RESETpino no Arduino?

Eu encontrei esse problema com um LCD gráfico que precisava ser conectado ao RESETpino. Desconectar o fio do jumper entre o LCD e o RESETpino durante o upload do código corrigido para mim, tudo o que você precisa fazer é reconectar assim que o código terminar o upload.

Jamie
fonte
1

Eu encontrei a causa disso ...

Alterar minha porta serial para /dev/tty.usbmodem2131 corrigiu-a. Acontece que eu estava usando a porta serial errada o tempo todo!

Fritz Dodoo
fonte
1

Podes tentar:

  • Faça o check-in no arquivo.txt.txt serial.debug_rate: serial.debug_rate=9600
  • Caso contrário, tente pressionar o botão de redefinição do seu Arduino apenas ao fazer o upload.
  • Caso contrário, tente selecionar outra placa no menu Ferramentas do Arduino IDE e selecione novamente sua placa na lista.
hanoo
fonte
1

Essa combinação das respostas acima resolveu o problema para mim:

  • executou a atualização do Java:

    sudo apt-get install default-jdk

  • depois matou o IDE do Arduino e o reiniciou

  • minha placa correta agora apareceu (Arduino Mega 2560, onde antes a Mega 1280 era a única opção)

  • para os motoristas, fiz o seguinte:

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

Depois disso, meu IDE do Arduino é exibido /dev/ttyACM0no menu ferramentas / porta serial.

Agora, tudo funciona muito bem!

seanhalle
fonte
Obrigado! O JDK não estava causando problemas no meu caso, mas o sudo chmod a + rw / dev / serial / by-id / usb-Arduino ********** fez o trabalho.
Artur Barseghyan
1

Aqui está uma solução que funcionou para mim rodando em um MacBook Pro (desktop).

Eu estava recebendo o mesmo erro e acontece que eu tinha o USB conectado a um dispositivo periférico (meu monitor) em vez de um USB no próprio PC. Ele interrompeu qualquer erro imediatamente e é uma solução simples.

lee
fonte
1

Obrigado @hoipolloi pela direção certa para encontrar a solução.

Enfim, tive que fazer algumas etapas diferentes para corrigir o problema.

No meu caso, o Arduino Uno funcionou bem, mas de repente parou depois de brincar com esboços. Eu estava recebendo stk500_recv(): programmer is not respondingo tempo todo e nada funcionou. Então prestei atenção que o LED 13 está sempre aceso na minha placa. Parecia que algum esboço em loop estava correndo repetidamente no quadro e bloqueando qualquer entrada no quadro. Não tenho certeza, são apenas meus gues.

Tentei clicar em RESET em todos os momentos possíveis sem sorte e de repente tentei as seguintes etapas:

  1. Desconecte o quadro.
  2. Clique e segure RESET.
  3. Conecte-o novamente.
  4. Aguarde alguns segundos.
  5. Solte o botão RESET.

Depois disso, notei que o LED 13 integrado desligou por um segundo e depois acendeu novamente. Parecia que havia uma janela de redefinição curta quando a placa estava sendo redefinida. Então, como na solução do @ hoipolloi, percebi o momento de "redefinir" pouco antes de os três pacotes serem enviados e funcionarem.

Espero que isso ajude você a descobrir o problema se nenhuma outra solução funcionar.

DICA . Se você não vir as três Send: 0 [30] [20]linhas ao carregar o esboço no console, faça o seguinte:

  1. Clique em "Upload" no seu IDE do Arduino.
  2. Olhe para a janela de log. Você poderá encontrar uma linha como esta:

    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. Parece que engole quebra de linha ou símbolos de espaço, como aqui -CE:\Program Files.... Deveria ser -C E:\Program Files. Copie isso como no Bloco de Notas, adicione espaços ausentes para tornar a linha assim:

    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. Adicione 4 -vinstruções como eu fiz acima.

  5. Abra a linha de comando, cole o comando e execute.

Agora você verá muito mais detalhado graças a 4 -vargumentos. Originalmente, o Arduino Studio usa apenas um.

Sergey Metlov
fonte
0

Você instalou / atualizou o driver do cabo FTDI? (Etapa três em http://arduino.cc/en/Guide/Howto ). A execução do IDE do Arduino no meu Raspberry Pi funcionou bem sem a instalação explícita dos drivers (eles foram pré-instalados ou o instalador do IDE do Arduino cuidou dele). No meu Mac, esse não era o caso e eu tive que instalar os drivers de cabo além do IDE.

user3133327
fonte
0

Passei as últimas horas nessa mesma questão ... Basta ir aqui " http://www.ftdichip.com/Drivers/VCP.htm ", baixar os drivers mais recentes e reiniciar. Deve funcionar muito bem depois disso. Também baixei uma noite do software Arduino, mas não acho que isso faça diferença.

rjpalombo
fonte
0

Tente carregar um programa sem -b (a opção de taxa de transmissão). Em ~ / .arduino15 / preferências.txt, defina build.verbose = true, quando o arduino.cc não estiver em execução. Na saída detalhada, você encontrará o arquivo hexadecimal que você deve carregar de um 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

Acabei de substituir o chip 128 pela versão 328 e de Decimile o nome da minha placa foi alterado para Uno ou Ethernet devido à nova taxa de transmissão 115200.

42n4
fonte
0

Se você estiver conectando o seu Arduino através de um hub USB, tente conectá-lo diretamente a uma das portas USB do Mac.
Isso funcionou para mim.

Magnus Johansson
fonte
0

No meu caso, o problema foi levantado quando eu estava tentando fazer expressões aritméticas "estranhas"

por exemplo (3,14 / 4) / 5 ou 3,15% 2,55

Portanto, sugiro que você verifique todas as expressões aritméticas , caso algumas não possam ser calculadas pelo Arduino.

Espero que ajude.

Pontios
fonte
0

No meu caso (Mini Pro), a solução era tão simples, não tenho certeza de como eu perdi isso. Eu precisava cruzar fios rx / tx.

Solução:

  • O pino do Arduino Rx vai para o pino FTDI Tx.
  • O pino do Arduino Tx vai para o pino FTDI Rx.
t0mislav
fonte
0

Para o meu caso, foi a taxa de transmissão errada. Ele chama este 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 

Como você pode ver, a taxa de transmissão está definida como 57600. Quando você remove esse argumento (-b57600) e o executa na linha de comando, ele funciona bem.

vmontazeri
fonte
0

Meu problema foi que atualizei o IDE do Arduino para uma nova versão e não reconecte o fio. Parece que esse foi o problema

Apenas desconecte o cabo e conecte novamente. Obrigado.

atulkhatri
fonte