Ошибка avrdude stk500_recv() programmer is not responding
Сообщения вида
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00значат одно: Arduino IDE отправила плате запрос на загрузку, а загрузчик платы не ответил. Загрузчик (bootloader) — маленькая программа в микроконтроллере, которая после сброса пару секунд ждёт новый скетч.
Что проверить
Проверяйте причины по порядку, пока скетч не загрузится, — первые три встречаются чаще всего.
Выберите правильный порт
В списке выбора платы или в Tools → Port может быть выбран чужой порт — например, встроенный COM1 или порт другого устройства. Отключите плату и посмотрите, какой порт исчез из списка, затем подключите снова и выберите именно его. Если порта нет вовсе — смотрите справку Arduino не определяется компьютером.
Появилось уведомление «Done uploading» — дело было в порте.
Проверьте плату и процессор
В Tools → Board должна быть ваша плата: для Uno — Arduino Uno, для Nano — Arduino Nano. Загрузчики разных плат ждут скетч на разной скорости, и при неверном выборе связи не будет.
Для Arduino Nano почти всегда помогает Tools → Processor → ATmega328P (Old Bootloader). На многих совместимых Nano записан старый загрузчик, а пункт ATmega328P рассчитан на новый. Если и так не грузится — верните обычный ATmega328P.
Скетч загрузился — запомните, какой процессор подошёл вашей плате.
Отключите всё от выводов 0 и 1
Выводы 0 (
RX) и 1 (TX) соединены с микросхемой USB, через них скетч и попадает в плату. Модуль Bluetooth, GPS или просто провод на этих выводах мешает загрузке. Отключите их на время загрузки или перенесите модуль на другие выводы (для этого есть встроенная библиотекаSoftwareSerial).Без проводов на выводах 0 и 1 скетч загрузился — дальше подключайте модуль к другим выводам.
Не помогло — дальше: «Закройте программы, которые держат порт»
Закройте программы, которые держат порт
Другая программа держит порт открытым: второе окно Arduino IDE, терминал, программа для 3D-принтера, слайсер. Закройте её. В Windows ошибка тогда часто звучит как
Access is deniedили «порт занят».После закрытия программы скетч загрузился — не держите её открытой во время загрузки.
Сбросьте плату вручную
Перед загрузкой IDE сама перезапускает плату через USB. Если на плате это не срабатывает, помогает ручной сброс: нажмите Upload, и как только в панели Output закончится компиляция и появится строка о загрузке (
Uploading…), коротко нажмите кнопку RESET на плате. Момент нужно поймать — иногда со второй-третьей попытки.С ручным сбросом загрузка прошла — плата исправна, просто сама не перезапускается.
Смените кабель, разъём, драйвер
Кабель с плохим контактом или переходник USB может пропускать данные с ошибками. Попробуйте другой кабель и другой порт компьютера, без разветвителя. Для плат с CH340 переустановите драйвер с сайта производителя.
С другим кабелем или портом загрузка проходит — старый кабель лучше выбросить.
Проверьте загрузчик и саму плату
Если ничего не помогло:
- Новый голый микроконтроллер ATmega328P или плата после экспериментов могут быть без загрузчика. Его записывают программатором через разъём ICSP; программатором может служить вторая Arduino со скетчем File → Examples → 11.ArduinoISP → ArduinoISP. Это отдельная процедура — следуйте официальной инструкции Arduino по ArduinoISP.
- Плата могла пострадать от неверного питания или короткого замыкания. Проверка: загружается ли Blink на другую плату с того же компьютера и кабеля — если да, дело в плате.
Быстрая проверка
Отключите от платы всё, кроме USB, выберите правильную плату и порт, откройте File → Examples → 01.Basics → Blink и нажмите Upload. Если Blink загрузился — плата исправна, и дело в подключённой схеме или в скетче.