Микроконтроллер за 300 рублей с Wi-Fi, Bluetooth и двумя ядрами — звучит как подвох. Разбираем ESP32: распиновка, модификации (WROOM, C3, S3), питание, первая прошивка через Arduino IDE.
Если ты впервые берёшь 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.jsoncpp// Классический 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-альтернатив коммерческим устройствам.
Несколько направлений для следующего шага: