ESP32

ESP32-S3 в PlatformIO: настройка платы и загрузка прошивки

Дата публикации:

14 0

Для ESP32-S3 в PlatformIO важно правильно выбрать описание платы и framework, потому что от них зависят параметры сборки, Flash, PSRAM и способ загрузки. Для распространённых плат уже существуют готовые board ID, но универсальная конфигурация не всегда соответствует конкретному модулю N8R8, N16R8 или другой версии. Перед первой прошивкой стоит проверить platformio.ini и убедиться, что выбранная конфигурация соответствует реальному железу.

Настройка ESP32-S3 в PlatformIO на настольном компьютере.

Создание проекта ESP32-S3 в PlatformIO

PlatformIO можно использовать с ESP32-S3 через платформу Espressif 32. При создании нового проекта нужно выбрать конкретную плату и framework – обычно Arduino или ESP-IDF.

Для стандартной ESP32-S3-DevKitC-1 базовый проект с Arduino может выглядеть так:

[env:esp32-s3-devkitc-1] platform = espressif32 board = esp32-s3-devkitc-1 framework = arduino monitor_speed = 115200

Здесь `platform` определяет семейство Espressif 32, `board` – конфигурацию конкретной платы, а `framework` – используемую среду разработки.

Важно понимать, что название ESP32-S3 само по себе недостаточно. Разные платы могут использовать разные объёмы Flash, PSRAM, USB-интерфейсы и разводку GPIO.

Как узнать правильный board ID

PlatformIO содержит готовые описания большого количества плат. Для официальной ESP32-S3-DevKitC-1 используется board ID:

esp32-s3-devkitc-1

Для других плат идентификатор может отличаться. Например, XIAO ESP32S3 имеет собственный профиль, поэтому использовать для неё конфигурацию DevKitC только из-за одинакового микроконтроллера не стоит.

Список доступных плат можно посмотреть через PlatformIO:

pio boards esp32

Если точная модель присутствует в списке, лучше использовать её готовый профиль. Он может содержать особенности Flash, GPIO, USB и других параметров.

Если конкретной платы в PlatformIO нет, сначала нужно определить установленный модуль и характеристики платы, а уже затем изменять конфигурацию вручную.

Подробнее о разновидностях ESP32-S3, Flash и PSRAM можно посмотреть в материале ESP32-S3: разновидности, память, интерфейсы и применение.

Почему нельзя ориентироваться только на ESP32-S3

Например, профиль `esp32-s3-devkitc-1` в PlatformIO описывает конкретную конфигурацию ESP32-S3-DevKitC-1. Это не означает, что его параметры памяти автоматически подходят любой плате ESP32-S3.

На модулях встречаются варианты N8, N8R8, N16R8 и другие конфигурации. Если реальная плата имеет 16 МБ Flash и 8 МБ PSRAM, а выбранное описание рассчитано на другую память, проект может компилироваться, но работать неправильно или не использовать доступную память.

Arduino или ESP-IDF

Для одного и того же ESP32-S3 в PlatformIO можно использовать разные framework.

FrameworkКогда подходит
ArduinoПроекты на Arduino Core, библиотеки Arduino, быстрый старт
ESP-IDFНизкоуровневая разработка, компоненты ESP-IDF, sdkconfig и расширенная настройка

В `platformio.ini` для Arduino используется:

framework = arduino

Для ESP-IDF:

framework = espidf

Переключение framework в уже существующем сложном проекте не является простой заменой одной строки. Исходный код, библиотеки и настройки проекта должны поддерживать выбранную среду.

Как загрузить прошивку

После подключения платы PlatformIO обычно автоматически определяет последовательный порт. Прошивку можно запустить кнопкой Upload в интерфейсе PlatformIO или командой:

pio run -t upload

Если подключено несколько последовательных устройств и PlatformIO выбирает не тот порт, его можно указать явно:

upload_port = /dev/cu.usbmodemXXXX

В Windows вместо этого используется соответствующий COM-порт:

upload_port = COM5

Конкретное имя порта нельзя копировать с чужого компьютера. Нужно использовать порт, который появился в системе после подключения своей платы.

Если ESP32-S3 вообще не определяется через USB, сначала нужно проверить само USB-подключение. Изменение `platformio.ini` не исправит неисправный кабель или неправильно выбранный USB-разъём платы.

Если загрузка зависает на Connecting

Если сборка завершается успешно, но прошивка останавливается на попытке подключения, проблема уже не относится к компиляции проекта.

ESP32-S3 можно вручную перевести в ROM-загрузчик:

  1. Удерживайте BOOT.
  2. Нажмите и отпустите RESET или EN.
  3. Отпустите BOOT.
  4. Проверьте появившийся порт.
  5. Повторите Upload.

Если после входа в Download Mode появляется новый порт, PlatformIO может продолжать использовать старый `upload_port`. В этом случае нужно выбрать новый порт или убрать жёстко заданный `upload_port`, чтобы PlatformIO попробовал определить его автоматически.

Serial Monitor в PlatformIO

