ESP8266 для начинающих: прошивка в Arduino IDE и подключение к Wi-Fi

Как начать работать с ESP8266: выбрать NodeMCU или Wemos D1 mini, добавить пакет плат в Arduino IDE и залить первый скетч.

В статье три готовых примера (мигание светодиодом, подключение к Wi-Fi и веб-страница с кнопкой), распиновка D0–D8, прошивка ESP-01 через адаптер, MicroPython и разбор частых ошибок загрузки.

Статью написал:
Ваня Буявец, продюсер, основатель Checkroi
Ваня Буявец
Основатель Checkroi, продюсер, эксперт в выборе онлайн-курсов
Все 3090 статей автора Подписаться на Телеграм-канал
Одобрено экспертом:
Наташа Буявец, основатель Checkroi, эксперт по онлайн-курсам
Наташа Буявец
Основательница Checkroi, продюсер Youtube-каналов, эксперт по онлайн-курсам
Все 3744 экспертных мнения Подписаться на Телеграм-канал
Обложка: ESP8266 для начинающих: прошивка в Arduino IDE и подключение к Wi-Fi

ESP8266 это микроконтроллер китайской компании Espressif со встроенным Wi-Fi. Его программируют так же, как Arduino: на C++ в Arduino IDE, только с дополнительным пакетом плат. Чтобы начать, возьмите плату с USB-разъёмом (NodeMCU или Wemos D1 mini), добавьте в Arduino IDE адрес пакета ESP8266, установите платформу через «Менеджер плат», выберите плату и порт и залейте первый скетч.

Ниже вся цепочка по шагам: от выбора платы до веб-страницы с кнопкой, которая управляет светодиодом с телефона. Если Arduino IDE видите впервые, начните с основ программирования Arduino: синтаксис скетчей там тот же.

CheckroiCheckroiПодборка курсов по Arduino8 курсов • 3 школыСравните цены, школы, программу и найдите выгодные предложения по обучениюСравнить→

Что такое ESP8266 и что на нём собирают

Рой собирает первое устройство на ESP8266

Внутри чипа стоят 32-битный процессор Tensilica L106 и радиомодуль Wi-Fi 2,4 ГГц. Получается микроконтроллер, который сам подключается к роутеру, без отдельного сетевого модуля. Ключевые параметры из даташита Espressif:

Параметр Значение
Процессор Tensilica L106, 32 бита, до 160 МГц
Wi-Fi 802.11 b/g/n, 2,4 ГГц, режимы клиента и точки доступа
Выводы GPIO 17 на самом чипе, на платах доступно меньше
АЦП один канал, 10 бит
Питание от 2,5 до 3,6 В
Ток в глубоком сне около 20 мкА

На ESP8266 собирают то, что должно отправлять данные в сеть или принимать команды по ней: датчик температуры с графиком в браузере, реле для лампы, метеостанцию, кормушку с уведомлением в мессенджер. Это и есть интернет вещей в домашнем масштабе.

В версии даташита 7.1 от ноября 2025 года Espressif перевела ESP8266EX в статус NRND, то есть «не рекомендуется для новых разработок». Для обучения и домашних проектов это не помеха: платы продаются, пакет для Arduino IDE работает. Но если собираете устройство на годы вперёд, посмотрите на ESP32.

Какую плату взять: ESP-01, NodeMCU или Wemos D1 mini

Сам чип ESP8266 почти никто не покупает отдельно. Берут модуль или плату для разработки, где чип уже распаян вместе с флеш-памятью и антенной. Новичку разница между ними важна сильнее, чем кажется.

Плата USB на плате Для кого
NodeMCU 1.0 (ESP-12E) есть первая плата, макетирование на беспаечной макетке
Wemos D1 mini есть компактные устройства, много готовых плат расширения
ESP-01 / ESP-01S нет маленькие устройства с одной-двумя функциями, нужен USB-UART адаптер

Программируются эти платы так же, как Arduino, поэтому для системного старта подходят и курсы по Arduino.

Для первой платы берите NodeMCU или D1 mini. Так советует и документация ядра ESP8266 для Arduino: со встроенным USB-UART конвертером меньше настроек, которые влияют на загрузку прошивки.

Для модулей без USB та же документация перечисляет три условия: достаточное питание, подтягивающие резисторы на GPIO0, GPIO15 и CH_PD и ручной перевод модуля в режим загрузчика. С ESP-01 к этому добавляется отдельный USB-UART адаптер. Хороший второй проект, но плохой первый.

