Второй ESP32 в моей жизни приехал раньше первого: DevKit за 500 рублей на распродаже, проект на Wi-Fi ещё не придуман. Когда придумался, я открыл Arduino IDE и попал в тупик, знакомый сотням людей: в списке плат Uno, Nano, Mega, Leonardo — и всё. ESP32 не прячется в подменю, его там просто нет, и кнопка «Загрузить» честно отказывается работать с платой, которой для среды не существует.
Среда ни при чём: из коробки Arduino IDE знает только AVR-платы Arduino. Всё остальное — сторонние ядра, которые ставятся пакетами, и ESP32 здесь не исключение, хотя пакет у него официальный — от Espressif, производителя самого чипа. Механика та же, что при установке библиотек одной кнопкой: адрес источника — и поиск в менеджере. В этом уроке добавим плату, выберем правильный пункт в списке, зальём первый скетч и разберём два классических затыка: пустой поиск и вечное «Connecting...».
Шаг 1. Адрес пакета в Настройках
Открывайте «Файл → Настройки» и находите поле «Дополнительные ссылки для Менеджера плат». Вставляйте адрес https://espressif.github.io/arduino-esp32/package_esp32_index.json — это текущий источник пакетов Espressif. В старых инструкциях гуляет длинный вариант на raw.githubusercontent.com: он тоже рабочий, я им годами пользовался, но короткий адрес обновляется быстрее. В то же поле через запятую вписывают и другие ядра — например, адрес ESP8266, которым займёмся в следующем уроке: одна настройка, два семейства плат.
Что вы вообще вставили? Адрес текстового файла-каталога: среда читает его и рисует из него список пакетов с версиями и ссылками. После сохранения настройки ничего не вспыхнет и не закачается — это нормально, люди пугаются: файл просто ждёт, пока вы зайдёте в Менеджер плат. Если список там остался прежним — перезапустите IDE: она подтягивает каталог при старте, а не в реальном времени.
Шаг 2. Установка пакета
«Инструменты → Плата → Менеджер плат» — в IDE 2 это иконка плат в левой панели. В поиске набираете esp32, появляется «esp32 by Espressif Systems» — жмёте «Установить». Среда скачает компиляторы Xtensa и RISC-V, утилиты загрузки и само ядро: пара сотен мегабайт и от пяти минут до получаса в зависимости от сети — нормально, не закрывайте окно. Если установка падает с «Failed to install platform», в девяти случаях из десяти виновата сеть: прокси, антивирус с проверкой HTTPS, мобильный интернет с обрывами — повторите попытку. И учтите: свежие версии ядра esp32 3.x требуют IDE 2.x, на классической 1.8.19 они не встают.
Две мелочи, которые сэкономят нервы. Первая: у пакета в выпадающем списке есть версии — обычно ставят последнюю, но для старых проектов можно выбрать конкретную, например 2.0.17 под давние наработки. Вторая: уже установленное ядро не обновляется само — новые версии выходят часто, а среда честно продолжит работать на той, что поставили вы. Захотели новее — открываете тот же пакет и жмёте «Обновить», ничего переустанавливать руками не нужно. Тот же каталог пригодится и позже: среда сверяется с ним при каждом открытии менеджера, поэтому свежие версии видны без новых настроек.
Шаг 3. Плата и порт
После установки в списке появляется целое семейство esp32. Для типового DevKit с модулем WROOM-32 выбирайте ESP32 Dev Module — универсальный профиль, который подходит подавляющему большинству плат за 300–700 рублей. Порт ищется как обычно: на DevKit стоит USB-чип CP2102 или CH340, и если Windows его не видит, лечение в уроке про драйвер CH340. Одна привычка, которую придётся сменить с Uno: скорость монитора порта — 115200 бод. Бут-лог ESP32 говорит именно на этой скорости, и на 9600 вы увидите простыню кракозябр — как настроить панель, мы разбирали в уроке про монитор в IDE 2.
// У большинства DevKit v1 светодиод сидит на GPIO2void setup() { pinMode(2, OUTPUT); Serial.begin(115200);} void loop() { Serial.print("up="); Serial.println(millis() / 1000); digitalWrite(2, HIGH); delay(500); digitalWrite(2, LOW); delay(500);}Первую заливку делайте этим скетчем: он мигает штатным светодиодом и шлёт аптайм в монитор. Загрузка занимает 10–20 секунд и выглядит шумнее, чем на Uno: ESP32 пишет не только скетч, но и служебные разделы, поэтому строки «Writing at 0x...» бегут по кругу — это нормальный процесс, а не зацикливание. Если знание пинов у вас пока на уровне «воткнул и работает», до первого серьёзного проекта загляните в разбор DevKit и опасных пинов: там есть пины, которые кусаются в момент старта, — однажды я повесил датчик на «удобный» GPIO0 и неделю не понимал, почему плата то стартует, то нет.
Когда первое мигание отработает, загляните в «Инструменты → Upload Speed». По умолчанию там скромные 115200 бод — так прошивка идёт секунд двадцать; на 921600 она втрое быстрее, и это приятно. Граница простая: на хорошем кабеле и нормальном USB-чипе скорость держится, на кривых проводах заливка на максимуме рвётся — тогда возвращайте 115200 и не думайте. Это тот же трюк, что и ускорение монитора: скорость — это договор двух сторон, и его можно переписывать.
| Пункт в списке | Когда выбирать | Нюанс |
|---|---|---|
| ESP32 Dev Module | любой DevKit с WROOM-32 — самый частый случай | универсальный профиль: память и прочее донастраиваются в меню |
| ESP32S2 | платы на S2 | нет Bluetooth, USB сделан самим чипом |
| ESP32S3 | S3: два ядра, Wi-Fi и BLE | больше ОЗУ, выбор Flash Size важнее, чем у классики |
| ESP32-C3 | мелкие платы на RISC-V | часто без CH340: USB прямой, порт появляется иначе |
Дальше дорога расходится в сторону Wi-Fi: соединение с роутером и первые запросы ждут вас в разделе ESP32 — начните с первого Wi-Fi-скетча, а если ещё выбираете между семействами, есть сравнение ESP32 и ESP8266. Пока железо едет с маркетплейса или сеть не даёт скачать ядро, отрепетируйте сам ритуал на тренажёре ниже: тумблер — это адрес пакета в Настройках, кнопка — установка в Менеджере плат.
И одна деталь напоследок: ядро ESP32 не ограничивается списком плат. В «Инструменты» добавились разделы Partition Scheme, Flash Mode, PSRAM — на первых порах их можно не трогать, дефолты подходят DevKit, но полезно знать, что они там лежат. Партиции, например, решают, сколько памяти уйдёт под скетч, сколько — под файловую систему: для мигалки не важно, а для проекта с логами на флешке — уже нет. Я менять их не советую, пока не упрётесь в предел по размеру скетча — упрётесь, вернёмся.
- 1. Почему в свежей Arduino IDE нет ESP32 «из коробки»?
- 2. Какой адрес пакета Espressif вы вставите в поле дополнительных ссылок?
- 3. Установка падает с «Failed to install platform». Первое действие?
- 4. Загрузка стоит на «Connecting........_____» и не двигается. Что делать?
- 5. Какой пункт выбирают для типового DevKit с модулем WROOM-32?
- Из коробки IDE знает только AVR: сторонние платы добавляются адресом пакета в «Настройки → Дополнительные ссылки»
- Адрес Espressif: https://espressif.github.io/arduino-esp32/package_esp32_index.json — короткий и актуальный; в то же поле через запятую вписывают и ESP8266
- Менеджер плат → «esp32 by Espressif Systems» → Установить: пара сотен мегабайт и до получаса — норма, а не подвисание
- Для DevKit с WROOM-32 — пункт ESP32 Dev Module; монитор порта держите на 115200 бод
- «Connecting...» без движения = чип не в режиме прошивки: зажмите BOOT, проверьте кабель с данными
Частые вопросы по теме урока
- Почему в свежей Arduino IDE нет ESP32 «из коробки»?
- Среда поставляется с ядрами AVR. Для других плат указывается адрес пакета в Настройках, а само ядро устанавливается в Менеджере плат — так устроены и ESP32, и ESP8266, и ATtiny. В комплекте только AVR-платы Arduino, сторонние ядра ставятся пакетами через Boards Manager
- Какой адрес пакета Espressif вы вставите в поле дополнительных ссылок?
- Это текущий источник пакетов Espressif. Старый длинный адрес на raw.githubusercontent тоже работает, но ручное скачивание в папки — путь к перепутанным версиям. https://espressif.github.io/arduino-esp32/package_esp32_index.json
- Установка падает с «Failed to install platform». Первое действие?
- Пакет весит сотни мегабайт и качается с внешнего сервера, поэтому падения почти всегда сетевые. Файл урока тут не при чём: повторная попытка на стабильной сети лечит девять случаев из десяти. Проверить сеть: прокси, антивирус с проверкой HTTPS, обрывы — и повторить
- Загрузка стоит на «Connecting........_____» и не двигается. Что делать?
- Чип не входит в режим прошивки: он должен стартовать с IO0 на земле. Обычно это делает обвязка платы; если нет — BOOT вручную. Зарядный кабель без данных даёт тот же симптом. Зажать BOOT на плате при запуске загрузки и отпустить после начала записи
- Какой пункт выбирают для типового DevKit с модулем WROOM-32?
- ESP32 Dev Module — универсальный профиль для большинства дешёвых плат с WROOM-32. Отдельные пункты S2, S3 и C3 нужны платам на других чипах этого семейства. ESP32 Dev Module