ELECTRONICS

Плата не прошивается: разбор по порядку

Симптомы разные, а причин немного. Идите по порядку: следующий шаг имеет смысл только тогда, когда предыдущий выполнен.

Порта нет в списке

Самая частая ситуация и самая простая. Значит компьютер вообще не видит плату — до загрузки скетча дело даже не доходит.

Не поставлен драйвер CH340

Причина номер один для всех недорогих плат. На оригинальных Arduino стоит фирменная микросхема USB, на клонах — CH340 или CH341, и Windows её не знает. Симптом: светодиод питания на плате горит, а в диспетчере устройств висит «неизвестное устройство». Ставится бесплатный драйвер по названию микросхемы, после чего плату надо переподключить.

Кабель только для зарядки

Обидная и очень частая причина. Часть USB-кабелей физически не содержит линий данных — в них только питание. Плата будет светиться, но связи не будет. Проверьте другим кабелем, желательно тем, которым подключается телефон и передаёт файлы.

Плата ESP без автосброса

У дешёвых плат ESP32 и ESP8266 бывает не разведена цепь автоматического сброса. Порт при этом виден, но загрузка не начинается. Решение: держать кнопку BOOT в момент, когда среда пишет «Connecting…», и отпустить, когда пойдут точки.

Порт есть, но загрузка обрывается

Тут сообщения бывают разные, но осмысленных причин по-прежнему несколько.

not in sync: resp=0x00

Классическая ошибка avrdude. Плата не отвечает загрузчику. Три типичные причины: выбрана не та плата в меню, занят вывод 0 или 1, либо у Nano стоит старый загрузчик. Последнее лечится переключением «Инструменты → Процессор → ATmega328P (Old Bootloader)».

Порт занят другой программой

Монитор порта, открытый в другом окне среды, или программа вроде плоттера держат порт и не отдают. Закройте всё лишнее. На Linux бывает, что порт занят службой ModemManager — она принимает плату за модем.

На выводах 0 и 1 что-то подключено

Это тот же последовательный порт, через который идёт прошивка. Bluetooth-модуль или второй Arduino, подключённые к ним, перебивают сигнал. Отключите на время загрузки — это не прихоть среды, а физика.

Нет прав доступа к порту

На Linux порт принадлежит группе dialout, и обычный пользователь в неё не входит. Ошибка выглядит как «Permission denied». Добавьте себя в группу и перезайдите в систему.

Скетч залился, но плата ведёт себя странно

Загрузка прошла, а устройство зависает, перезагружается или печатает мусор в монитор порта. Это уже не про загрузку — тут три обычных виновника.

Кончилась оперативная память

У UNO её всего два килобайта, и каждая строка в кавычках занимает место. Среда предупреждает об этом после компиляции, но предупреждение легко пропустить. Лечится макросом F() вокруг текста: Serial.println(F("текст")) — тогда строка остаётся во флеш-памяти и в ОЗУ не копируется.

Не хватает питания

Плата перезагружается по кругу, когда включается что-то потребляющее: мотор, лента светодиодов, радиомодуль. USB-порт компьютера отдаёт около 500 мА, и этого не хватает. Нужен отдельный источник, а земли соединить вместе.

В мониторе порта иероглифы

Скорость в мониторе не совпадает со скоростью в скетче. Посмотрите на число в Serial.begin(9600) и выставьте такое же в правом нижнем углу монитора.

Среда не запускается

Отдельная история, не связанная с платой. У версии 2.x чаще всего виноват испорченный профиль настроек: удалите папку .arduinoIDE в домашнем каталоге и запустите заново. Скетчи при этом не пострадают, они лежат отдельно, в Документы/Arduino.

Если не помогло — попробуйте версию 1.8. Она гораздо легче и запускается там, где новая падает: на старых машинах, слабых ноутбуках и в системах с агрессивным антивирусом.

Рядом