Канал основателя Checkroi Вани Буявца3 700 человек читают мой Телеграм-канал про нейросетиСобрал промпты для Claude Code и ChatGPT, разборы ИИ-инструментов и лайфхаки по продвижению бизнеса в одном местеПрисоединиться

Как добавить ESP8266 в Arduino IDE

Arduino IDE из коробки знает только платы Arduino. Поддержку ESP8266 добавляет пакет сообщества ESP8266 Community. Порядок из официальной инструкции по установке подходит для Arduino IDE 1.x и 2.x:

  1. Откройте окно настроек Arduino IDE. В английском интерфейсе это File → Preferences.
  2. В поле «Дополнительные ссылки для Менеджера плат» вставьте адрес https://arduino.esp8266.com/stable/package_esp8266com_index.json и нажмите OK. Если там уже есть ссылка, например на ESP32, новую добавьте через запятую.
  3. Откройте «Инструменты» → «Плата» → «Менеджер плат», в поиске наберите esp8266.
  4. Найдите платформу esp8266 by ESP8266 Community и нажмите «Установить». На октябрь 2026 года последняя версия 3.1.2.
  5. В меню «Инструменты» → «Плата» выберите свою: для NodeMCU это NodeMCU 1.0 (ESP-12E Module), для D1 mini — LOLIN(WEMOS) D1 R2 & mini.
  6. Подключите плату кабелем и выберите её порт в «Инструменты» → «Порт».

Сам пакет ESP8266 скачивается с GitHub и arduino.esp8266.com, а не с сайта arduino.cc. Из России arduino.cc часто отвечает ошибкой доступа. Установщик самой Arduino IDE лежит и в разделе релизов на GitHub.

Первая прошивка: мигаем встроенным светодиодом

Проверим, что IDE видит плату и прошивает её. Откройте новый скетч, вставьте код и нажмите «Загрузить на плату».

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, LOW);   // светодиод загорается от LOW
  delay(500);
  digitalWrite(LED_BUILTIN, HIGH);  // и гаснет от HIGH
  delay(500);
}

Скетч написан на обычном C++ с функциями Arduino: setup() выполняется один раз при старте, loop() крутится по кругу. Если хотите разобраться в языке глубже, посмотрите курсы по C++.

Обратите внимание на LOW. На ESP8266 встроенный светодиод подключён «наоборот»: он загорается, когда на выводе низкий уровень. Об этом прямо сказано в комментариях к примеру Blink из пакета ESP8266. Если перепутать уровни, светодиод будет гореть ровно тогда, когда по коду должен гаснуть.

Константа LED_BUILTIN для NodeMCU и D1 mini указывает на GPIO2. При сборке под NodeMCU 1.0 компилятор показывает около 232 тысяч байт кода во флеш-памяти, хотя в скетче десяток строк: основной объём занимает системная часть пакета.

Как подключить ESP8266 к Wi-Fi

Библиотека ESP8266WiFi входит в пакет, скачивать её отдельно не нужно. Если компилятор пишет, что не находит ESP8266WiFi.h, значит платформа из предыдущего раздела не установлена или в меню выбрана плата Arduino, а не ESP8266.

#include <ESP8266WiFi.h>

const char* ssid = "ИмяСети";
const char* password = "пароль";

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  Serial.print("Подключаюсь");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();
  Serial.print("Готово, адрес платы: ");
  Serial.println(WiFi.localIP());
}

void loop() {
}

Замените имя сети и пароль на свои, загрузите скетч и откройте «Монитор порта» со скоростью 115200 бод. Пока плата подключается, бегут точки, потом появляется IP-адрес, который выдал роутер. Запишите его, он понадобится в следующем шаге.

ESP8266 работает только в сетях 2,4 ГГц. Если роутер раздаёт одно имя сети на двух диапазонах и плата не подключается, разведите диапазоны по разным именам в настройках роутера.

Строка WiFi.mode(WIFI_STA) явно переводит плату в режим клиента. В описании класса Station сказано, почему это полезно: если плата раньше работала точкой доступа, после WiFi.begin() она может остаться в смешанном режиме, где работают и клиент, и точка доступа.

Веб-сервер на ESP8266: кнопка в браузере

Теперь сделаем то, ради чего обычно берут ESP8266: страницу, которую открываешь с телефона и управляешь устройством. Библиотека ESP8266WebServer тоже уже в пакете.

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

const char* ssid = "ИмяСети";
const char* password = "пароль";

ESP8266WebServer server(80);
bool ledOn = false;

