Проблема з завантаженням Arduino Sketch - avrdude: stk500_recv (): програміст не відповідає


133

У мене є Arduino Duemilanove з ATmega328 . Я працюю над Ubuntu 12.04 (Precision Pangolin), а версія Arduino IDE - 1,0. Нещодавно я спробував завантажити на нього кілька зразків ескізів, таких як Blink. Однак жодна з моїх спроб не працює, і вони призводять до однієї і тієї ж помилки кожного разу, коли я її намагаюся:

avrdude: stk500_recv (): програміст не відповідає.

Увімкнено /dev/ttyUSB0в меню ІнструментиСерійний порт . Я також вибрав зі списку правильну дошку (Duemilanove з ATmega328). Але я не в змозі вирішити проблему. Я також шукав в Інтернеті, і жодна з інших відповідей на цю проблему, здається, не працює для мене. Чому я стикаюся з цим питанням і як його вирішити?

Я також спробував повернути бортову ATmega і встановити її в іншому напрямку. Зараз у мене не виникає проблем із завантаженням, але після цього нічого не відбувається. Бортовий світлодіод також не здається блимає.


Відключіть RST від GND на платі Arduino uno. Я дотримувався цього навчального посібника і забув про те, що НЕОБХІДНО.
ArtiomLK

Це може бути тому, що для швидкості передачі даних встановлено неправильне (ймовірно, занадто високе) значення.
Конрад Гаєвський

Відповіді:


108

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

Потім під час завантаження ви бачите, що AVRDUDE надсилає три пакети avrdude: Send: 0 [30] [20](із відповідними спалахами RX на дошці) безпосередньо перед avrdude: ser_recv(): programmer is not respondingпомилкою.

Хитрість полягає в натисканні кнопки скидання на дошці безпосередньо перед надсиланням цих трьох пакетів. Тоді програма буде успішно завантажена.


2
Що ж, це вирішило для мене проблему принаймні. Як ви це зрозуміли?
SlackOverflow

8
@daniele Інші люди помітили, що якщо скинути через X секунд, це спрацює. Я вважав, що пакети - це якась спроба рукостискання. Отже, я вирішив це за допомогою Google, терпіння та обертання з дошкою!
hoipolloi

Я спробував перезавантажити, і це спрацювало один раз, але, поки я не прочитав це, я не знав правильний час для цього, дякую
Ulises Layera

4
FYI - Мені довелося встановити останні драйвери FTDI, щоб остаточно вирішити цю проблему
Скотт Сілві

2
Оновлення драйвера FTDI та перезапуск Arduion мені допомогли (MacOS 10.9.4, Arduino Nano 328)
peetonn

80

Переконайтесь, що на штифтах Tx / Rx немає вводу. Тоді це спрацює.


Це працювало для мене! У мене був модуль Bluetooth, підключений до штифтів RX / TX.
johngreen

Це працювало для мене. Мені довелося відключити ще й кабель usb та перезапустити arduino, тому що після відключення штифтів (і живлення, просто для переконання) я отримав ще одну помилку
oneindelijk

68

У мене була така ж проблема - саме тому я знайшов це питання.

Мені довелося лише змінити процесор з "ATmego328P" на "ATmego328P (Old Bootloader)"

Проблема вирішена - принаймні для мене.

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


Привіт, де я можу знайти панель вибору процесора в новій IDE?
Мухаммед Алі

3
@MuhammadAli: Я щойно додав скріншот, щоб відповісти на ваше запитання
Едгар

Благословіть вас, це було і моє питання.
ofekp

2
Ця проблема може з’явитися, якщо ви використовуєте плату ELEGOO NANO. Це ж рішення згадується і в документі FAQ.
chetan92

Якщо плата є нано Arduino і була виготовлена ​​раніше до січня 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, а потім це не спрацювало, той факт, що ви розмістили джерело живлення на цифрових штифтах, може спалити вашу мікросхему.


До речі, вихід Arduino має як останній рядок (перед початком завантаження) шлях до avrdude, шлях до конфігурації та шлях до флеш-файлу. Це можна легко скопіювати в копію командного рядка та додати -v.
powtac

Дійсно, однак, iirc (я майже ніколи не використовую жахливий інтерфейс), ви повинні включити багатослівний вихід у налаштуваннях
zmo

1
Для мене це сталося тому, що я встановив неправильну швидкість передачі в конфігурації avrdude eclipse avrdude. З'ясував це, коли побачив командний рядок на ардуїно IDE.
Техас Кале

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 - Токсичність в SO зростає.

