Поддерживаемые платы¶
Один и тот же код собирается под две платы. Различия (#if defined(ESP32) / ESP8266) скрыты в модулях. Один и тот же UI, одни и те же эндпоинты.
NodeMCU v1.0 (ESP8266)¶
| Характеристика | Значение |
|---|---|
| Чип | ESP-12E (ESP8266EX) |
| Flash | 4 МБ |
| RAM | ~80 КБ (всё пользовательское в heap) |
| Wi-Fi | 2.4 GHz b/g/n |
| GPIO | 11 свободных (часть резервирована) |
| ADC | 1 канал (A0), 10 бит, 0–3.3 В |
| Команда сборки | pio run (default) |
Подходит для: простые сценарии — несколько реле + 1–2 датчика + расписания. Самая дешёвая и проверенная плата.
Не подходит для: активного TLS-трафика, большого числа задач (>20), сложных алгоритмов в RAM, нескольких I²C-устройств одновременно с UDP-mesh — heap кончится.
Пины ESP8266¶
GPIO | NodeMCU | Назначение | Примечания
------|---------|-------------------------------|--------------------
0 | D3 | OK для GPIO | Подтянут к VCC; LOW при boot → flash-режим
1 | TX0 | UART TX | Использовать только если Serial не нужен
2 | D4 | OK | LED на плате; LOW не блокирует boot
3 | RX0 | UART RX | Использовать только если Serial не нужен
4 | D2 | OK (I²C SDA по умолчанию) | —
5 | D1 | OK (I²C SCL по умолчанию) | —
9 | SD2 | НЕ ИСПОЛЬЗОВАТЬ | Внутренняя SPI flash
10 | SD3 | НЕ ИСПОЛЬЗОВАТЬ | Внутренняя SPI flash
12 | D6 | OK | —
13 | D7 | OK | —
14 | D5 | OK | —
15 | D8 | OK; LOW при boot | Нельзя оставлять висящим при питании
16 | D0 | OK; deep-sleep wake | Не поддерживает interrupt
A0 | A0 | ADC, 10 бит, 0–3.3 В | —
GPIO 9, 10
Физически на плате есть, но подключены к внутренней SPI-памяти. Использовать категорически нельзя.
Глубокий сон
Для deep-sleep нужна перемычка между D0 и RST — иначе плата не проснётся. Это аппаратное требование, не баг прошивки. Подробнее в Настройках → Глубокий сон.
Лимиты по умолчанию¶
| Параметр | Значение |
|---|---|
DEVICES_MAX |
16 |
TASKS_MAX |
12 |
WIFI_NETWORKS_MAX |
5 |
USERS_MAX |
5 |
| Buffer лога в RAM | 32 строки × 200 байт |
Если выходите за эти лимиты — пересмотрите архитектуру (часто tasks дробятся неоптимально) или возьмите ESP32.
WROOM-32 DevKit V1 (ESP32)¶
| Характеристика | Значение |
|---|---|
| Чип | ESP32-D0WDQ6 (Tensilica LX6 × 2) |
| Flash | 4–16 МБ (зависит от модуля) |
| RAM | 320 КБ DRAM + 200 КБ IRAM |
| Wi-Fi | 2.4 GHz b/g/n |
| Bluetooth | BLE + Classic (не используется в прошивке) |
| GPIO | 25+ свободных |
| ADC | 2 блока (15 каналов), 12 бит |
| Команда сборки | pio run -e esp32dev |
Подходит для: всё. Параллельные I²C-устройства, активный mesh, OTA с резервной партицией, длинные history-логи. Если есть выбор — берите ESP32.
Пины ESP32¶
GPIO | Назначение | Примечания
------|-----------------------------------------|--------------------
0 | Boot button | LOW при boot → flash-режим
1 | UART0 TX | Serial output, не для GPIO
2 | OK | LED на некоторых платах
3 | UART0 RX | Serial input, не для GPIO
4–15 | OK (15 при boot должен быть LOW) | —
16, 17| OK | —
18, 19| OK (стандартный SPI) | —
21, 22| OK (стандартный I²C: SDA=21, SCL=22) | —
23 | OK | —
25, 26| OK; DAC | —
27 | OK | —
32, 33| OK; ADC1 | —
34–39 | ТОЛЬКО ВХОД, ADC1 | Без pull-up/down, OUTPUT не поддерживается
6–11 | НЕ ИСПОЛЬЗОВАТЬ | Внутренняя SPI flash
ADC2 vs Wi-Fi
На ESP32 ADC2 (GPIO 4, 12–15, 25–27) не работает одновременно с активным Wi-Fi. Аналоговые входы вешайте на ADC1 (GPIO 32–39).
OTA partition
ESP32-сборка использует partitions_huge.csv — двойная app-партиция для безопасного OTA. После OTA-обновления старая версия остаётся в резервной партиции до следующего успешного boot.
Лимиты по умолчанию¶
| Параметр | Значение |
|---|---|
DEVICES_MAX |
32 |
TASKS_MAX |
32 |
WIFI_NETWORKS_MAX |
5 |
USERS_MAX |
10 |
| Buffer лога в RAM | 64 строки × 200 байт |
Какую плату выбрать¶
Один реле + один датчик + расписание? → ESP8266
3-5 датчиков, один-два реле, простые задачи? → ESP8266
Mesh из 5+ плат + активные сценарии? → ESP32
I²C-датчики на батарее с deep-sleep? → ESP32 (там RTC SRAM, проще)
Бюджет важнее всего? → ESP8266
Запас на будущее? → ESP32
Что не поддержано¶
- ESP32-S2 / S3 / C3 — не тестировались. Теоретически собрать можно, на практике могут вылезти отличия в
WiFi.h, ADC и partition table. Если попробуете — расскажите в issue. - Raspberry Pi Pico (RP2040) — нет порта Arduino-framework специфики (LittleFS API сильно другой).
- Arduino Mega / UNO — нет Wi-Fi, фундаментально не подходит.