void sendPage() {
  String html = "<meta charset='utf-8'><h1>Светодиод: ";
  html += ledOn ? "горит" : "не горит";
  html += "</h1><a href='/toggle'><button>Переключить</button></a>";
  server.send(200, "text/html", html);
}

void toggle() {
  ledOn = !ledOn;
  digitalWrite(LED_BUILTIN, ledOn ? LOW : HIGH);
  server.sendHeader("Location", "/");
  server.send(303);
}

void setup() {
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }
  Serial.println(WiFi.localIP());

  server.on("/", sendPage);
  server.on("/toggle", toggle);
  server.begin();
}

void loop() {
  server.handleClient();
}

Откройте в браузере адрес из монитора порта, например http://192.168.1.50/. Телефон или ноутбук должны быть в той же сети, что и плата.

Как это работает:

  • server.on("/", sendPage) отдаёт страницу с текущим состоянием;
  • кнопка ведёт на /toggle, который переключает светодиод и перенаправляет обратно на главную;
  • server.handleClient() в loop() принимает запросы, поэтому в цикле не должно быть долгих задержек.

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

Ваня БуявецКанал основателя Checkroi Вани БуявцаЗабирайте промпты и обучение по нейросетям в моём Телеграм-каналеБольше 3 700 человек уже применяют Claude Code, ChatGPT и другие нейросети в работе, учёбе, бизнесе и жизниПерейти в канал

Как прошить ESP-01 через USB-UART адаптер

У ESP-01 нет USB, поэтому между модулем и компьютером ставят адаптер USB-UART. Требования к нему и схема подключения есть в разделе документации о платах, в описании Generic ESP8266 Module.

Адаптер должен работать с уровнем 3,3 В. Документация уточняет признак: на нём есть перемычка или переключатель 5 В / 3,3 В либо он выпущен только под 3,3 В. По документации должны работать адаптеры на микросхемах FT232RL, CP2102 и CH340G, а адаптеры на PL2303 известны тем, что не работают на macOS.

Минимальная схема только для прошивки:

Вывод ESP-01 Куда подключить
VCC 3,3 В
GND GND адаптера и источника питания
TX RX адаптера
RX TX адаптера
GPIO0 GND на время прошивки
CH_PD (EN) к 3,3 В через подтягивающий резистор
RST RTS адаптера, если он выведен, иначе перезапускать питание вручную

Чаще всего ломается на питании. По той же документации модулю нужно 3,3 В и не меньше 250 мА, а выход 3,3 В у большинства адаптеров столько не даёт. Надёжнее отдельный стабилизатор на 3,3 В с конденсаторами и общей землёй с адаптером. Читать такие схемы учат на старте пути инженера-электроника.

Дальше всё как с NodeMCU, только в «Инструменты» → «Плата» выбирайте Generic ESP8266 Module. После прошивки отключите GPIO0 от земли и перезапустите модуль, иначе он снова будет ждать загрузку.

Ещё одна особенность ESP-01: встроенный светодиод висит на GPIO1, а это вывод TX. Пример Blink из пакета прямо предупреждает: пока мигаете этим светодиодом, Serial.print() использовать нельзя.

Распиновка: надпись D4 на плате означает GPIO2

Плата NodeMCU, макетка, светодиоды и провода на столе

Главная путаница с ESP8266 в номерах выводов. На NodeMCU и D1 mini возле контактов напечатаны D0–D8, а у чипа свои номера GPIO. В коде можно писать и так и так: D4 и 2 означают один и тот же вывод. А вот голая цифра 4 — это уже GPIO4, то есть контакт D2.

Надпись на плате GPIO Что учесть
D0 16 нет прерываний, нет подтяжки к питанию
D1 5 свободен, часто SCL для I²C
D2 4 свободен, часто SDA для I²C
D3 0 влияет на режим загрузки
D4 2 встроенный светодиод, влияет на загрузку
D5–D7 14, 12, 13 свободны, аппаратный SPI
D8 15 при старте должен быть притянут к земле

Соответствие взято из файла описания платы NodeMCU в пакете ESP8266, у D1 mini оно такое же. Ограничения по GPIO16 и подтяжкам описаны в справочнике ядра.

GPIO0, GPIO2 и GPIO15 чип проверяет при каждом включении и по ним решает, запускать ваш скетч или ждать новую прошивку. Повесите на D3, D4 или D8 кнопку или датчик, который тянет уровень не туда, и плата перестанет стартовать. Схема режимов есть в разделе о платах.

