ESP32: что это за микроконтроллер и как начать его программировать

ESP32 — микроконтроллер компании Espressif, в котором процессор, Wi-Fi и Bluetooth стоят на одном чипе.

Разбираем характеристики по даташиту, чем отличаются версии S2, S3, C3, C6, H2 и P4, какие выводы нельзя занимать, и запускаем два рабочих примера: в Arduino IDE и на MicroPython.

Статью написал:
Ваня Буявец, продюсер, основатель Checkroi
Ваня Буявец
Основатель Checkroi, продюсер, эксперт в выборе онлайн-курсов
Все 3202 статьи автора Подписаться на Телеграм-канал
Одобрено экспертом:
Наташа Буявец, основатель Checkroi, эксперт по онлайн-курсам
Наташа Буявец
Основательница Checkroi, продюсер Youtube-каналов, эксперт по онлайн-курсам
Все 3856 экспертных мнений Подписаться на Телеграм-канал
Обложка: ESP32: что это за микроконтроллер и как начать его программировать

ESP32 — это микроконтроллер китайской компании Espressif, в котором на одном кристалле стоят процессор, Wi-Fi и Bluetooth. Проще говоря, это маленький компьютер без экрана и операционной системы: он выполняет одну вашу программу, читает датчики, управляет реле и сам выходит в интернет. Программируют его в Arduino IDE на C++ или на MicroPython.

Ниже разберём, что умеет чип, чем отличаются версии S3, C3 и C6, какую плату взять первой и как за 15 минут залить на неё рабочую программу. Если с Arduino вы ещё не знакомы, сначала пригодится разбор программирования Arduino с нуля: синтаксис скетчей для ESP32 тот же.

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

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

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

Обычный Arduino Uno умеет мигать светодиодом и читать кнопку, но в сеть сам не выходит: нужен отдельный модуль. ESP32 сразу задумывали как «мозг» для устройств интернета вещей. Радио встроено в чип, поэтому датчик температуры на нём отправляет данные на телефон без лишних плат.

Ключевые параметры классического ESP32 по даташиту Espressif версии 5.3:

Параметр Значение
Процессор Xtensa LX6, 32 бита, одно или два ядра до 240 МГц
Память 520 КБ SRAM и 448 КБ ROM на кристалле, флеш-память внешняя
Wi-Fi 802.11 b/g/n, 2,4 ГГц, до 150 Мбит/с
Bluetooth Bluetooth v4.2 BR/EDR и Bluetooth LE
Выводы 34 GPIO, из них 6 только на вход
Аналоговые входы 12-битный АЦП, до 18 каналов
Прочее два 8-битных ЦАП, 10 сенсорных входов, 3 UART, 4 SPI, 2 I2C
Глубокий сон около 10 мкА

Два ядра делят работу между собой: одно обычно занято сетевым стеком, второе остаётся под вашу программу, поэтому Wi-Fi не мешает опрашивать датчики.

Что на ESP32 собирают чаще всего:

  • умный дом: реле для света и розеток, датчики протечки, термостаты;
  • метеостанции с графиками в браузере;
  • Bluetooth-устройства: пульты, трекеры, геймпады;
  • устройства на батарейке, которые просыпаются раз в час, отправляют показания и снова засыпают.

Такие устройства и прошивку для них делает IoT-разработчик, и ESP32 у него один из самых частых рабочих чипов.

Всё это и есть интернет вещей в домашнем масштабе. На промышленном уровне те же чипы стоят в серийной технике: по описанию производителя, ESP32 работает при температуре от −40 до +125 °C.

Виды ESP32: чем отличаются S2, S3, C3, C6, H2 и P4

Слово ESP32 давно стало названием целого семейства. Буква после дефиса говорит о назначении чипа, и путать их неприятно: код с Bluetooth Classic не заработает на чипе, где Bluetooth Classic нет. Сводка по страницам продуктов Espressif:

Чип Процессор Радио Для чего брать
ESP32 2 ядра Xtensa LX6, 240 МГц Wi-Fi 4, Bluetooth 4.2 и LE универсальный старт, больше всего примеров и уроков
ESP32-S2 1 ядро Xtensa, 240 МГц только Wi-Fi USB-устройства, где Bluetooth не нужен
ESP32-S3 2 ядра Xtensa LX7, 240 МГц Wi-Fi 4, Bluetooth 5 (LE) нейросети и обработка звука прямо на плате
ESP32-C3 1 ядро RISC-V, 160 МГц Wi-Fi 4, Bluetooth 5 (LE) недорогие простые датчики и реле
ESP32-C6 1 ядро RISC-V, 160 МГц Wi-Fi 6, Bluetooth 5 (LE), Zigbee и Thread умный дом на Zigbee и Thread
ESP32-H2 1 ядро RISC-V без Wi-Fi: Bluetooth 5 (LE), Zigbee и Thread экономичные датчики в Zigbee-сети
ESP32-P4 2 ядра RISC-V, 400 МГц в характеристиках радио нет экраны и камеры с разрешением до 1080p

