ESP32 · Wi-Fi · Trema IDE
Заливка ESP32 по Wi-Fi: пошаговая инструкция
Плата на ESP32 умеет принимать новую программу без кабеля: один раз заливаете её проводом, а дальше выбираете в меню порта адрес платы и нажимаете «Загрузить». Ниже — весь путь в Trema IDE на живой плате, по шагам и со снимками, и что делать, если не выходит.
Короче некуда. Пример «WiFiOtaUpdate» → вписать сеть и пароль → залить по кабелю → посмотреть адрес в мониторе порта → в меню порта «Указать адрес платы…» → «Загрузить» → ввести пароль заливки. С этого момента кабель не нужен.
Что понадобится
- Плата на ESP32 и кабель USB — один раз, для самой первой заливки. Подходят обычные ESP32 и C3, S3, C6: заливка по воздуху входит в их пакет плат, библиотеки ставить не нужно.
- Сеть Wi-Fi на 2,4 ГГц. На 5 ГГц ESP32 не подключается.
- Компьютер в той же сети — по кабелю или по Wi-Fi, неважно. Важно, чтобы роутер пускал устройства друг к другу: гостевые сети и сети со входом по логину этого не делают.
- Trema IDE и установленный пакет плат ESP32 (раздел «Платы»).
Шаг 1. Откройте готовый пример
Выберите свою плату ESP32 вверху окна, откройте раздел «Примеры» и найдите «WiFiOtaUpdate» — он лежит в группе «09. Полезное», быстрее всего набрать в поиске ota. Нажмите на пример — откроется проект-копия, исходный пример не изменится.

Шаг 2. Впишите сеть и пароль заливки
В начале программы четыре строки, которые надо заполнить:
const char WIFI_SSID[] = "имя вашей сети";
const char WIFI_PASS[] = "пароль от сети";
const char OTA_NAME[] = ""; // пусто — имя по заводскому номеру
const char OTA_PASS[] = "pridumayte-svoy";WIFI_SSIDиWIFI_PASS— имя и пароль вашей сети Wi-Fi.OTA_NAMEможно не трогать: плата сама возьмёт имя по своему заводскому номеру, напримерplata-895304. У пятнадцати одинаковых плат в классе не будет одинаковых имён.OTA_PASS— пароль заливки, придумайте свой. Без него перепрошить вашу плату сможет любой, кто подключён к той же сети. Это не пароль от Wi-Fi и не стоит делать его таким же.
Шаг 3. Первый раз — по кабелю
Подключите плату кабелем, выберите её COM-порт в меню порта и нажмите «Загрузить». Это обычная заливка, как у любого скетча. Прошивка по воздуху заработает только после неё: пока в плате нет программы, которая умеет принимать прошивку, принимать её некому.
Шаг 4. Узнайте имя и адрес платы
Откройте раздел «Порт» → «Монитор» и поставьте скорость 115200. Раз в десять секунд плата пишет своё имя и адрес в сети. Запишите их — лучше прямо на наклейку на плате.

Если вместо адреса появляется «Не могу подключиться к сети» — плата скажет и причину: сеть не найдена (проверьте имя и что сеть на 2,4 ГГц) или не подошёл пароль.
Шаг 5. Выберите плату в меню порта
Откройте меню порта (кнопка с COM-портом вверху окна). Под обычными портами — группа «По Wi-Fi». В ней два пути:
- «Искать платы в сети» — Trema IDE слушает сеть, и плата появляется в списке под своим именем, обычно в течение минуты.
- «Указать адрес платы…» — впишите адрес из монитора и нажмите «Добавить». Этот путь работает всегда, даже когда роутер прячет устройства друг от друга и поиск ничего не находит.

Выберите плату в списке — вместо COM-порта вверху окна появится её адрес со значком Wi-Fi. Кабель теперь можно отключить: плате нужно только питание.
Шаг 6. Нажмите «Загрузить»
Программа соберётся как обычно, а дальше Trema IDE задаст два вопроса. Первый — та ли это плата: адрес роутер может отдать и соседней, а прошивка сотрёт программу, которая сейчас по этому адресу. Сверьте адрес с монитором и нажмите «Да, это моя плата».

Второй вопрос — пароль заливки, тот самый OTA_PASS. Программа помнит его, пока открыта: при следующей заливке в ту же плату спрашивать не будет.

Дальше полоса хода и строки «Передача по Wi-Fi» в консоли. Новая программа пишется в запасную область памяти, а старая работает, пока новая не принята целиком.


При первой заливке по Wi-Fi Windows может спросить, пускать ли Trema IDE в сеть: при заливке плата сама подключается к компьютеру. Нажмите «Разрешить доступ» и отметьте обе сети. Программа предупредит об этом окне заранее.
Что оставить в своих программах
Пример — заготовка. Свою программу пишете в нём же или переносите в неё три вещи: подключение к Wi-Fi, запуск приёмника обновлений в setup() и постоянный вызов ArduinoOTA.handle() в loop().
#include <WiFi.h>
#include <ArduinoOTA.h>
void setup() {
WiFi.begin(WIFI_SSID, WIFI_PASS);
// ... дождаться подключения ...
ArduinoOTA.setHostname("teplitsa");
ArduinoOTA.setPassword(OTA_PASS);
ArduinoOTA.begin();
}
void loop() {
ArduinoOTA.handle(); // без этой строки плата не услышит заливку
// ваша программа — без долгих delay()
}Главная ловушка: если залить по воздуху программу без этих строк, плата перестанет принимать прошивку по Wi-Fi, и следующую придётся заливать кабелем. То же с долгим delay() или бесконечным циклом в loop(): плата видна, но прошивку не берёт. Trema IDE проверяет это перед заливкой по Wi-Fi и предупредит, если в программе нет ArduinoOTA.
Память: какая схема нужна
Пока новая программа едет по воздуху, старая обязана работать, поэтому у ESP32 память поделена на две одинаковые области. Схема выбирается в настройках платы — кнопка с ползунками рядом с её названием, пункт Partition Scheme. Для Piranha ESP-32 и большинства плат с 4 МБ:
| Схема | Место под программу | Заливка по Wi-Fi |
|---|---|---|
| Default | 1 310 720 байт (1,25 МБ) | Работает. Пример WiFiOtaUpdate занимает 72 % |
| Minimal SPIFFS (Large APPS with OTA) | 1 966 080 байт (1,9 МБ) | Работает. Для больших программ, файлам остаётся мало места |
| No OTA (Large APP) | 2 097 152 байт (2 МБ) | Не работает: второй области нет |
Схема меняется только заливкой по кабелю: по воздуху плата её не примет. Если программа не помещается, Trema IDE скажет об этом в карточке и назовёт размеры.
Если не получается
Когда заливка срывается, над консолью появляется карточка: что случилось и что сделать. Кнопка «Подробнее на trema.ru» ведёт сюда.

