ESP8266 и NodeMCU: распиновка, характеристики и отличия от ESP32
ESP8266 — плата, с которой в домашней автоматике всё началось. Дешевле ESP32 и проще, но с Wi-Fi и своим веб-сервером прямо на борту.
Чаще всего её покупают в виде NodeMCU: это готовая плата с USB, стабилизатором и кнопками, куда сам чип впаян модулем. Есть и версия Wemos D1 mini — то же самое, но вдвое меньше.
Главная странность, на которую жалуются все новички: номера на плате не совпадают с номерами в коде. Надпись D5 означает вывод GPIO14, и никакой логики в этом соответствии нет — его просто надо помнить или подсматривать в таблице ниже.
Распиновка
| Вывод | Назначение |
|---|---|
| D0 · GPIO16пробуждение | Единственный вывод, который умеет будить плату из глубокого сна. Прерывания и ШИМ не поддерживает. |
| D1 · GPIO5I2C SCL | Тактовая линия I2C по умолчанию. Один из самых безопасных выводов: при загрузке ничего не выдаёт. |
| D2 · GPIO4I2C SDA | Линия данных I2C по умолчанию. Тоже безопасен при старте. |
| D3 · GPIO0загрузка | Определяет режим загрузки. Притянут к земле при включении — плата ждёт прошивку вместо запуска скетча. |
| D4 · GPIO2светодиод · загрузка | К нему припаян встроенный светодиод, причём светится он при низком уровне. Тоже участвует в загрузке. |
| D5 · GPIO14SPI SCK | Тактовый сигнал SPI. Свободный и надёжный вывод. |
| D6 · GPIO12SPI MISO | Линия данных «к плате» на шине SPI. |
| D7 · GPIO13SPI MOSI | Линия данных «от платы» на шине SPI. |
| D8 · GPIO15SPI SS · загрузка | Выбор устройства SPI. При старте обязан быть притянут к земле, иначе плата не загрузится. |
| A0 · ADC0единственный АЦП | Единственный аналоговый вход. На самом чипе он меряет 0–1 В, но на плате NodeMCU стоит делитель, и вход принимает 0–3,3 В. |
| RX · GPIO3UART RX | Приём по последовательному порту, занят при прошивке. |
| TX · GPIO1UART TX | Передача по последовательному порту, занят при прошивке. |
| 3V3 | Выход стабилизатора, отсюда питают датчики. |
| VIN | Вход внешнего питания 5 В, минуя USB. |
| GND | Земля, на плате их несколько. |
| RST | Сброс. Для глубокого сна его соединяют с D0. |
Характеристики
- Микроконтроллер
- ESP8266EX
- Ядра
- 1Tensilica L106
- Тактовая частота
- 80 МГцразгоняется до 160
- Напряжение логики
- 3,3 В
- Оперативная память
- ≈80 КБдоступно скетчу
- Флеш-память
- 4 МБу NodeMCU
- Беспроводная связь
- Wi-Fi 802.11 b/g/nBluetooth нет
- Цифровых выводов
- 11реально свободных меньше
- Аналоговых входов
- 1десять разрядов, 0–1023
- ШИМ
- на любом выводепрограммный, частота до 1 кГц
- Ток с одного вывода
- 12 мА
- Питание
- 5 В через USB или VIN
Чем отличается от соседей
ESP32
Вдвое больше ядер, втрое больше выводов, есть Bluetooth и восемнадцать аналоговых входов вместо одного. Разница в цене небольшая, поэтому новый проект логичнее начинать с ESP32.
Arduino UNO
Без сети, но пятивольтовая и с шестью аналоговыми входами. Если Wi-Fi не нужен, UNO удобнее: не надо согласовывать уровни.
Wemos D1 mini
Тот же ESP8266, но плата вдвое меньше и с другой раскладкой выводов. Программируется одинаково, отличается только формой.
На чём попадаются
В коде указан номер с платы
Написать digitalWrite(5, HIGH), глядя на надпись D5, — самая частая ошибка. Сработает GPIO5, то есть вывод, подписанный D1. Пишите D5 — это константа, которую среда сама переведёт в GPIO14.
Аналоговый вход показывает мусор выше вольта
Сам чип меряет до одного вольта. На NodeMCU перед входом стоит делитель, и потому плата принимает 3,3 В — а вот у голого модуля ESP-12 делителя нет, и подача трёх вольт сожжёт вход.
Плата не стартует из-за подключённого датчика
Три вывода — D3, D4 и D8 — определяют режим загрузки. Если на них висит что-то, притягивающее уровень не в ту сторону, плата уходит в режим прошивки или не запускается вовсе. Держите датчики на D1, D2, D5, D6, D7.
Не хватает питания при передаче
В момент включения радио плата потребляет короткие всплески до 300 мА. Дешёвый USB-порт или слабый стабилизатор этого не тянет — плата перезагружается по кругу. Помогает конденсатор на сотни микрофарад по питанию.
Что к ней подключают
Схемы подключения, библиотеки и рабочие скетчи для датчиков, дисплеев и драйверов — в разделе компонентов. Каждый скетч проверен компиляцией именно под эту плату.