Микроконтроллер за 300 рублей с Wi-Fi, Bluetooth и двумя ядрами — звучит как подвох. Разбираем ESP32: распиновка, модификации (WROOM, C3, S3), питание, первая прошивка через Arduino IDE.
ESP32 — микроконтроллер от Espressif Systems (китайский производитель чипов). Не плата в строгом смысле — чип. Но в обиходе ESP32 называют и сам чип, и модули на его основе (ESP32-WROOM-32, ESP32-S3-WROOM-1), и готовые отладочные платы (ESP32 DevKit, NodeMCU ESP32). Путаница — вечная.
Что внутри:
За цену чашки кофе получаешь микрокомпьютер, который может управлять умным домом, собирать данные с датчиков и отправлять их по Wi-Fi, крутить веб-сервер, работать как Bluetooth-мост — и всё это одновременно, на двух ядрах.
Сравнение с Arduino напрашивается, но оно хромает. Arduino Uno — 8-битный ATmega328P на 16 МГц, без Wi-Fi, без Bluetooth, 2 КБ RAM. ESP32 — 32-битный двухъядерный на 240 МГц с полноценным сетевым стеком. Это разные весовые категории. При этом ESP32 программируется через ту же Arduino IDE (среда разработки) — так что переход безболезненный.
Одна из главных путаниц: «ESP32» — это не одна плата. Это семейство. И различия между ними существенные.
Тот самый, с которого всё началось. Два ядра Xtensa LX6, Wi-Fi + Bluetooth 4.2. Модуль на его основе — ESP32-WROOM-32. Самый распространённый, самый документированный, больше всего примеров кода.
Есть подвиды модулей:
Одно ядро Xtensa LX7 (новее, чем LX6), Wi-Fi, но без Bluetooth. Зато есть нативный USB (без внешнего USB-UART чипа). ESP32-S2 Mini — компактная плата на его основе, популярная в DIY-проектах (самодельные электронные устройства).
Для кого: проекты, где нужен USB-HID (эмуляция клавиатуры, мыши) или экономия на Bluetooth не пугает.
Двухъядерный Xtensa LX7, Wi-Fi + Bluetooth 5 (LE). Мощнее оригинального ESP32, с поддержкой инструкций для нейросетей (ускорение AI на периферии). Нативный USB.
Модули: ESP32-S3-WROOM-1 (с разным объёмом Flash и PSRAM — внешней оперативки). Распиновка ESP32-S3 отличается от оригинального ESP32 — пины не совместимы один-к-одному.
Платы: ESP32-S3 DevKitC-1, T-Embed ESP32-S3 (со встроенным дисплеем и динамиком).
Для кого: проекты с дисплеями, камерами, голосовыми ассистентами, TensorFlow Lite.
Одно ядро RISC-V (не Xtensa!), Wi-Fi + Bluetooth 5 (LE). Дешевле и компактнее, чем ESP32. Распиновка ESP32-C3 — свой формат.
Особая популярность — у платы ESP32-C3 Super Mini. Крошечная (18x25 мм), стоит копейки, достаточна для датчиков умного дома и простых автоматизаций. Распиновка ESP32 C3 Super Mini — 13 GPIO, из них несколько с ограничениями (strapping-пины, об этом ниже).
Для кого: компактные устройства, батарейные датчики, ESPHome (система интеграции ESP-устройств с Home Assistant).
Ne отдельный чип — это плата на базе ESP32-S с разъёмом для камеры OV2640. Компактная, дешёвая, с microSD-слотом.
ESP32-CAM — самый популярный запрос по теме. Подключение ESP32-CAM — отдельная история: на плате нет USB-разъёма, нужен внешний USB-UART переходник для прошивки. Проекты на ESP32-CAM: видеонаблюдение, таймлапс, распознавание лиц (примитивное), стриминг в Home Assistant.
Если ты впервые берёшь ESP32 — бери ESP32-WROOM-32 на DevKit-плате (ESP32 DevKit V1 или аналог). Максимум примеров, максимум совместимости, минимум сюрпризов. C3 Super Mini и S3 — для второго-третьего проекта, когда уже понимаешь, что тебе нужно.
Распиновка ESP32 — второй по популярности запрос после «что это». И понятно почему: пинов много, не все одинаковые, некоторые — с подвохом.
Возьмём самую распространённую плату — ESP32 DevKit V1 (30 или 38 пинов). Распиновка ESP32 DevKit V1 на 38 пинов:
Напряжение питания ESP32 — 3.3 В на логических пинах. Подавать 5 В на GPIO нельзя — сгорит. Если подключаешь устройство с 5-вольтовой логикой (некоторые дисплеи, реле) — нужен уровень-конвертер или резистивный делитель.
Не все GPIO одинаково полезны. Вот карта:
Свободно используемые (без ограничений): GPIO 4, 5, 13, 14, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33
Эти пины можно использовать как цифровые входы/выходы, ШИМ, I2C, SPI. Начинай с них.
С ограничениями:
Только вход (input-only): GPIO 34, 35, 36 (VP), 39 (VN) — не могут работать как выходы. Зато все имеют АЦП и подходят для чтения аналоговых датчиков.
Заняты Flash-памятью (не трогать!): GPIO 6, 7, 8, 9, 10, 11 — подключены к встроенному Flash. Использование этих пинов = крах прошивки.
ESP32 DevKit бывает в двух вариантах. 30-пиновая версия — без GPIO 6–11 (они всё равно заняты Flash). 38-пиновая — с ними, но использовать их нельзя. По факту разницы в функциональности нет.
Распиновка ESP32 на 30 pin — компактнее, проще помещается на макетную плату (breadboard). 38-пиновая — шире, на стандартную макетку не встаёт (все отверстия заняты, негде воткнуть провода).
Совет: распечатай распиновку своей конкретной платы. У разных производителей (DOIT, LOLIN, AZ-Delivery) нумерация пинов на шёлке может отличаться. Ориентируйся по номерам GPIO, а не по физическому положению.
Вопрос, который вызывает путаницу постоянно.
Сам чип ESP32 работает от 3.3 В. Но плата DevKit имеет встроенный стабилизатор (обычно AMS1117-3.3 или аналог) и USB-разъём. Варианты питания:
Напряжение питания ESP32 через VIN — от 5 до 12 В (зависит от стабилизатора на конкретной плате; на дешёвых — строго 5 В, выше греется или сгорает). Не подавай 5 В и USB одновременно, если не уверен в схемотехнике платы.
Потребление: при активном Wi-Fi — до 240 мА пиково, ~80 мА в среднем. В режиме deep sleep — ~10 мкА. Для батарейного проекта deep sleep обязателен, иначе аккумулятор 18650 (3.7 В, 3000 мАч) сядет за пару суток.
Самый доступный путь для начинающих — ESP32 через Arduino IDE. Экосистема огромная, библиотек тысячи, примеров — на каждый датчик.
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
cpp// Классический Blink — мигание встроенным светодиодом
void setup() {
pinMode(2, OUTPUT); // GPIO 2 — встроенный LED на большинстве DevKit
}
void loop() {
digitalWrite(2, HIGH);
delay(500);
digitalWrite(2, LOW);
delay(500);
}
Жми Upload. Если всё настроено правильно — светодиод замигает.
Типичная ситуация: Arduino IDE пишет Connecting........_____ и не может подключиться.
Причины и решения:
Arduino IDE — не единственный путь:
Теория закончилась. Вот что-то практическое.
Понадобится: ESP32 DevKit + датчик DS18B20 (цифровой термометр, водонепроницаемый вариант стоит 100–150 рублей) + резистор 4.7 кОм.
Подключение DS18B20 к ESP32:
cpp#include <WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// ⚠️ Замени на свои данные
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
OneWire oneWire(4); // GPIO 4
DallasTemperature sensors(&oneWire);
WiFiServer server(80);
void setup() {
Serial.begin(115200);
sensors.begin();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(WiFi.localIP());
server.begin();
}
void loop() {
WiFiClient client = server.available();
if (client) {
sensors.requestTemperatures();
float temp = sensors.getTempCByIndex(0);
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.print("<h1>");
client.print(temp);
client.println(" C</h1>");
client.stop();
}
}
Библиотеки OneWire и DallasTemperature установи через Library Manager в Arduino IDE.
После прошивки открой Serial Monitor (115200 бод) — увидишь IP-адрес. Набери его в браузере — страница с температурой. Примитивно, но работает. Отсюда — шаг до MQTT (протокол обмена сообщениями для IoT), Home Assistant, Grafana (система визуализации) и полноценного мониторинга.
ESP32 — это входной билет в огромную экосистему. Проекты на ESP32 — от метеостанций и автополива до интернет-радио, Bluetooth-клавиатур и DIY-альтернатив коммерческим устройствам.
Несколько направлений для следующего шага: