ESP8266 · Wi-Fi · Trema IDE
Заливка ESP8266 по Wi-Fi: пошаговая инструкция
NodeMCU, Wemos D1 mini и другие платы на ESP8266 принимают новую программу без кабеля: один раз заливаете её проводом, а дальше выбираете в меню порта адрес платы и нажимаете «Загрузить». Весь путь в Trema IDE на живой плате, по шагам и со снимками, — и чем ESP8266 отличается от ESP32.
Короче некуда. Пример «WiFiOtaUpdate» → вписать сеть и пароль → залить по кабелю и нажать RESET → посмотреть адрес в мониторе порта → в меню порта «Указать адрес платы…» → «Загрузить» → ввести пароль заливки.
Что понадобится
- Плата на ESP8266 и кабель USB — один раз, для первой заливки. Удобнее всего NodeMCU и Wemos D1 mini: у них есть переходник USB и автосброс. Голый модуль ESP-01 тоже умеет, но шьётся через переходник.
- Сеть Wi-Fi на 2,4 ГГц. К сетям 5 ГГц ESP8266 не подключается.
- Компьютер в той же сети, по кабелю или по Wi-Fi. Роутер должен пускать устройства друг к другу: гостевые сети этого не делают.
- Trema IDE и пакет плат ESP8266 — он ставится сам, когда выбираете плату.
Шаг 1. Выберите плату
В разделе «Платы» наберите в поиске 8266 или то, что написано на самой плате. NodeMCU v2 и v3 — это «NodeMCU 1.0 (ESP-12E Module)», Wemos D1 mini — «LOLIN(WEMOS) D1 R2 & mini». Нажмите «Выбрать».

Шаг 2. Откройте пример и впишите сеть
В разделе «Примеры» найдите «WiFiOtaUpdate»: группа «09. Полезное» или поиск по словам «по воздуху». Один и тот же пример работает и на ESP8266, и на ESP32.

В начале программы заполните четыре строки:
const char WIFI_SSID[] = "имя вашей сети";
const char WIFI_PASS[] = "пароль от сети";
const char OTA_NAME[] = ""; // пусто — имя по заводскому номеру
const char OTA_PASS[] = "pridumayte-svoy";OTA_NAME можно не трогать: плата назовётся по своему заводскому номеру, например plata-f66848. OTA_PASS — пароль заливки, придумайте свой: без него перепрошить плату сможет любой в той же сети.
Шаг 3. Первый раз — по кабелю, потом RESET
Выберите COM-порт платы и нажмите «Загрузить» — обычная заливка, около двадцати секунд. Затем один раз нажмите на плате RESET (или кнопку «Сброс платы» в мониторе порта, или отключите и включите питание).
Зачем: после заливки по проводу ESP8266 помнит, что её прошивали по проводу, и первый перезапуск после заливки по воздуху может зависнуть — плата пропадёт из сети, пока её не перезапустить руками. NodeMCU и D1 mini загрузчик обычно сбрасывает сам (в журнале строка Hard resetting via RTS pin), и у нас на NodeMCU всё прошло и без кнопки. Но лишний RESET ничего не стоит, а на модулях без автосброса он обязателен.
Шаг 4. Узнайте имя и адрес платы
Раздел «Порт» → «Монитор», скорость 115200. Раз в десять секунд плата пишет имя и адрес в сети — запишите их, лучше на наклейку.

Строка «кракозябр» при каждом перезапуске — не поломка. Это встроенный загрузчик ESP8266 рассказывает о себе на скорости 74 880 бод, а монитор слушает на 115200. Дальше программа говорит на правильной скорости, и всё читается.
Шаг 5. Выберите плату в меню порта
В меню порта, в группе «По Wi-Fi», нажмите «Указать адрес платы…», впишите адрес из монитора и нажмите «Добавить». Можно и «Искать платы в сети» — но многие роутеры поиск не пропускают, а адрес работает всегда.

Шаг 6. Нажмите «Загрузить»
Trema IDE спросит, та ли это плата (адрес роутер может отдать и соседней), и попросит пароль заливки — тот, что в OTA_PASS. Пароль программа помнит, пока открыта.