Виправлено:avrdude -v -v -v -v -C/etc/avrdude.conf -patmega328 -carduino -P/dev/ttyACM0 -U flash:w:~/Arduino/WebServer/WebServer.ino.standard.hex
K - Токсичність в SO зростає.

21

Спробуйте перевірити, чи правильно обрана ваша дошка. Клацніть на меню Інструменти -> Дошка та перевірте, чи правильно обрана дошка.


1
Це було для мене. Я використовував Uno, поки не обсмажив його і не отримав нову Мегу. Зовсім нова Mega бачила цю проблему. Я навіть не знав, що це меню існує. Дякую!
Майк

Не те, але правильний серіал не був обраний ... Щось подумати, справді! Дякую!
heltonbiker

як я можу знати, яка дошка сумісна з моїм Arduino?
турмука

12

Ви можете перевірити, чи є якісь дротяні дроти, підключені до штифтів 0 і 1. Ці штифти використовуються для послідовного зв’язку, а підключені дроти можуть запобігти завантаженню коду на плату.

Якщо нічого не підключено, це може бути помилка з AVRDUDE , ви можете спробувати оновити його.


3
З 0 і 1. немає абсолютно нічого, avrdudeтакож оновлено і є останньою версією.
Пастафаріан

У мене немає іншої дошки. :( Хоча, схоже, помилка трапляється і в Windows, тому може бути проблема з дошкою.
Pastafarian

Так, я б сказав, що ви можете спробувати зразок, Serial.println()щоб перевірити, чи це не лише те led 13.
ladislas

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, то ця відповідь (швидше за все), те, що ви шукаєте!
Закстер

5

Вищеописана помилка складається в 3 етапи

  1. Якщо збій завантажувача
  2. якщо ви не вибрали належний порт і відповідну плату з IDE
  3. Якщо ви спілкуєтесь з іншим послідовним портом, підключено. GND і Tx-контакт підключені до іншого комунікаційного пристрою

У моєму випадку я обрав неправильну дошку. Дякую AMPS!
Джамшайд Камран

3

Я вирішив проблему в OS X v10.10 (Yosemite), дотримуючись цих інструкцій:

FTDI чіп і OS X 10.10

Однак фокус, запропонований hoipolloi, був робочим тимчасовим рішенням і для цієї версії.


Це також працювало для мене 10.10. Після цього допису мені не довелося робити кроків 4, 5 або 6. Тепер я можу оновити скрипти, використовуючи Arduino IDE кілька разів, не отримуючи цієї помилки.
dbainbridge

3

У мене була та сама проблема під час моєї першої спроби Ардуїно Уно.

Моє рішення було досить простим. Просто підключіть та підключіть USB-кабель.


3

У Windows 7 у мене була ця проблема кілька разів, кожен раз із різними повідомленнями про помилки. В основному, IDE відправляється в неправильний порт.

Щоб виправити це, просто перейдіть до меню ІнструментиПорти → [виберіть COM-порт, на якому працює ваша плата].

Переконайтесь, що двічі перевірити порт вашої ради:

  1. Запустіть диспетчер пристроїв

    Меню "Пуск"

  2. Переконайтеся, що ваш драйвер Arduino вказаний під портом, який відповідає налаштуванням порту вашого IDE (згаданий вище)

    Диспетчер пристроїв

  3. Моя дошка занесена до порту COM1. Якщо ви хочете, ви можете просто змінити порт у додаткових налаштуваннях драйвера:

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


2

У мене є ця проблема і на моєму Arduino, який працює на Mac. Це трапляється на двох моїх Arduinos (A Arduino Uno та Arduino Pro, пов'язаних з FTDI).

Для Uno я підключаю кабель до комп’ютера і натискаю на завантаження, а потім починаю рахувати, доки індикатор "TX" не почне блимати. Потім повторіть завантаження, але безпосередньо перед тим, як загориться світлодіод TX, натисніть кнопку скидання, і завантаження буде успішним.

Пізніше я визначив, що зміна кабелю USB вирішила цю проблему.


1
Зміна зафіксованого для мене USB-кабелю
Пол Бейлі

2

Я публікую це, оскільки не знайшов такої відповіді в іншому місці. Усі мої клони Arduino нано-китайський (CH340) мали цю проблему після переходу на Arduino IDE до 1.8.9. Що для мене спрацювало, - це використовувати запасний офіційний Arduino Uno, який повинен спалити завантажувач на несправному нано, використовуючи заголовки ICSP на нано. Для цього все, що я робив, було дотримуватися тут інструкцій: китайський-клон-ардуїно-нано-з-чіпом-ch340g-як-як виправити-це . ТІЛЬКО, що я робив інакше, - це завжди встановлювати параметр "Старий завантажувач", як було сказано раніше в цій темі. Крім цього, я повністю дотримувався інструкції на цьому посиланні і врятував свій нанос від цієї прикрої проблеми. Я сподіваюся, що це допомагає комусь там.


1

Спочатку переконайтеся, що / dev / ttyUSB0 працює. Наприклад, підключіть мишку та перевірте, чи працює вона. По-друге, спробуйте вибрати іншу дошку. Часто неординарні дошки не розпізнають правильно під своїми назвами. По-третє, спробуйте натиснути кнопку скидання вручну під час завантаження ескізу. Можливо, автоматичне скидання порушено.


1

Я вирішив проблему в моєму випадку при завантаженні і встановленні старих драйверів FDTM з тут .

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


це здебільшого не пов'язане з проблемою ОП, і драйвер 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, а потім переділіть свою картку у списку.

1

Ця комбінація вищезазначених відповідей вирішила для мене проблему:

  • здійснив оновлення Java:

    sudo apt-get install default-jdk

  • потім вбив IDE Arduino і відновив його

  • тепер з’явилася моя правильна дошка (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в меню інструментів / послідовного порту.

Тепер все працює чудово!


Дякую! 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 постійно вмикається на моїй платі. Схоже, якийсь ескіз із твердим циклом перебігав на дошці і блокував будь-який вклад до дошки. Не впевнений, це лише мої здогадки.

Я намагався натиснути кнопку RESET у всі можливі моменти без будь-якої удачі і раптом спробував виконати наступні кроки:

  1. Відключіть плату.
  2. Клацніть та утримуйте RESET.
  3. Підключіть його ще раз.
  4. Почекайте пару секунд.
  5. Відпустіть кнопку RESET.

Після цього я помітив, що бортовий 13 світлодіод вимикався на секунду, а потім знову включався. Схоже, було коротке вікно скидання, коли плата насправді скидається. Тоді, як у рішенні @ hoipolloi, я вловив момент "скидання" прямо до відправлення трьох пакетів, і це спрацювало.

Я сподіваюся, що це допоможе вам розібратися з проблемою, якщо жодне інше рішення не працює.

ПОРАДА . Якщо Send: 0 [30] [20]під час завантаження ескізу на консоль ви не бачите трьох рядків, виконайте наступне:

  1. Клацніть «Завантажити» у вашому Ardeino 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 використовує лише одне.


0

Ви встановили / оновили драйвер для кабелю FTDI? (Крок третій на http://arduino.cc/en/Guide/Howto ). Запуск Arduino IDE з мого Raspberry Pi спрацював нормально, не встановлюючи явно драйверів (або вони були попередньо встановлені, або інсталятор Arduino IDE подбав про це). На моєму Mac це не було так, і мені довелося встановити драйвери кабелю на додаток до IDE.


0

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


0

Спробуйте завантажити програму без -b (опція швидкості передачі). У ~ / .arduino15 / preferences.txt встановити build.verbose = вірно, коли 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.


0

Якщо ви підключаєте свій Arduino через USB-концентратор, спробуйте підключити його безпосередньо до одного з USB-портів на Mac.
Це працювало для мене.


0

У моєму випадку проблема виникала, коли я намагався робити якісь "дивні" арифметичні вирази

наприклад (3,14 / 4) / 5 або 3,15% 2,55

Отже, я б запропонував вам перевірити всі арифметичні вирази, якщо ардуїно деякі з них не можуть бути обчислені.

Сподіваюся, це допомагає.


0

У моєму випадку (Mini Pro) рішення було таким простим, не впевнений, як я це пропустив. Мені потрібно було кросовер проводів rx / tx.

Рішення:

  • Штифт Arduino Rx переходить до штифта FTDI Tx.
  • Штифт Arduino Tx переходить до штифта FTDI Rx.

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) і запускаєте його в командному рядку, він працює добре.


0

Моя проблема полягала в тому, що я оновив Arduino IDE до нової версії і не підключив провід. Схоже, в цьому і була проблема

Просто відключіть кабель і підключіться знову. Дякую.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.