Ещё два ограничения касаются напряжения:

  • Логика 3,3 В. По даташиту высокий уровень на входе не больше 3,6 В. Датчик с выходом 5 В подключайте через делитель или преобразователь уровней. Как их рассчитывать, разбирают на курсах по электронике и схемотехнике.
  • Аналоговый вход A0. Голый чип измеряет от 0 до 1 В. На некоторых платах перед A0 стоит делитель, и тогда предел выше. Справочник ядра советует проверить: подайте 0,5 В, и если analogRead(A0) вернёт около 512, значит предел 1 В и 3,3 В на этом входе могут повредить чип.

Можно ли программировать ESP8266 на Python

Можно, через MicroPython. Это облегчённый Python для микроконтроллеров, и у ESP8266 есть официальная прошивка. Вместо скетчей вы пишете на Python прямо в консоли платы или загружаете файлы main.py.

По руководству MicroPython порядок такой:

  1. Скачайте прошивку под свой объём флеш-памяти со страницы загрузки: стандартная сборка ESP8266_GENERIC рассчитана на платы с 2 МБ и больше, для плат с 1 МБ есть урезанный вариант FLASH_1M. На октябрь 2026 года последняя версия v1.29.0 от 24 августа.
  2. Поставьте утилиту esptool командой pip install esptool.
  3. Сотрите флеш и запишите прошивку, указав свой порт вместо /dev/ttyUSB0 (в Windows это COM3 и подобные).
  4. Подключитесь к плате терминалом на скорости 115200, появится приглашение Python.
esptool.py --port /dev/ttyUSB0 erase_flash
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 ESP8266_GENERIC-20260824-v1.29.0.bin

Если запись падает с ошибкой, руководство советует снизить скорость до 115200. Мигание светодиодом на MicroPython выглядит так:

from machine import Pin
import time

led = Pin(2, Pin.OUT)
while True:
    led.value(not led.value())
    time.sleep(0.5)

Python удобнее для быстрых экспериментов, но памяти у ESP8266 мало: по описанию порта, всего около 96 КБ оперативной памяти, и часть занята системой. Для большого проекта с веб-интерфейсом C++ в Arduino IDE остаётся основным выбором. Если сам язык пока незнаком, начните с курсов по Python.

Частые ошибки и что с ними делать

Рой уверенно разбирает ошибки загрузки по чек-листу

Скетч не загружается: Failed to connect to ESP8266

Симптом: компиляция прошла, а на загрузке ошибка «Timed out waiting for packet header» или «espcomm_sync failed». Порядок проверки по разбору ошибок загрузки:

  1. Выбран не тот порт. Отключите плату, посмотрите, какой порт пропал из списка, подключите снова.
  2. Выбрана не та плата. От неё зависит, как IDE переводит чип в режим загрузчика.
  3. Порта нет вообще. Проверьте кабель: многие кабели из комплекта к зарядкам передают только питание. Потом поставьте драйвер USB-моста. Его название напечатано на микросхеме у разъёма, на дешёвых платах это обычно CH340, драйвер есть на сайте производителя WCH.
  4. У ESP-01 без автосброса: зажмите GPIO0 на землю и перезапустите модуль перед загрузкой.

Плата сама перезагружается

Причин обычно две. Первая связана с питанием. По даташиту чип в среднем потребляет 80 мА, а при передаче по Wi-Fi до 170 мА. Инструкция о сбоях считает, что для плат с USB обычно хватает USB-хаба со стандартными 0,5 А, к которому не подключено ничего другого.

Вторая причина в сторожевом таймере. Если код надолго застревает в цикле без пауз, Wi-Fi-стек не получает времени, и чип перезагружается сам. Справочник ядра для циклов дольше 50 мс предлагает добавить вызов delay(), чтобы Wi-Fi-стек успевал работать.

Решение: в долгих циклах вставляйте delay(1) или yield(), а перед поиском причины откройте монитор порта и прочитайте, что плата печатает в момент перезагрузки: там видно, сработал сторожевой таймер или исключение.

Wi-Fi отваливается, когда читаю датчик

Частый вызов analogRead() мешает работе Wi-Fi, об этом в справочнике есть отдельное предупреждение. Читайте A0 не чаще нескольких раз в секунду.

Датчик или модуль сгорел

Частая причина того, что плата больше не отвечает, это пять вольт на цифровом входе. Перед подключением модуля посмотрите, какой у него уровень сигнала, и при 5 В ставьте преобразователь уровней.

