Skip to content

Поддерживаемые платы

Один и тот же код собирается под две платы. Различия (#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, фундаментально не подходит.

Сборка с нуля

См. Быстрый старт → шаг 3.