При первой заливке по Wi-Fi Windows может спросить, пускать ли Trema IDE в сеть: плата сама подключается к компьютеру. Нажмите «Разрешить доступ» и отметьте обе сети — программа предупредит об этом заранее.
Что оставить в своих программах
В каждой следующей программе должны остаться три вещи: подключение к Wi-Fi, запуск приёмника обновлений в setup() и постоянный вызов ArduinoOTA.handle() в loop().
#include <ESP8266WiFi.h>
#include <ArduinoOTA.h>
void setup() {
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASS);
// ... дождаться подключения ...
ArduinoOTA.setHostname("teplitsa");
ArduinoOTA.setPassword(OTA_PASS);
ArduinoOTA.begin();
}
void loop() {
ArduinoOTA.handle(); // без этой строки плата не услышит заливку
// ваша программа — без долгих delay()
}Залить по воздуху программу без этих строк — значит следующую заливать кабелем. Trema IDE проверяет это перед заливкой по Wi-Fi и предупредит. Долгий delay() в loop() тоже мешает: плата видна, но прошивку не берёт.
Память: что выбрать в Flash Size
У ESP8266 нет двух готовых областей, как у ESP32: новая программа пишется в свободное место над старой, и обе должны поместиться до начала файловой системы. Раскладка выбирается в настройках платы (кнопка с ползунками рядом с её названием), пункт Flash Size. Для плат с 4 МБ — NodeMCU, D1 mini:
| Flash Size | Что это значит |
|---|---|
| 4MB (FS:2MB OTA:~1019KB) | Выбрано сразу. Программа до ~1 МБ, заливка по воздуху работает. Пример занимает 314 КБ |
| 4MB (FS:1MB OTA:~1019KB), 4MB (FS:none OTA:~1019KB) | То же место под программу, меньше или нет места под файлы |
| 4MB (FS:3MB OTA:~512KB) | Много места под файлы, но программа для заливки по воздуху — не больше ~512 КБ |
Больше мегабайта программа ESP8266 не бывает в принципе: чип видит код через окно около мегабайта, даже если памяти на плате 16 МБ. У модулей с 1 МБ (ESP-01) места под заливку по воздуху около 470 КБ. Раскладку меняют только по кабелю.
Если не получается
Над консолью появляется карточка: что случилось и что сделать, а кнопка «Подробнее на trema.ru» ведёт сюда.
| Что видно | Что на самом деле | Что сделать |
|---|---|---|
| Поиск плату не находит | Плата объявляет себя в сети широковещательными пакетами, а многие роутеры не пропускают их между Wi-Fi и кабелем, школьные сети — почти все | «Указать адрес платы…» и адрес из монитора порта. Заливке по адресу поиск не нужен |
| «Плата не отвечает по Wi-Fi» | До платы не доходит приглашение: она выключена, в другой сети или адрес сменился | Сверьте адрес с монитором порта. Плата и компьютер — в одной сети; гостевые сети и сети со входом по логину не годятся |
| «Заливку по Wi-Fi никто не слушает» | По адресу кто-то есть, но программы с ArduinoOTA на нём нет | Один раз залейте пример WiFiOtaUpdate по кабелю |
| «Плата просит пароль» или «не приняла пароль» | Пароль в окне не совпал с OTA_PASS в программе платы | Проверьте раскладку и регистр. Забыли — залейте по кабелю |
| «Ответила, но не смогла подключиться к компьютеру» | Плата приняла приглашение и сама стучится в компьютер, а его не пускает брандмауэр Windows, сетевой экран антивируса или VPN | Брандмауэр Windows — кнопка «Разрешить в брандмауэре» в карточке. Антивирус — разрешите Trema IDE входящие из своей сети. VPN — доступ к локальной сети для входящих |
| Заливка прошла, а плата пропала из сети | Первый перезапуск после заливки по кабелю завис: у модулей без автосброса чип помнит, что его прошивали по проводу | Нажмите RESET или отключите и включите питание. Чтобы не попадать: после первой заливки по кабелю — сразу RESET |
| «Связь оборвалась на N %» | Слабый сигнал или плата занята долгой работой | На плате осталась прежняя программа. Нажмите «Загрузить» ещё раз, поближе к роутеру |
| Плата не принимает прошивку, пишет про место | Новая программа не помещается рядом со старой | Уменьшите программу или выберите Flash Size с меньшей файловой системой (FS), один раз — по кабелю |
Про «не смогла подключиться к компьютеру»: при заливке плата сама открывает подключение к Trema IDE на один из портов 32320–32329 (TCP). Всё, что режет входящие из домашней сети, режет и заливку — сетевой экран антивируса, VPN с «защитой от утечек». Открывать нужно только входящие из своей сети и только эти порты. В школе — кнопка «Скопировать для администратора» в карточке.
Частые вопросы
Можно ли залить ESP8266 по Wi-Fi в самый первый раз?
Нет. Принимать прошивку по воздуху умеет только программа с ArduinoOTA, а в новой плате её нет. Первый раз пример WiFiOtaUpdate заливается по кабелю, дальше кабель не нужен — плате хватает питания.
Зачем нажимать RESET после первой заливки по кабелю?
После заливки по проводу ESP8266 помнит, что её прошивали по проводу, и первый перезапуск после заливки по воздуху может зависнуть: плата пропадёт из сети, пока её не перезапустить руками. NodeMCU и Wemos D1 mini загрузчик обычно сбрасывает сам, но один RESET после первой заливки по кабелю снимает вопрос совсем, а на модулях без автосброса (ESP-01 на переходнике) он обязателен.
Почему в мониторе порта при перезапуске непонятные символы?
Это встроенный загрузчик ESP8266: он пишет о себе на скорости 74 880 бод, а монитор слушает на 115200. Дальше программа говорит на правильной скорости, и всё читается. Это не поломка.
Плата не появляется в поиске, хотя монитор показывает адрес. Почему?
Поиск слышит широковещательные пакеты, которыми плата объявляет себя, а многие роутеры не пропускают их между Wi-Fi и кабелем, школьные сети — почти все. В меню порта выберите «Указать адрес платы…» и впишите адрес из монитора: заливке поиск не нужен.
Плата ответила, но «не смогла подключиться к компьютеру». Что мешает?
При заливке плата сама подключается к компьютеру на порт 32320–32329 (TCP), а это подключение не пускает брандмауэр Windows, сетевой экран антивируса или VPN. Брандмауэр Windows снимается кнопкой «Разрешить в брандмауэре» в карточке ошибки; в антивирусе разрешите Trema IDE входящие из своей сети, в VPN — доступ к локальной сети для входящих.
Какой размер программы можно заливать по воздуху?
На платах с 4 МБ при раскладке «4MB (FS:2MB OTA:~1019KB)», которая выбрана сразу, — до мегабайта. При «4MB (FS:3MB OTA:~512KB)» — до 512 КБ, на модулях с 1 МБ (ESP-01) — около 470 КБ. Раскладка выбирается в настройках платы, пункт Flash Size, и меняется только заливкой по кабелю.
Можно ли смотреть монитор порта по Wi-Fi?
Нет, монитор порта работает только по кабелю: по Wi-Fi плата принимает прошивку, но не передаёт свой вывод. Для монитора выберите USB-порт платы.
Дальше по теме
- Заливка ESP32 по Wi-Fi — то же для ESP32: две области памяти и схема Partition Scheme.
- ESP8266 в Arduino IDE — сама плата: выводы, память, первые шаги.
- Прошивка по воздуху — обзор темы: три способа обновления, обрыв связи, безопасность.
- Wi-Fi для Arduino — как плата попадает в сеть.
Заливка по Wi-Fi в Trema IDE
Платы по Wi-Fi стоят в том же меню порта, что и COM-порты, а заливка идёт той же кнопкой «Загрузить». Пароль, сверка адреса и понятные карточки ошибок — встроены.