У S3 есть векторные инструкции для ускорения нейросетей и обработки сигналов. У C3 при скромной частоте 22 вывода и 400 КБ памяти: для реле или датчика этого с запасом.

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

Классический ESP32 не устарел. В даташите 5.3 статус «не рекомендуется для новых разработок» стоит только у старых ревизий чипа, а актуальная ревизия V3 (например, ESP32-D0WD-V3) выпускается.

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

Чип, модуль и плата: что покупать

Голый чип ESP32 руками почти никто не паяет. Продают его в трёх видах, и в магазине их легко перепутать:

  1. Чип: сам кристалл в корпусе 5×5 или 6×6 мм. Нужен тем, кто разводит свою печатную плату, этим занимается инженер-электроник.
  2. Модуль: чип вместе с флеш-памятью, кварцем и антенной под металлическим экраном, например ESP32-WROOM-32E. Готов к пайке на свою плату, но USB у него нет.
  3. Плата для разработки: модуль на плате с разъёмом USB, стабилизатором питания и кнопками. Втыкается в макетку, прошивается одним кабелем. Именно её берут для обучения.

Для примера возьмём плату ESP32-DevKitC V4 от самой Espressif. По руководству к DevKitC на ней есть:

  • мост USB-UART: через него компьютер видит плату как COM-порт;
  • кнопка EN, она перезагружает чип;
  • кнопка Boot: если держать её и нажать EN, чип перейдёт в режим загрузки прошивки;
  • питание от USB, от вывода 5V или от вывода 3V3, причём только от одного источника за раз.

Платы с модулем WROVER вместо WROOM несут дополнительную память PSRAM. Она нужна для камеры и больших изображений, для первых проектов хватит и WROOM.

Плата ESP32 DevKit с модулем, разъёмом USB и кнопками EN и Boot в симуляторе Wokwi
Так выглядит типичная плата для разработки: сверху модуль с антенной, снизу разъём USB и кнопки EN и Boot по бокам от него.

Среды и языки программирования

Языков и сред у ESP32 больше, чем у Arduino, и выбирают их по задаче:

Среда Язык Кому подходит
Arduino IDE с ядром arduino-esp32 C++ новичкам и тем, кто уже писал под Arduino; системно среду разбирают курсы по Arduino
MicroPython Python тем, кто знает Python и хочет пробовать код без компиляции
ESP-IDF C, язык встраиваемых систем для серийных устройств и полного доступа к возможностям чипа
ESPHome YAML-конфиг владельцам Home Assistant: датчик настраивается без кода

На ноябрь 2026 года свежие версии такие: ядро arduino-esp32 3.3.12 от 18 сентября, ESP-IDF v6.1 от 27 августа, MicroPython v1.29.0 от 24 августа.

Arduino IDE для ESP32 работает поверх того же ESP-IDF, поэтому со временем можно перейти на «взрослый» фреймворк, не выбрасывая знания. Многие так и делают: прототип на Arduino, серия на ESP-IDF.

Первая программа в Arduino IDE за пять шагов

Порядок из официальной инструкции Espressif подходит для Arduino IDE 1.x и 2.x:

  1. Откройте окно настроек Arduino IDE, в английском интерфейсе оно называется Preferences. В поле «Дополнительные ссылки для Менеджера плат» вставьте адрес https://espressif.github.io/arduino-esp32/package_esp32_index.json. Если там уже есть ссылка на ESP8266, добавьте новую через запятую.
  2. Откройте «Менеджер плат», найдите esp32 by Espressif Systems и нажмите кнопку установки. Пакет весит несколько сотен мегабайт, установка занимает пару минут.
  3. В списке плат выберите ESP32 Dev Module: он подходит для DevKitC и большинства клонов. Для других чипов есть ESP32S3 Dev Module, ESP32C3 Dev Module и так далее.
  4. Подключите плату кабелем и выберите её порт.
  5. Вставьте скетч ниже и нажмите «Загрузить на плату», затем откройте «Монитор порта» на скорости 115200 бод.

Вместо классического мигания светодиодом сразу проверим главное, ради чего берут ESP32: Wi-Fi. Скетч ищет сети вокруг и печатает их с уровнем сигнала.

#include <WiFi.h>

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);   // режим клиента: плата ищет чужие сети
  WiFi.disconnect();
  delay(100);

  Serial.println("Ищу сети Wi-Fi...");
  int n = WiFi.scanNetworks();
  Serial.printf("Найдено сетей: %d\n", n);
  for (int i = 0; i < n; i++) {
    Serial.printf("%d. %s, сигнал %d дБм\n", i + 1, WiFi.SSID(i).c_str(), WiFi.RSSI(i));
  }
}