| Что пишет программа | Что на самом деле | Что сделать |
|---|---|---|
| Поиск плату не находит | Плата объявляет себя в сети особыми широковещательными пакетами, а многие роутеры не пропускают их между Wi-Fi и кабелем, школьные сети — почти все | Не ждите: «Указать адрес платы…» и впишите адрес из монитора порта. Заливке по адресу поиск не нужен |
| «Плата не отвечает по Wi-Fi» | До платы не доходит приглашение: она выключена, в другой сети или адрес сменился | Сверьте адрес с монитором порта. Плата и компьютер должны быть в одной сети; гостевые сети и сети со входом по логину устройства друг к другу не пускают |
| «Заливку по Wi-Fi никто не слушает» | По адресу кто-то есть, но программы с ArduinoOTA на нём нет | Один раз залейте пример WiFiOtaUpdate по кабелю. Или вы залили по воздуху скетч без трёх строк из раздела ниже — тогда тоже кабель |
| «Плата просит пароль» или «не приняла пароль» | Пароль в окне не совпал с OTA_PASS в программе платы | Проверьте раскладку и регистр. Забыли пароль — залейте по кабелю: кабель пароль не спрашивает |
| «Ответила, но не смогла подключиться к компьютеру» | Плата приняла приглашение и сама стучится в компьютер, а его кто-то не пускает: брандмауэр Windows, сетевой экран антивируса или VPN | Брандмауэр Windows — кнопка «Разрешить в брандмауэре» прямо в карточке. Антивирус (Kaspersky, Dr.Web, ESET) — разрешите Trema IDE входящие подключения из своей сети. VPN — включите в нём доступ к локальной сети для входящих |
| «Связь оборвалась на N %» | Слабый сигнал или плата занята долгой работой | Ничего не сломалось: на плате осталась прежняя программа. Нажмите «Загрузить» ещё раз, лучше поближе к роутеру |
| «Прошивка больше места под заливку по Wi-Fi» | Новая программа не помещается во вторую область памяти | В настройках платы выберите схему Minimal SPIFFS (Large APPS with OTA) и один раз залейте по кабелю |
| Плата видна, но прошивку не берёт | В loop() долгий delay() или бесконечный цикл: ArduinoOTA.handle() не успевает вызываться | Уберите долгие паузы из loop(), замените их проверкой millis(). Сейчас залейте по кабелю |
Отдельно про «не смогла подключиться к компьютеру», потому что это самая частая беда. При заливке не компьютер звонит плате, а плата компьютеру: приняв пароль, она открывает подключение к Trema IDE на один из портов 32320–32329 (TCP). Всё, что режет входящие подключения из домашней сети, режет и заливку. Дома это обычно сетевой экран антивируса или VPN с «защитой от утечек»; открывать нужно только входящие из своей сети и только на эти порты. В школе правила задаёт администратор: кнопка «Скопировать для администратора» в карточке даёт ему готовый текст с путём программы, портами и командами.
Частые вопросы
Можно ли залить ESP32 по Wi-Fi в самый первый раз, без кабеля?
Нет. Принимать прошивку по воздуху умеет только программа, в которой есть ArduinoOTA, а в новой плате её нет. Поэтому первый раз пример WiFiOtaUpdate заливается по кабелю, а дальше кабель не нужен — плате хватает питания.
Почему плата не появляется в поиске, хотя монитор показывает адрес?
Поиск слышит особые широковещательные пакеты, которыми плата объявляет себя в сети, а многие роутеры не пропускают их между Wi-Fi и кабелем, школьные сети — почти все. Заливке поиск не нужен: в меню порта выберите «Указать адрес платы…» и впишите адрес из монитора порта.
Плата ответила, но «не смогла подключиться к компьютеру». Что мешает?
При заливке плата сама подключается к компьютеру на порт 32320–32329 (TCP), и это подключение кто-то не пускает: брандмауэр Windows, сетевой экран антивируса или VPN. Брандмауэр Windows снимается кнопкой «Разрешить в брандмауэре» в карточке ошибки. В антивирусе разрешите Trema IDE входящие подключения из своей сети, в VPN — доступ к локальной сети для входящих.
Нужен ли пароль заливки и где его взять?
Нужен: без него перепрошить вашу плату сможет любой в той же сети. Пароль задаёте вы сами в строке OTA_PASS примера, до первой заливки по кабелю. Trema IDE спросит его при заливке и будет помнить, пока программа открыта. Забыли — залейте по кабелю: кабель пароль не спрашивает.
Что будет, если связь оборвётся посередине?
Ничего страшного: новая программа пишется в запасную область памяти и включается, только когда принята целиком и проверена. При обрыве на плате остаётся прежняя программа, а заливку можно повторить.
Работает ли это на ESP32-C3, S3 и C6?
Да: заливка по воздуху входит в пакет плат ESP32 для всех этих чипов, а пример WiFiOtaUpdate один и тот же. Нужна только схема памяти с двумя областями под программу — у большинства плат она выбрана сразу.
Можно ли смотреть монитор порта по Wi-Fi?
Нет, монитор порта работает только по кабелю: по Wi-Fi плата принимает прошивку, но не передаёт свой вывод. Для монитора выберите USB-порт платы.
Дальше по теме
- Заливка ESP8266 по Wi-Fi — то же для ESP8266: свой порт, своя память и одна особенность первого запуска.
- Прошивка по воздуху — обзор темы: три способа обновления, обрыв связи, безопасность.
- ESP32 в Arduino IDE — какая плата какая и как начать.
- Wi-Fi для Arduino — как плата попадает в сеть.
Заливка по Wi-Fi в Trema IDE
Платы по Wi-Fi стоят в том же меню порта, что и COM-порты, а заливка идёт той же кнопкой «Загрузить». Пароль, сверка адреса и понятные карточки ошибок — встроены.
