Проблема загрузки эскиза в Arduino - avrdude: stk500_recv (): программист не отвечает

133

У меня есть Arduino Duemilanove с ATmega328 . Я работаю над Ubuntu 12.04 (Precise Pangolin), и версия Arduino IDE - 1.0. Недавно я попытался загрузить на него несколько образцов эскизов, например Blink. Однако ни одна из моих попыток не работает, и каждый раз, когда я пробую, они приводят к одной и той же ошибке:

avrdude: stk500_recv (): программист не отвечает.

Я включил /dev/ttyUSB0в меню ИнструментыПоследовательный порт . Я также выбрал правильную плату (Duemilanove с ATmega328) из списка. Тем не менее, я не могу решить проблему. Я также искал в Интернете, и никакие другие ответы на эту проблему, кажется, не работают для меня. Почему я столкнулся с этой проблемой и как ее решить?

Я также попытался повернуть встроенный ATmega и установить его в другом направлении. Теперь у меня нет проблем с загрузкой, но потом ничего не происходит. Встроенный светодиод тоже вроде не мигает.

Pastafarian
источник
Отключите RST от GND на плате Arduino uno. Я последовал этому руководству и забыл отменить его.
ArtiomLK
Это может быть связано с неправильным (возможно, слишком высоким) значением скорости передачи в бодах.
Конрад Гаевский

Ответы:

108

У меня была эта проблема с Crowduino, работающим с IDE Arduino на OS X. Решением для меня было включить подробный вывод во время загрузки (на панели настроек Arduino IDE).

Затем при загрузке вы можете увидеть, как AVRDUDE отправляет три пакета avrdude: Send: 0 [30] [20](с соответствующими вспышками RX на плате) прямо перед avrdude: ser_recv(): programmer is not respondingошибкой.

Хитрость заключается в том, чтобы нажать кнопку сброса на плате непосредственно перед отправкой этих трех пакетов. Тогда программа будет успешно загружена.

hoipolloi
источник
2
По крайней мере, это решило проблему для меня. Как ты это понял?
SlackOverflow
8
@daniele Другие люди заметили, что если вы перезагрузите через X секунд, то это работает. Я подумал, что пакеты были попыткой рукопожатия. В общем, я решил это, используя Google, терпение и возиться с доской!
hoipolloi
Я попробовал сбросить настройки, и это сработало один раз, но пока я не прочитал это, я не знал, в
какое
4
К вашему сведению - мне пришлось установить последние версии драйверов FTDI, чтобы навсегда решить эту проблему,
Скотт Сильви,
2
Мне помогли обновление драйвера FTDI и перезапуск Arduion (MacOS 10.9.4, Arduino Nano 328)
peetonn
80

Убедитесь, что на выводах Tx / Rx нет ввода. Тогда это будет работать.