void loop() {
}

Мы запустили этот скетч в бесплатном онлайн-симуляторе Wokwi, где у виртуальной платы есть одна тестовая сеть. Вывод в мониторе порта:

Ищу сети Wi-Fi...
Найдено сетей: 1
1. Wokwi-GUEST, сигнал -79 дБм
Скетч поиска сетей Wi-Fi на ESP32 в Arduino и вывод в мониторе порта
Слева код скетча, справа плата и монитор порта: ESP32 нашёл тестовую сеть Wokwi-GUEST с сигналом −79 дБм.

На настоящей плате в списке окажутся сети ваших соседей. Светодиод в первом скетче мы не трогали сознательно: в ядре arduino-esp32 для универсальной платы ESP32 Dev Module константа LED_BUILTIN не задана, а на клонах светодиод висит на разных выводах.

Ещё одна деталь всплывает при компиляции. Даже этот короткий скетч занимает 877 КБ, то есть 66 % места под программу в стандартной разметке флеш-памяти на 4 МБ. Так весит сетевой стек. Если проект упрётся в память, в меню «Инструменты» меняют пункт Partition Scheme на вариант с бо́льшим разделом под приложение.

Подробный разбор той же цепочки с веб-сервером и кнопкой в браузере есть в инструкции по ESP8266 для начинающих: код для ESP32 отличается в основном именами библиотек.

Как программировать ESP32 на Python

Для ESP32 есть официальная прошивка MicroPython. Это облегчённый Python, который работает прямо на плате: подключаетесь терминалом и пишете команды, а программу кладёте в файл main.py. Порядок по странице загрузки MicroPython:

  1. Скачайте прошивку ESP32_GENERIC, на ноябрь 2026 года последняя версия v1.29.0.
  2. Поставьте утилиту прошивки esptool командой pip install esptool.
  3. Сотрите флеш и запишите прошивку с адреса 0x1000, подставив свой порт.
  4. Подключитесь к плате терминалом на скорости 115200: появится приглашение >>>.
esptool.py --port /dev/ttyUSB0 erase_flash
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash 0x1000 ESP32_GENERIC-20260824-v1.29.0.bin

В Windows вместо /dev/ttyUSB0 будет COM3 или похожее имя, а сама утилита может называться просто esptool. Та же проверка Wi-Fi на Python выглядит короче:

import machine
import network

