ESP8266 распиновка: NodeMCU V3 и Wemos D1 mini
ESP8266 — самый дешёвый способ добавить проекту WiFi: плата стоит дешевле двух чашек кофе, а в Arduino IDE прошивается как обычная Uno. Первый же взгляд на гребёнку рождает вопросы: на плате подписи D0–D8, в скетчах мелькают GPIO4 и GPIO2, а на форумах пугают strap-пинами и запретами. Ниже — полный разбор по пинам для NodeMCU V3: те же номера работают на Wemos D1 mini, отличаются только габариты и разъём. Логика у чипа 3.3-вольтовая, аналоговый вход один, и три пина следят за режимом загрузки — обо всём по порядку.
Пока плата едет с маркетплейса, схему и скетч можно опробовать в симуляторе платы — мигалка и кнопка там заводятся без железа. Старший брат чипа — ESP32: пинов вдвое больше и есть Bluetooth, его разбор с интерактивной схемой живёт в распиновке ESP32. Если сомневаетесь, что взять под задачу, — в уроке-сравнении всё разложено по цифрам: ESP32 или ESP8266, чем отличаются.
Две самые популярные платы: NodeMCU V3 и Wemos D1 mini
Под ESP8266 выпускается зоопарк плат, но по факту выбор сводится к двум героям. NodeMCU V3 (на рынке живёт под именами LoLin NodeMCU, «чёрная большая») — классика с маркетплейсов: крупная плата, micro-USB и USB-мост CH340G, драйвер под который ставится вместе с Arduino IDE. Wemos D1 mini (актуальная ревизия — V4) — уменьшенная копия с той же логикой пинов: вдвое короче по длине, micro-USB, тоже CH340. Прошиваются обе одинаково, скетчи ходят между ними без единой правки — разница только в удобстве монтажа.
| Критерий | NodeMCU V3 | Wemos D1 mini |
|---|---|---|
| Габариты | ~58 × 28 мм: крупная, на мини-макетке занимает полпространства | ~26 × 34 мм: вдвое короче, прячется в любой корпус |
| USB-мост | CH340G (у предшественницы V2 — CP2102) | CH340 в разных ревизиях, micro-USB |
| Пины | 11 цифровых + аналоговый A0, два ряда штырьков | Те же 11 цифровых + A0, две гребёнки |
| Флеш-память | 4 МБ | 4 МБ |
| Монтаж на макетке | Широкая: соседние ряды отверстий уходят под плату | С каждой стороны остаётся по свободному ряду — удобно под проводку |
Третий персонаж кластера — голый модуль ESP-01 без USB вообще: 8 выводов (VCC, GND, RST, CH_PD, GPIO0, GPIO2, TX, RX) и прошивка через USB-UART переходник, причём GPIO0 при старте надо удерживать. Для первых проектов берите NodeMCU или D1 mini: USB на борту экономит вечер и кучу перемычек. ESP-01 — выбор под готовую схему, когда плату надо спрятать в корпус розетки или светильника.
Полная распиновка NodeMCU V3
Пин в скетче можно назвать двумя способами: подписью с платы (D4) или номером GPIO (2) — ядро понимает оба. Отсюда классическая ловушка новичка: подписи D сбиваются с номерами, потому что D4 — это GPIO2, а вовсе не четвёрка. Таблица ниже — по всем выводам NodeMCU V3; на Wemos D1 mini подписи те же.
| Пин | GPIO | Функции | Особенности |
|---|---|---|---|
| D0 | GPIO16 | Цифровой вход/выход | Нет прерываний, нет ШИМ и I2C; на старте HIGH; умеет будить чип из deep sleep — соединяют с RST |
| D1 | GPIO5 | Цифровой I/O, I2C SCL | Один из самых безопасных пинов: strap-логики нет, на загрузку не влияет |
| D2 | GPIO4 | Цифровой I/O, I2C SDA | Второй безопасный пин; стандартная пара с D1 для шины I2C |
| D3 | GPIO0 | Цифровой I/O, кнопка FLASH | Strap-пин: LOW при подаче питания отправляет чип в режим прошивки; после старта — обычный пин |
| D4 | GPIO2 | Цифровой I/O, бортовой светодиод | Strap-пин: на старте обязан быть HIGH; светодиод инвертирован — LOW зажигает |
| D5 | GPIO14 | Цифровой I/O, SPI SCK | Безопасный пин; занят только если работает аппаратный SPI |
| D6 | GPIO12 | Цифровой I/O, SPI MISO | Безопасный пин; свободен вне HSPI-шины |
| D7 | GPIO13 | Цифровой I/O, SPI MOSI | Безопасный пин; удобен и для программного UART |
| D8 | GPIO15 | Цифровой I/O, SPI CS | Strap-пин: обязан быть LOW на старте, иначе скетч не стартует; уже привязан к земле резистором |
| A0 | ADC0 | Аналоговый вход, 10 бит | Единственный аналог, только вход: 0–1 В на голом чипе, на NodeMCU и D1 mini до 3.3 В через платный делитель 220к/100к |
| RX | GPIO3 | UART RX, цифровой I/O | Занят приёмом прошивки и Serial; после загрузки можно выжать как GPIO3 |
| TX | GPIO1 | UART TX, цифровой I/O | Нужен для прошивки и Serial; на старте сыплет загрузочные сообщения — на скорости 74880 бод виден лог загрузчика |
| 3V3 | — | Выход стабилизатора 3.3 В | Питание датчиков; логика чипа только 3.3-вольтовая, 5 В на GPIO подавать нельзя |
| GND | — | Земля | Общий провод с внешним питанием |
| Vin | — | Вход внешнего питания | Сюда подают 5 В от адаптера — плата работает без USB |
Какие пины безопасны для проектов
- Полностью безопасная пятёрка: D1 (GPIO5) и D2 (GPIO4) — ни strap-логики, ни бортовых соседей; D5 (GPIO14), D6 (GPIO12) и D7 (GPIO13) — свободны, пока вы не заняли их под SPI.
- I2C живёт на стандартной паре: D2 — SDA, D1 — SCL; сенсорная шина стартует с ними без правок кода.
- С осторожностью: D0 (GPIO16) — без прерываний и ШИМ, зато будит чип из deep sleep; D3 (GPIO0) и D4 (GPIO2) — strap-пины плюс место кнопки и светодиода; D8 (GPIO15) — strap с подтяжкой к земле.
- A0 — только вход: единственный аналоговый пин; на платах принимает до 3.3 В (делитель уже стоит), на голом чипе — до 1 В.
- RX (GPIO3) и TX (GPIO1) — запас на крайний случай: заняты прошивкой и Serial, во время загрузки через них сыплется служебный обмен.
Схема подключения светодиода и кнопки
Классическая пара новичка собирается без единого внешнего резистора, если использовать бортовой светодиод на D4 и подтяжку ядра для кнопки. Захотелось внешнюю подсветку — любой диод через резистор 220–330 Ом: анод к пину (например, D5), катод к GND. Кнопка — между D6 и GND, режим INPUT_PULLUP в скетче подтянет вход к питанию сам. Схема для пробы:
// Бортовой светодиод NodeMCU висит на GPIO2 — это подпись D4 на плате.// Инверсия: LOW на пине зажигает светодиод, HIGH — гасит. void setup() { pinMode(2, OUTPUT); // 2 = GPIO2 = подпись D4 на плате} void loop() { digitalWrite(2, LOW); // горит delay(500); digitalWrite(2, HIGH); // погашен delay(500);}После установки пакета плат в IDE работает и константа LED_BUILTIN: строка pinMode(LED_BUILTIN, OUTPUT) — то же самое, что pinMode(2, OUTPUT), причём на D1 mini она даёт тот же пин. Внешний светодиод на D5 мигает тем же скетчем с заменой номера, а кнопка на D6 читается парой строк: pinMode(14, INPUT_PULLUP) в setup() и digitalRead(14) в loop() — нажата, когда возвращает LOW. Перенос скетча с Uno на ESP8266 разобран в отдельном уроке: там про D-метки, A0 и EEPROM.
Подключение ESP8266 в Arduino IDE
- Файл → Настройки → поле «Дополнительные ссылки для Менеджера плат»: вставьте http://arduino.esp8266.com/stable/package_esp8266com_index.json и нажмите ОК.
- Инструменты → Плата → Менеджер плат: в поиске наберите esp8266 и установите пакет «esp8266» от ESP8266 Community — тянется пара сотен мегабайт, на медленном канале запаситесь терпением.
- Выберите плату: Инструменты → Плата → ESP8266 Boards → NodeMCU 1.0 (ESP-12E Module); для Wemos D1 mini годится она же, а в свежих версиях пакета есть отдельный пункт LOLIN (WEMOS) D1 R2 & mini.
- Скорость загрузки: Инструменты → Upload Speed → 115200 — повышенные значения на дешёвых кабелях срываются; Flash Mode оставьте DIO.
- Порт: Инструменты → Порт → USB-SERIAL CH340; если пункт серый, виноваты кабель или драйвер — маршрут лечения в вопросах ниже.
После первой загрузки мигалки плата живёт в IDE как обычная Uno: те же кнопки Проверить и Загрузить, тот же монитор порта на 115200. Если менеджер плат не качает индекс или порт так и не виден в списке, полный маршрут наладки собран в лендинге про установку Arduino IDE — там же драйвер CH340 под Windows и macOS. Дальше выбирайте модули из справочника датчиков и собирайте первый WiFi-проект — уроки с кодом ждут в разделе ESP32 и ESP8266.