rednaks
источник
Это сработало для меня! У меня был модуль bluetooth, подключенный к контактам RX / TX.
johngreen
Это сработало для меня. Мне также пришлось отключить USB-кабель и перезапустить Arduino, потому что я получил еще одну ошибку после отключения контактов (и питания, на всякий
случай
68

У меня была такая же проблема - поэтому я нашел этот вопрос.

Мне только нужно было изменить процессор с «ATmego328P» на «ATmego328P (старый загрузчик)»

Проблема решена - по крайней мере, для меня.

введите описание изображения здесь

Эдгар
источник
Эй, где я могу найти панель выбора процессора в новой среде IDE?
Мухаммед Али
3
@MuhammadAli: Я только что добавил скриншот, чтобы ответить на ваш вопрос
Эдгар
Будь здоров, это тоже была моя проблема.
ofekp
2
Эта проблема может появиться, если вы используете плату ELEGOO NANO. То же решение упоминается и в документе FAQ.
chetan92
Если плата представляет собой Arduino nano и была произведена до января 2018 г., достаточно выбрать «Процессор> ATmega328P (старый загрузчик)» ( arduino.cc/en/Guide/ArduinoNano#toc4 )
Bit-Man
48

Среди хороших идей здесь есть какие-то колдовские разговоры. Давайте постараемся быть более реалистичными в том, что происходит, и подведем итоги, которые стоит проверить:

В принципе, когда это происходит, рекомендуется включить подробный режим для AVRDUDE , чтобы лучше понять, что происходит. Для этого вам нужно только зайти в настройки и установить флажок подробного режима. Также неплохо отказаться от Arduino IDE и запустить консоль, чтобы было удобнее читать выходные данные AVRDUDE, которые вы получите при нажатии на uploadкнопку.

Здесь важно поставить 3 или 4 -vна вызов команды. Вот как выглядят такие команды AVRDUDE с составленными параметрами, поскольку они полностью зависят от того, как был установлен Arduino:

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

Хороший способ получить правильную командную строку - это скопировать ее из подробного вывода журнала вывода Arduino IDE, когда многословие включено.

Когда вы получаете avrdude: stk500_recv(): programmer is not respondingэто, это в основном означает, что что-то не так, до того, как начнется мигание.

В основном вам нужно проверить (от оборудования до программного обеспечения, от низкого уровня до высокого уровня):

  • если на кабеле и / или разъемах нет микропрезов;
  • если точки пайки не замыкаются накоротко (то есть касаются чего-то металлического вокруг), это означает:
    • если на печатной плате нет короткого замыкания между Rxи Tx(обычно это контакты 1и 0);
    • если нет контакта с металлическим элементом под платой или крошечными битами между ножками компонента (например, FTDI, чипом ATmega или любым другим);
  • если микросхема ATmega не отключена (короткое замыкание GND / V CC или обрыв или вход V CC не работает…);
  • если 1и 0штырьки Arduino не используется какой - то щит или индивидуальный дизайн ( /!\не относится к Леонардо , как это имеет независимую обработку USB);
  • если конвертер USB в UART не имеет проблем ( FTDIв более старых версиях Duemilanove или ATmega16U2 в более новых версиях Arduino Unos);
  • если чип ATmega328 зажарен или неправильно установлен;
  • если загрузчик был перезаписан или не работает;
  • если для входа в загрузчик применяется правильная скорость передачи данных;
  • если установлены правильные настройки для целевого микроконтроллера и платы;

Обычно это avrdude -v -v -v -vможет помочь найти, на каком этапе он терпит неудачу. Если он вообще не может установить USB-соединение (неисправность кабеля, USB / UART, PCB…) или это проблема с загрузчиком.

Обновление : я попытался повернуть бортовой ATmega и установить его в другом направлении. Теперь у меня нет проблем с загрузкой, но потом ничего не происходит. Встроенный светодиод тоже вроде не мигает.

Боюсь, что если вы поменяли положение ATmega на обратное, и он не работает, то факт, что вы поместили источник питания на цифровые контакты, мог сжечь ваш чип.

ZMO
источник
Кстати, вывод Arduino имеет в последней строке (перед началом загрузки) путь к avrdude, путь к конфигурации и путь к файлу флэш-памяти. Это можно легко скопировать, вставить в командную строку и добавить -v.
Powtac
В самом деле, однако, iirc (я почти никогда не использую ужасный пользовательский интерфейс), вы должны включить подробный вывод в настройках
zmo
1
Для меня это произошло из-за того, что я установил неправильную скорость передачи в конфигурации eclipse avrdude. Я понял это, когда увидел командную строку в 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
К - Токсичность в СО растет.
Исправлено:avrdude -v -v -v -v -C/etc/avrdude.conf -patmega328 -carduino -P/dev/ttyACM0 -U flash:w:~/Arduino/WebServer/WebServer.ino.standard.hex
К - Токсичность в СО растет.
21

Попробуйте проверить, правильно ли выбрана ваша доска. Щелкните меню Инструменты -> Доска и проверьте, выбрана ли правильная плата.

linhadiretalipe
источник
1
Это было для меня. Я использовал Uno, пока не поджарил его и не получил новую Mega. Совершенно новый Mega видел эту проблему. Я даже не знал, что это меню существует. Спасибо!
Майк
Не то чтобы, но правильный сериал не был выбран ... Действительно, есть над чем подумать! Спасибо!
Хелтонбайкер
как узнать какая плата совместима с моим Arduino?
turmuka
12

Вы можете проверить, подключены ли какие-либо перемычки к контактам 0 и 1. Эти контакты используются для последовательной связи, а подключенные провода могут предотвратить загрузку кода на плату.

Если ничего не подключено, это может быть ошибка в AVRDUDE , вы можете попробовать обновить его.

Ладислас
источник
3
Абсолютно ничего не связано с 0 и 1. avrdudeТакже обновлено и является последней версией.
Пастафариан
Другой платы у меня нет. :( Хотя похоже, что похожая ошибка возникает в Windows, так что это может быть проблема с платой.
Пастафариан
Да, это то, что я бы сказал ... Вы можете попробовать Serial.println()пример, чтобы проверить, если это не только led 13.
Ladislas 04
10

Я тоже столкнулся с этой проблемой, и я решил ее, переустановив последовательный драйвер USB. Пожалуйста, см. Также: http://arduino.cc/en/Guide/Howto и http://www.ftdichip.com/Drivers/VCP.htm

Энтони
источник
1
Всякий раз, когда я использую свой Arduino Duemilanove ATMega328, я всегда забываю это сделать, а также проверяю, что правильная плата выбрана в приложении Arduino (в разделе Инструменты начиная с 1.0.6.
Эндрю
1
Если вы только что установили IDE Arduino, то этот ответ (скорее всего) - то, что вы ищете!
Zaxter
5

Выше ошибка приходит в 3 этапа

  1. Если загрузчик разбился
  2. если вы не выбрали правильный порт и правильную плату из IDE
  3. Если вы общаетесь с другим последовательным портом, подключены. Т.е. GND и контакт Tx подключены к другому устройству связи.
AMPS
источник
В моем случае я выбрал не ту доску. Спасибо AMPS!
Джамшайд Кямран
3

Я решил проблему в OS X v10.10 (Yosemite), следуя этим инструкциям:

Чип FTDI и OS X 10.10

Однако трюк, предложенный hoipolloi, был рабочим временным обходным решением и в этой версии.

Sigismondo
источник
Это также сработало для меня 10.10. После этого сообщения мне не нужно было выполнять шаги 4, 5 или 6. Теперь я могу обновлять скрипты с помощью Arduino IDE несколько раз, не получая этой ошибки.
dbainbridge
3

У меня была такая же проблема при первой попытке Arduino Uno.

Мое решение было довольно простым. Просто отключите, а затем подключите кабель USB.

Озан Атмар
источник
3

В Windows 7 у меня возникала эта проблема несколько раз, каждый раз с разными сообщениями об ошибках. По сути, IDE отправляет не на тот порт.

Чтобы исправить это, просто перейдите в меню ИнструментыПорты → [выберите COM-порт, на котором установлена ​​ваша плата].

Не забудьте дважды проверить порт вашей платы:

  1. Запустите диспетчер устройств

    Стартовое меню

  2. Убедитесь, что ваш драйвер Arduino указан под портом, соответствующим настройкам порта вашей IDE (упомянутым выше).

    Диспетчер устройств

  3. Моя плата указана под портом COM1. Если вы хотите, вы можете просто изменить порт в дополнительных настройках драйвера:

    Введите описание изображения здесь

Доми
источник
2

У меня также есть эта проблема на моем Arduino, работающем на Mac. Это происходит на двух моих Arduinos (Arduino Uno и Arduino Pro, связанных с FTDI).

Для Uno я подключаю кабель к своему компьютеру и нажимаю кнопку загрузки, а затем начинаю считать, пока не замигает светодиод «TX». Затем повторите загрузку, но непосредственно перед тем, как загорится индикатор TX, нажмите кнопку сброса, и загрузка будет успешной.

Позже я определил, что смена кабеля USB устранила эту проблему.

mrsoltys
источник
1
Замена USB-кабеля исправлена ​​для меня
Пол Бейли
2

Я публикую это, потому что нигде не нашел этого ответа. Все мои клоны Arduino nano Chinese (CH340) имели эту проблему после обновления до Arduino IDE до 1.8.9. Что сработало для меня, так это использование запасного официального Arduino Uno, который я должен записать загрузчик на неисправный наноразмер, используя заголовки ICSP на нано. Для этого все, что я сделал, - это следовал инструкциям здесь: chinese-clone-of-arduino-nano-with-chip-ch340g-how-to-fix-it . ЕДИНСТВЕННОЕ, что я сделал иначе, - это всегда устанавливать параметр «Старый загрузчик», как было сказано ранее в этой теме. В остальном я полностью выполнил инструкции по этой ссылке и избавил свои наноразмеры от этой досадной проблемы. Я надеюсь, что это кому-то поможет.

Дейв
источник
1

Сначала убедитесь, что / dev / ttyUSB0 работает. Например, подключите мышь и проверьте, что она работает. Во-вторых, попробуйте выбрать другую доску. Часто неоригинальные платы не распознаются правильно под своим именем. В-третьих, попробуйте вручную нажать кнопку сброса при загрузке скетча. Видимо автоматический сброс сломан.

Сергей Б.
источник
1

Я решил проблему в моем случае при загрузке и установке старых драйверов FDTM из здесь .

Попробуйте установить FTDIUSBSerialDriver_10_4_10_5_10_6_10_7.mpkg, а затем перезапустите Arduino.

shimaro
источник
в основном это не связано с проблемой OP, и драйвер FTDI полезен только в том случае, если у вас есть Arduino 328.
zmo
1

Просто подумал, что хочу указать, что моя новая плата Arduino Uno Rev3 использует следующий драйвер LInux:

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

Это известно как CONFIG_USB_ACM:опция : в последней версии ядра LInux 3.x.

Затем это устройство выглядит как: /dev/ttyACM0или подобное.

Джеймс Миллс
источник
1

Есть ли у вас что-нибудь подключенное к RESETконтакту на Arduino?

Я столкнулся с этой проблемой с графическим ЖК-дисплеем, который необходимо подключить к RESETконтакту. Отсоединение перемычки между ЖК-дисплеем и RESETконтактом во время загрузки кода исправило это для меня, все, что вам нужно было сделать, это повторно подключить после завершения загрузки кода.

Джейми
источник
1

Я нашел причину этого ...

Изменение моего последовательного порта на /dev/tty.usbmodem2131 исправило это. Оказывается, я все время использовал неправильный последовательный порт!

Фриц Доду
источник
1

Можешь попробовать:

  • Проверьте файл preferences.txt serial.debug_rate: serial.debug_rate=9600
  • В противном случае попробуйте нажать кнопку сброса вашего Arduino прямо во время загрузки.
  • В противном случае попробуйте выбрать другую карту в меню « Инструменты» Arduino IDE, а затем повторно выберите свою карту в списке.
hanoo
источник
1

Эта комбинация приведенных выше ответов решила для меня проблему:

  • выполнил обновление Java:

    sudo apt-get install default-jdk

  • затем убил Arduino IDE и перезапустил ее

  • теперь появилась моя правильная плата (Arduino Mega 2560, где до Mega 1280 был единственный вариант)

  • для драйверов я сделал так:

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

После этого моя Arduino IDE отображается /dev/ttyACM0в меню инструментов / последовательного порта.

Теперь все отлично работает!

seanhalle
источник
Спасибо! В моем случае JDK не вызывал проблем, но sudo chmod a + rw / dev / serial / by-id / usb-Arduino ********** справился со своей задачей.
Артур Барсегян
1

Вот решение, которое помогло мне работать на MacBook Pro (на рабочем столе).

Я получал ту же ошибку, и оказалось, что это потому, что у меня был USB, подключенный к периферийному устройству (моему монитору), а не к USB на самом ПК. Он сразу остановил все ошибки и является простым решением.

подветренный
источник
1

Спасибо @hoipolloi за правильное направление в поиске решения.

Во всяком случае, мне пришлось сделать несколько другие шаги, чтобы исправить проблему.

В моем случае Arduino Uno работала нормально, но внезапно перестала работать после некоторой игры с эскизами. Я получал stk500_recv(): programmer is not respondingвсе время, и ничего не работало. Потом обратил внимание, что на моей плате всегда горит светодиод 13. Это выглядело так, как будто какой-то жесткий зацикленный набросок повторялся снова и снова на доске и блокировал любой ввод на плату. Не уверен, это всего лишь мои предположения.

Я безуспешно пытался нажимать СБРОС во все возможные моменты и внезапно попробовал следующие шаги:

  1. Отключите плату.
  2. Нажмите и удерживайте RESET.
  3. Подключите снова.
  4. Подождите пару секунд.
  5. Отпустите кнопку RESET.

После этого я заметил, что на плате 13 светодиод на секунду погас, а затем снова включился. Похоже, было короткое окно сброса, когда плата действительно сбрасывалась. Затем, как и в решении @hoipolloi, я поймал момент «сброса» прямо перед отправкой трех пакетов, и это сработало.

Надеюсь, это поможет вам разобраться в проблеме, если ни одно из других решений не работает.

СОВЕТ . Если вы не видите три Send: 0 [30] [20]строки при загрузке эскиза в консоль, сделайте следующее:

  1. Нажмите «Загрузить» в вашей Arduino IDE.
  2. Посмотрите в окно журнала. Вы сможете найти такую ​​строку:

    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. Похоже, он проглатывает символы разрыва строки или пробела, как здесь -CE:\Program Files.... Так и должно быть -C E:\Program Files. Скопируйте это как в Блокнот, добавьте пропущенные пробелы, чтобы сделать строку такой:

    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. Добавьте 4 -vинструкции, как я делал выше.

  5. Откройте командную строку, вставьте в нее команду и запустите.

Теперь вы увидите намного больше подробностей благодаря 4 -vаргументам. Изначально Arduino Studio использует только один.

Сергей Метлов
источник
0

Вы устанавливали / обновляли драйвер для кабеля FTDI? (Шаг третий на http://arduino.cc/en/Guide/Howto ). Запуск Arduino IDE из моего Raspberry Pi работал нормально без явной установки драйверов (либо они были предварительно установлены, либо установщик Arduino IDE позаботился об этом). На моем Mac это было не так, и мне пришлось устанавливать драйверы кабелей в дополнение к IDE.

user3133327
источник
0

Я только что потратил последние несколько часов на эту же проблему ... Просто зайдите сюда " http://www.ftdichip.com/Drivers/VCP.htm ", загрузите последние версии драйверов и перезагрузитесь. После этого все должно работать нормально. Я также загружал каждую ночь программного обеспечения Arduino, но я не заметил, чтобы это имело значение.

rjpalombo
источник
0

Попробуйте загрузить программу без -b (опция скорости передачи). В ~ / .arduino15 / preferences.txt установите build.verbose = true, когда arduino.cc не запущен. В подробном выводе вы найдете шестнадцатеричный файл, который вы должны загрузить из консоли:

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

Я просто заменяю чип 128 на версию 328, и с Decimile название моей платы было изменено на Uno или Ethernet из-за новой скорости 115200 бод.

42n4
источник
0

Если вы подключаете Arduino через USB-концентратор, попробуйте подключить его непосредственно к одному из USB-портов на Mac.
Это сработало для меня.

Магнус Йоханссон
источник
0

В моем случае проблема возникла, когда я пытался составить «странные» арифметические выражения.

например (3,14 / 4) / 5 или 3,15% 2,55

Итак, я предлагаю вам проверить все арифметические выражения на случай, если некоторые из них не могут быть вычислены Arduino.

Надеюсь, поможет.

Pontios
источник
0

В моем случае (Mini Pro) решение было настолько простым, что я не понял, как я это пропустил. Мне нужно было пересечь провода RX / TX.

Решение:

  • Вывод Arduino Rx идет на вывод FTDI Tx.
  • Вывод Arduino Tx подключается к выводу FTDI Rx.
t0mislav
источник
0

В моем случае это была неправильная скорость передачи данных. Он вызывает эту команду:

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 

Как видите, скорость передачи установлена ​​на 57600. Когда вы удаляете этот аргумент (-b57600) и запускаете его в командной строке, он работает нормально.

vmontazeri
источник
0

Моя проблема заключалась в том, что я обновил Arduino IDE до новой версии и не подключал провод заново. Похоже, это была проблема

Просто отключите кабель и подключите снова. Спасибо.

atulkhatri
источник