Для просмотра последовательного вывода можно использовать встроенный монитор:

pio device monitor

Скорость должна соответствовать значению, которое используется в программе. Например, для:

Serial.begin(115200);

в `platformio.ini` можно указать:

monitor_speed = 115200

Если прошивка работает, но Serial Monitor ничего не показывает, сначала нужно выяснить, куда именно выводится `Serial` – в UART0 или встроенный USB CDC.

Встроенный USB CDC на ESP32-S3

При использовании Arduino Framework поведение `Serial` на ESP32-S3 зависит от конфигурации USB.

Для аппаратного USB CDC через встроенный USB Serial/JTAG Arduino Core использует определения:

build_flags = -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=1

Эти параметры нужны не любой плате и не при любом способе подключения. Если используется отдельный USB-UART преобразователь, например CP210x или CH340, вывод через UART0 может быть правильным вариантом.

Поэтому не стоит автоматически добавлять USB-флаги в каждый проект ESP32-S3 только потому, что они встречаются в чужом `platformio.ini`.

Если после прошивки пропал последовательный порт

При использовании встроенного USB программа ESP32-S3 сама участвует в работе USB после запуска. Неправильная конфигурация USB может привести к ситуации, когда прошивка загрузилась, но последовательный порт после reset исчез.

Сначала попробуйте снова войти в ROM-загрузчик через BOOT и RESET. Если порт появляется в Download Mode, аппаратная часть USB работает и плату можно перепрошить.

В этом случае нужно проверить USB-флаги проекта и понять, используется ли встроенный USB ESP32-S3 или внешний USB-UART преобразователь.

Flash и режим памяти

PlatformIO позволяет переопределять параметры Flash через `platformio.ini`, например частоту или режим интерфейса. Но делать это без причины не следует.

Если готовое описание платы соответствует реальной плате, его стандартные параметры обычно лучше оставить без изменений.

Ручная настройка оправдана, когда используется нестандартная плата или установленный модуль отличается от конфигурации готового board profile.

Особенно внимательно нужно относиться к вариантам ESP32-S3 с PSRAM. Наличие PSRAM и её режим зависят от конкретного модуля, поэтому копирование конфигурации от другой ESP32-S3 может привести к ошибке инициализации памяти.

Если PlatformIO собирает проект, но он не работает

Успешная компиляция означает только то, что исходный код удалось собрать для выбранной конфигурации. Она не подтверждает, что выбран правильный вариант платы.

Если прошивка записалась, но устройство перезагружается, не видит PSRAM, не запускает дисплей или работает нестабильно, проверьте:

  • board ID;
  • реальный объём Flash;
  • наличие и тип PSRAM;
  • используемый framework;
  • USB-конфигурацию;
  • GPIO конкретной платы;
  • настройки сторонних библиотек.

Особенно часто проблема возникает при копировании готового `platformio.ini` из проекта для другой платы ESP32-S3.

Не обновляйте зависимости вслепую

Если рабочий проект перестал собираться после обновления PlatformIO, платформы Espressif 32 или библиотек, сначала посмотрите, какие версии использовались раньше.

PlatformIO позволяет фиксировать версию платформы в проекте. Это полезно для проектов, которые должны воспроизводимо собираться на разных компьютерах.

Не стоит переходить на случайную development-версию платформы только ради исправления одной ошибки компиляции. Сначала нужно определить, связана ли ошибка действительно с версией Arduino Core, ESP-IDF или конкретной библиотеки.

Минимальная проверка конфигурации

Для первого запуска лучше использовать простой проект без дисплея, камеры, LVGL и других крупных библиотек.

Минимальная конфигурация позволяет отдельно проверить:

  1. сборку проекта;
  2. правильность board ID;
  3. USB-соединение;
  4. загрузку прошивки;
  5. запуск программы;
  6. работу Serial Monitor.

Если минимальный проект работает, а основной нет, базовая настройка PlatformIO и связь с ESP32-S3 уже исправны. Причину нужно искать в конфигурации самого проекта или подключённой периферии.

Обновлено:

Email не публикуется и используется только для уведомлений. Ссылки в комментариях запрещены. Комментарий появится после проверки модератором.

Комментарии (0)

Связанные решения

Материалы CLEX по теме

Справочник

ESP32-S3

ESP32-S3 в справочнике CLEX: платы разработки, модули с дисплеями, камерой, Ethernet, Wi-Fi/Bluetooth и материалы по применению ESP32-S3 в проектах.

Товары по теме

Категории товаров

Платы разработки ESP32

Платы разработки и модули ESP32, включая серии ESP32, ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-H2 и ESP32-P4. Решения для IoT, автоматизации, робототехники, беспроводной связи, прототипирования и встраиваемых электронных устройств.

Платы разработки ESP32-S3

Платы разработки ESP32-S3 с Wi-Fi, Bluetooth LE, поддержкой камер, дисплеев, USB и внешней памяти. Для машинного зрения, голосового управления, HMI-интерфейсов, IoT, робототехники и устройств с локальной обработкой данных.