print("Частота процессора:", machine.freq() // 1_000_000, "МГц")

wlan = network.WLAN(network.STA_IF)   # режим клиента
wlan.active(True)
for net in wlan.scan():
    print("Сеть:", net[0].decode(), "сигнал", net[3], "дБм")

Вывод в Wokwi на прошивке MicroPython 1.28:

Частота процессора: 160 МГц
Сеть: Wokwi-GUEST сигнал -73 дБм
Программа на MicroPython для ESP32: частота процессора и список сетей Wi-Fi
Та же проверка на MicroPython: прошивка 1.28 сообщила частоту 160 МГц и нашла одну сеть, после чего открыла приглашение >>>.

Обратите внимание на частоту. Процессор умеет 240 МГц, но MicroPython в нашем запуске стартовал на 160 МГц. Поднять частоту можно одной строкой machine.freq(240000000), ценой большего потребления.

MicroPython удобен для экспериментов, но медленнее C++ и съедает часть памяти под интерпретатор. Если Python для вас новый язык, базу дадут курсы по Python: синтаксис на плате тот же.

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

Распиновка: какие выводы лучше не трогать

На плате 30 или 38 выводов, и новички часто подключают датчик к первому попавшемуся. У ESP32 так не выйдет: часть выводов занята или ведёт себя по-особому. Сводка по справочнику GPIO в документации ESP-IDF:

Выводы Особенность Что делать
GPIO6–11 подключены к флеш-памяти модуля не использовать вообще
GPIO34–39 работают только на вход, без внутренней подтяжки брать под кнопки и аналоговые датчики, подтяжку ставить резистором
GPIO0, 2, 5, 12, 15 strapping-выводы: их уровень при включении задаёт режим загрузки не вешать на них то, что тянет уровень при старте
Каналы ADC2 этот блок АЦП делит ресурсы с Wi-Fi при включённом Wi-Fi читать аналог с выводов ADC1 (GPIO32–39)

Отдельно про напряжение. Логика у ESP32 3,3 В: по электрическим характеристикам чипа высокий уровень на входе не должен превышать напряжение питания больше чем на 0,3 В. Датчик, который отдаёт 5 В, подключают через делитель или преобразователь уровней.

Сравнение с ESP8266, Arduino Uno и Raspberry Pi

Четыре платы на столе: Arduino Uno, ESP8266, ESP32 и Raspberry Pi

Эти четыре платы постоянно сравнивают, хотя задачи у них разные. Коротко:

Плата Что внутри Сеть Когда брать
Arduino Uno R3 8-битный ATmega328P, 16 МГц, 2 КБ ОЗУ нет первое знакомство с электроникой, много наборов и уроков
ESP8266 32 бита, 1 ядро до 160 МГц только Wi-Fi простые сетевые проекты на старых платах
ESP32 32 бита, 2 ядра до 240 МГц, 520 КБ SRAM Wi-Fi и Bluetooth почти любой проект интернета вещей
Raspberry Pi одноплатный компьютер с Linux в большинстве моделей Wi-Fi, Bluetooth и Ethernet видео, базы данных, сервер умного дома

Главная граница проходит между микроконтроллером и компьютером. ESP32 включается за доли секунды, работает от батарейки месяцами и не боится выдёргивания питания. Raspberry Pi запускает полноценную операционную систему, зато ест больше энергии и требует аккуратного выключения.

Частая связка в умном доме: Raspberry Pi с Home Assistant в роли центра, а по комнатам десяток датчиков на ESP32.

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

Рой нашёл причину ошибки загрузки и уверенно жмёт кнопку Boot

Failed to connect to ESP32: Timed out waiting for packet header

Компиляция прошла, а загрузка падает. Чип не перешёл в режим загрузчика. Разбор ошибок в документации arduino-esp32 советует:

  • зажать кнопку Boot на плате на время загрузки;
  • заменить кабель: многие кабели от зарядок передают только питание.

Ещё одну частую причину называет документация esptool: порт занят открытым окном терминала. Закройте монитор порта и другие программы, которые к нему подключены.

Плата не появляется в списке портов

Сначала кабель, потом драйвер моста USB-UART. Его название напечатано на маленькой микросхеме у разъёма, на недорогих платах чаще всего встречаются CP2102 и CH340. Драйвер для CH340 есть на сайте производителя WCH.

Плата перезагружается, как только включается Wi-Fi

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

Решение: подключите плату напрямую к порту компьютера без хаба, возьмите короткий кабель, а при внешнем питании 3,3 В поставьте источник с запасом по току и конденсатор на линию питания.

analogRead выдаёт мусор или ноль

Датчик стоит на выводе блока ADC2, а Wi-Fi уже работает: по документации АЦП, ADC2 занят и Wi-Fi-драйвером. Перенесите сигнал на GPIO32–39. Заодно помните, что АЦП у ESP32 неточен у краёв диапазона, поэтому для точных измерений нужна калибровка.

После подключения датчика плата перестала загружаться

Проверьте, не занят ли strapping-вывод. Например, GPIO12, подтянутый к высокому уровню при старте, по описанию strapping-выводов меняет напряжение питания флеш-памяти, и модуль с 3,3-вольтовой флешкой не запустится. Перекиньте провод на другой вывод из таблицы выше.

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

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

Курсы по Arduino ниже подходят и для ESP32: среда, язык и библиотеки общие. Шире смотрите раздел программирование микроконтроллеров, курсы по интернету вещей и курсы робототехники.

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

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

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

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

Это микроконтроллер, то есть маленький компьютер без экрана, который выполняет одну программу. В отличие от Arduino Uno, у него на чипе сразу есть Wi-Fi и Bluetooth, поэтому устройство на ESP32 само выходит в сеть.

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

Arduino Uno собран на 8-битном ATmega328P с частотой 16 МГц и 2 КБ памяти, сети у него нет. У ESP32 два 32-битных ядра до 240 МГц, 520 КБ SRAM, Wi-Fi и Bluetooth. Программируют обе платы в одной Arduino IDE, только для ESP32 ставят пакет плат от Espressif.

На каком языке программируют ESP32?

Чаще всего на C++ в Arduino IDE. Ещё есть MicroPython для тех, кто знает Python, официальный фреймворк ESP-IDF на C и ESPHome, где датчик для Home Assistant настраивается YAML-конфигом без кода.

Какую плату ESP32 купить новичку?

Плату для разработки с разъёмом USB на классическом ESP32 (например, с модулем ESP32-WROOM-32E) или на ESP32-S3. Её прошивают одним кабелем и вставляют в макетку, а примеров под эти чипы больше всего.

Работает ли ESP32 с Wi-Fi 5 ГГц?

Классический ESP32 работает только в диапазоне 2,4 ГГц. Два диапазона, 2,4 и 5 ГГц, поддерживает отдельный чип ESP32-C5 с Wi-Fi 6.

Сколько ESP32 потребляет в режиме сна?

По даташиту Espressif, в режиме глубокого сна около 10 мкА. Поэтому датчик на ESP32 может месяцами работать от батарейки, если просыпается ненадолго, отправляет данные и снова засыпает.

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

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

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