Заказ пришёл в четверг: в коробке лежала Uno — я тогда ещё не знал, что это клон, — макетка, пучок проводов и светодиоды в пакетике. Вечер пятницы я распланировал за минуту: скачать Arduino IDE, залить мигалку, полюбоваться. Реальность вышла иной. Программа установилась, плата по USB завелась, зелёный светодиод ON горел — а в меню «Инструменты → Порт» строка была серой и на клики не отвечала. Ни ошибки, ни подсказки. Просто недоступный пункт меню и растущее подозрение, что плата бракованная.
Бракованным оказалось не железо. Плате не хватало драйвера USB-чипа — классическая история для плат из наборов, и в этом уроке я разберу её со всеми симптомами и лечением. Мы скачаем правильную версию среды, отличим IDE 2.x от классической 1.8.19, поставим драйвер CH340 и добьёмся того, чтобы пункт «Порт» ожил. В конце — первый самотест на виртуальной плате: симулятор всегда «подключён», поэтому его можно пройти прямо в браузере, пока драйвер доустанавливается на настоящем компьютере.
Arduino IDE 2.x или классическая 1.8.19: что качать
Качать среду нужно с одного места — страницы arduino.cc/en/software. Ссылки из первых строк поиска ведут туда же, но не всегда: под видом «универсального установщика» с файловых обменников скачивали всё, что угодно, начиная от банальной рекламы и заканчивая майнерами. Правило на всю ардуинную жизнь: официальная страница, раздел Software, точка.
На странице их две линейки. Arduino IDE 2.x — текущая среда, первая стабильная версия вышла в сентябре 2022 года. Внутри — нормальный редактор с автодополнением: начинаете набирать digital, среда показывает варианты с типами аргументов; наводите курсор на функцию — видите её сигнатуру. Есть отладчик с точками останова (для плат, которые его поддерживают), Serial Monitor и Serial Plotter живут в боковой панели, поиск работает по всем файлам проекта. Выглядит и ощущается как современный редактор кода, потому что им и является.
Arduino IDE 1.8.19 — последняя версия классической линейки, январь 2022 года. Её больше не развивают, но скачивание оставили в архиве, и это не жест доброты, а необходимость: старые ядра сторонних плат и учебные классы до сих пор живут на 1.8.x. У меня она тоже стоит — как запасной аэродром. Условия выбора простые: если у вас Windows 10 или 11 и хотя бы 8 ГБ памяти — берите 2.x, она на 4 ГБ уже заметно потеет. Если машина старая, с Windows 7 — выбор за вас сделали: 2.x на семёрке не запустится, качайте 1.8.19. Она легче и ставится даже портативно — zip-архивом, без установки, хоть на флешку.
Установка скучная и приятная: запускаете установщик, соглашаетесь с путём по умолчанию, на вопрос про драйверы для плат отвечаете «да» (это про официальные платы, клоны — отдельная песня ниже). Свои скетчи среда складывает в папку Документы\Arduino — запомните этот путь, библиотеки будут жить в соседней папке.
Первый запуск тоже имеет пару нюансов. Первая компиляция даже пустого скетча занимает заметные секунды: среде нужно собрать ядро целиком; следующие проходят быстрее, и это нормальное поведение, а не признак поломки. В настройках я сразу включаю подробный вывод компиляции — на первых порах он покажет, какие файлы реально участвуют в сборке, а пригодится уже в следующем уроке, когда будем читать ошибки. И включите подсветку пробелов на конце строк, если она есть: половина странных синтаксических ошибок в скетчах с форумов — невидимые символы при копировании.
Серый порт: тупик с драйвером CH340 и выход из него
Возвращаюсь в ту пятницу. Открываю Диспетчер устройств: вместо заветного «Порты (COM и LPT)» — строчка «Неизвестное устройство» с жёлтым значком. Это и был весь диагноз, просто я об этом ещё не знал.
Физика вопроса такая: разъём USB на плате подключён не к главному чипу ATmega328P, а к отдельному преобразователю USB-UART. На официальной Uno эту работу делает ATmega16U2 — драйвер для него Windows 10 и 11 ставят сами, молча. На клонах, которых в наборах девять из десяти, стоит CH340 — чип за копейки от компании WCH, из-за которого плата и стоит втрое дешевле оригинала. Но драйвер для него Windows по умолчанию не подтягивает: иногда помогает обновление системы, чаще нет. Симптом тот самый: пункт «Порт» серый, а в Диспетчере устройств — жёлтый восклицательный знак или загадочный «USB2.0-Serial».
Лечение занимает пять минут. Идёте на сайт производителя wch-ic.com, раздел загрузок, файл CH341SER (именно он нужен для CH340 и родственного CH341 — драйвер у них общий), устанавливаете, переподключаете плату. В Диспетчере устройств появляется «USB-SERIAL CH340 (COM3)». Номер может быть любым — COM3, COM7, COM17: Windows раздаёт их по порядку обнаружения, и это нормально. Если устройство появилось, а пункт «Порт» в среде всё ещё серый — перезапустите IDE: она сканирует порты при старте и о появлении нового обычно узнаёт только после перезапуска.
Моё мнение с оговоркой: драйвер ставьте с сайта WCH, а не «пакетом всех драйверов» из соцсетей. Пакеты те весёлые: одну утилиту на 500 килобайт тащат под видом сборника на 300 мегабайт с сюрпризами. Пять минут против вечера с антивирусом — сделка не в пользу сборников.
Плата и порт: первый диалог со средой
Драйвер встал, «USB-SERIAL CH340 (COM3)» появился — теперь среда должна узнать две вещи: с какой платой и по какому порту работать. Первое — меню «Инструменты → Плата», для классической Uno это просто Arduino Uno; в IDE 2.x выбор платы и порта вынесен в выпадающий список прямо на панели сверху, рядом с кнопкой «Загрузить». Второе — меню «Инструменты → Порт»: если в списке один пункт, выбор очевиден. Если несколько (мышка, принтер, ещё что-то) — есть трюк: переподключите плату по USB и посмотрите, какой пункт появился или исчез. Это и есть ваш порт.
Первый тест — без единой строчки своего кода: «Файл → Примеры → 01.Basics → Blink». Нажимаете «Загрузить», на плате начинают мигать светодиоды TX и RX — это по проводу бегут байты прошивки, — через несколько секунд появляется «Загрузка завершена», и светодиод L на плате принимается мигать раз в секунду. На этом самотест закончен: драйвер жив, порт жив, загрузка работает, плата вам отвечает. Всё, что было серым, теперь светится.
Мелкая, но полезная деталь про номера портов: Windows привязывает COM к конкретному USB-разъёму не навсегда. Втыкайте плату в тот же порт компьютера — номер сохранится; переставите в другое гнездо — можете получить COM4 вместо COM3, и среда с первого раза не найдёт плату. Это не поломка: просто откройте список портов заново и выберите появившийся.
А если железо ещё едет с маркетплейса или драйвер качается — виртуальная плата в симуляторе ждёт ниже: там порт подключён всегда, и ритуал «написал → загрузил → смотришь на светодиод» тренируется один в один.
- Поменяйте текст в
Serial.printlnна свой и запустите снова. Обратите внимание: после каждой «загрузки» программа начинает с setup() — это полезное знание для следующего урока. - Ускорьте мигание до пяти раз в секунду: сумма двух delay() должна стать 200 мс. Проверьте по Serial, что сообщения успевают смениться.
- Поставьте delay(100). В Serial-мониторе сообщения пойдут потоком — так выглядит «слишком быстрый» вывод, и вы заранее поймёте, зачем монитору нужна скорость порта в бодах.
- На настоящей плате: переподключите USB-кабель и пересчитайте пункты в «Инструменты → Порт» — найдите появившийся. Это ваш COM на ближайшие месяцы.
- IDE 2.x — основная среда: автодополнение, отладчик, Serial-панель; 1.8.19 — классика для старых машин и устаревших ядер плат
- Скачивать только с arduino.cc/en/software — файловые обменники для этого не место
- Клоны Uno работают на чипе CH340: ставим драйвер CH341SER с сайта WCH, в Диспетчере устройств появляется USB-SERIAL CH340 (COM3)
- Серый пункт «Порт» = нет драйвера, зарядный кабель или среда не пересканировала порты после установки
- Плата и порт выбираются в «Инструменты»; тест связи — пример Blink, светодиоды TX/RX при заливке мигают
- 1. Пункт «Порт» в меню серый, светодиод ON на плате горит. Что это чаще всего значит?
- 2. Какой чип отвечает за USB-связь на китайской Uno и какой драйвер ему нужен?
- 3. Чем Arduino IDE 2.x отличается от классической 1.8.19?
- 4. Светодиод L на плате замигал после загрузки Blink. Что это доказывает?
Порт ожил, плата отвечает — фундамент готов. Но между «среда видит плату» и «работа идёт как часы» есть ещё два навыка: понимать, что именно делают кнопки «Проверить» и «Загрузить», и не впадать в панику от красного текста ошибок внизу окна. Их я разбираю в следующем уроке — вместе со знаменитым «avrdude: stk500_recv()», от которого у новичков в первый месяц сжимается сердце. Держите тот же скетч Blink под рукой: на нём и потренируемся.
Частые вопросы по теме урока
- Пункт «Порт» в меню серый, светодиод ON на плате горит. Что это чаще всего значит?
- Светодиод ON показывает только питание от USB. Для связи нужен драйвер чипа (у клонов — CH340) и кабель с проводами данных; зарядные кабели данных не имеют. Не установлен драйвер USB-чипа или кабель без проводов данных
- Какой чип отвечает за USB-связь на китайской Uno и какой драйвер ему нужен?
- Главный чип ATmega328P USB не держит. У клонов мост USB-UART — CH340, ему нужен драйвер CH341SER; у официальных плат мост ATmega16U2 и драйвер встроен в Windows 10/11. CH340, драйвер CH341SER с сайта WCH
- Чем Arduino IDE 2.x отличается от классической 1.8.19?
- 2.x — текущая среда с автодополнением, отладчиком и современным редактором. 1.8.19 (январь 2022) не развивается, но нужна для старых систем вроде Windows 7 и старых ядер плат. В 2.x есть автодополнение и отладчик, в 1.8.19 их нет
- Светодиод L на плате замигал после загрузки Blink. Что это доказывает?
- Чтобы Blink попал на плату, среда должна была найти порт, а загрузчик — принять прошивку. Мигающий L — подтверждение всей цепочки: драйвер, порт, загрузка. Что драйвер, порт и механизм загрузки работают