ESP8266 или ESP32: что брать

ESP32 следующее поколение микроконтроллеров Espressif. Кроме Wi-Fi у него есть Bluetooth, и статуса NRND у этой линейки нет.

Задача Что взять
Учебные проекты, реле, датчик с веб-страницей ESP8266 хватит, платы дешевле
Нужен Bluetooth или много выводов ESP32
Устройство в серию или на долгие годы ESP32 или новее

Навыки переносятся почти целиком: Arduino IDE та же, код Wi-Fi и веб-сервера отличается в основном именами библиотек. Начать на ESP8266 и потом перейти на ESP32 вполне нормально.

Где освоить программирование микроконтроллеров системно

Мигание светодиодом и страница с кнопкой только первые шаги. Дальше начинаются датчики, протокол MQTT, обновление прошивки по воздуху, экономия батареи и разводка своей платы. Из хобби это вырастает в профессию: о ней подробно в материале о программисте микроконтроллеров и в плане как стать IoT-разработчиком.

Подборка курсов по Arduino ниже, а шире смотрите раздел программирование микроконтроллеров.

КурсШколаСтоимость со скидкойВ рассрочкуДлитель­ностьОбзор курса от Checkroi
Профессия Инженер умного дома
Перейти на сайт курса
SkillboxSkillbox173 055 ₽5082 ₽/мес.15 месяцевОбзор курса
Робототехника
Перейти на сайт курса
Академия СинергияАкадемия Синергия19 900 ₽1658 ₽/мес.3 месяцаОбзор курса
Преподавание робототехники в системе общего и дополнительного образования
Перейти на сайт курса
НИУДПО имени К.Д. Ушинского (НИИДПО)НИУДПО (НИИДПО)7000 ₽1750 ₽/мес.5 недельОбзор курса
C++ для робототехников
Перейти на сайт курса
SkillboxSkillbox30 294 ₽ - 1 месяцОбзор курса
Электроника и схемотехника
Перейти на сайт курса
SkillboxSkillbox55 000 ₽ - 1 месяцОбзор курса

Больше программ — в полном каталоге курсов по Arduino

Часто задаваемые вопросы

Что такое ESP8266 простыми словами?

Это микроконтроллер компании Espressif со встроенным Wi-Fi 2,4 ГГц: маленький компьютер, который управляет светодиодами, реле и датчиками и сам подключается к роутеру. Программируют его на C++ в Arduino IDE или на MicroPython.

Как добавить плату ESP8266 в Arduino IDE?

В настройках Arduino IDE вставьте в поле «Дополнительные ссылки для Менеджера плат» адрес https://arduino.esp8266.com/stable/package_esp8266com_index.json, затем в «Менеджере плат» найдите esp8266 by ESP8266 Community и установите. После этого плата появится в меню «Инструменты» → «Плата».

Как подключить ESP8266 к Wi-Fi?

Подключите библиотеку ESP8266WiFi, переведите плату в режим клиента командой WiFi.mode(WIFI_STA) и вызовите WiFi.begin с именем сети и паролем. Сеть должна работать на 2,4 ГГц, сеть 5 ГГц плата не увидит.

Как прошить Wemos D1 mini или ESP-01?

D1 mini прошивается как обычная плата: кабель USB, в списке плат LOLIN(WEMOS) D1 R2 & mini, кнопка «Загрузить на плату». ESP-01 нужен USB-UART адаптер на 3,3 В, GPIO0 на время прошивки замыкают на землю, в Arduino IDE выбирают Generic ESP8266 Module.

Можно ли программировать ESP8266 на Python?

Да, через MicroPython. На плату записывают прошивку утилитой esptool, после чего Python-код выполняется прямо на ESP8266. Оперативной памяти у чипа мало, поэтому большие проекты удобнее писать на C++.

Чем ESP8266 отличается от Arduino?

Главное отличие во встроенном Wi-Fi: Arduino Uno для сети нужен отдельный модуль. Ещё у ESP8266 логика 3,3 В, поэтому датчики на 5 В подключают через преобразователь уровней. Среда разработки та же, Arduino IDE. С чего начать с самой Arduino, рассказываем в статье https://checkroi.ru/blog/programmirovanie-arduino/

Читайте Checkroi первым в Google
Добавьте Checkroi в избранные источники — и наши разборы курсов и обзоры школ будут показываться выше в вашей выдаче Google.
Оставить комментарий
0 комментариев
Форма комментария

Оставьте комментарий

Напишите, что думаете. Нам важно ваше мнение!