Wemos D1 mini: распиновка ESP8266, шилды и отличия от NodeMCU
Wemos D1 mini — самая маленькая плата на ESP8266 с USB: три с половиной на два с половиной сантиметра, одиннадцать выводов и Wi-Fi. Для датчика в углу комнаты, который раз в минуту отправляет температуру, ничего больше не нужно.
Главная особенность — шилды: платы того же размера, которые надеваются сверху. Реле, дисплей, датчик температуры, аккумулятор — собирается бутерброд без единого провода. Это её отличие от NodeMCU, у которой выводов больше, но нет экосистемы.
Внимание к названию: есть D1 mini на ESP8266 и есть D1 mini на ESP32 в том же корпусе. Раскладка совпадает, чип другой. Здесь — про ESP8266, классическую.
Распиновка
Все выводы списком
| Вывод | Назначение |
|---|---|
| D0 · GPIO16пробуждение | Кнопка, светодиод, реле, а также пробуждение платы из глубокого сна.подробнеесвернутьБудит плату из глубокого сна, для этого его соединяют с RST. Без ШИМ, без прерываний, без I2C. |
| D1 · GPIO5I2C SCL | Шина I2C: дисплеи OLED и LCD, часы реального времени, датчики давления и ускорения.подробнеесвернутьТактовая линия I2C. Все шилды с дисплеями и датчиками сидят на ней. |
| D2 · GPIO4I2C SDA | Шина I2C: дисплеи OLED и LCD, часы реального времени, датчики давления и ускорения.подробнеесвернутьЛиния данных I2C. Вместе с D1 — самые безопасные выводы платы. |
| D3 · GPIO0загрузка | Кнопка, светодиод, датчик — но при включении платы уровень на нём менять нельзя: влияет на загрузку.подробнеесвернутьПодтянут к плюсу резистором 10 кОм, участвует в загрузке. Кнопку сюда ставить можно, датчик с активным низким — нет. |
| D4 · GPIO2светодиод · загрузка | Встроенный светодиод для первых опытов. Как обычный вывод тоже работает.подробнеесвернутьВстроенный светодиод, светится при низком уровне. Тоже подтянут вверх и участвует в загрузке. |
| D5 · GPIO14SPI SCK | Шина SPI: карта памяти, считыватель RFID, радиомодуль nRF24, быстрые дисплеи. Без SPI — обычный вывод.подробнеесвернутьТактовая линия SPI и просто хороший свободный вывод. |
| D6 · GPIO12SPI MISO | Шина SPI: карта памяти, считыватель RFID, радиомодуль nRF24, быстрые дисплеи. Без SPI — обычный вывод.подробнеесвернутьЛиния SPI «к плате». Свободен и безопасен. |
| D7 · GPIO13SPI MOSI | Шина SPI: карта памяти, считыватель RFID, радиомодуль nRF24, быстрые дисплеи. Без SPI — обычный вывод.подробнеесвернутьЛиния SPI «от платы». Свободен и безопасен. |
| D8 · GPIO15SPI SS · загрузка | Шина SPI: карта памяти, считыватель RFID, радиомодуль nRF24, быстрые дисплеи. Без SPI — обычный вывод.подробнеесвернутьПодтянут к земле резистором 10 кОм. При старте обязан быть низким — подтяжка вверх снаружи не даст плате загрузиться. |
| A0единственный АЦП | Аналоговый датчик: потенциометр, фоторезистор, влажность почвы, напряжение батареи.подробнеесвернутьЕдинственный аналоговый вход, 0–3,3 В через делитель на плате, 10 разрядов. |
| TX · GPIO1UART TX | Передача на компьютер: монитор порта и прошивка. На время загрузки скетча ничего не подключать.подробнеесвернутьПередача UART, занят при прошивке и мониторе порта. |
| RX · GPIO3UART RX | Приём с компьютера: монитор порта и прошивка. На время загрузки скетча освободить.подробнеесвернутьПриём UART, занят при прошивке. |
| RST | Перезапуск платы: кнопка сброса или сигнал от другого устройства.подробнеесвернутьСброс. Соединить с D0 для пробуждения из глубокого сна. |
| 5V | Питание модулей на 5 В: датчиков, дисплеев, реле, сервоприводов.подробнеесвернутьНапряжение с USB; на плате V4.0.0 тот же вывод подписан VBUS. Вход внешнего питания и выход для пятивольтовых модулей. |
| 3V3 | Питание модулей на 3,3 В: радиомодулей, карт памяти, некоторых датчиков.подробнеесвернутьВыход стабилизатора, до 500 мА на всё вместе с чипом. |
| G | Общий провод схемы: минус всех модулей, датчиков и внешнего питания.подробнеесвернутьЗемля. Она одна — при монтаже на макетку это стоит учесть. |
Характеристики
- Микроконтроллер
- ESP8266EX80 МГц, одно ядро
- Флеш-память
- 4 МБу версии Pro — 16
- Напряжение логики
- 3,3 В
- Беспроводная связь
- Wi-Fi 802.11 b/g/n
- Цифровых выводов
- 9D0–D8
- Аналоговых входов
- 10–3,3 В
- USB
- micro-USB, CH340у V4 — USB-C
- Ток с одного вывода
- 12 мА
- Питание
- 5 В через USB или вывод 5V
- Размер
- 34 × 26 мм
- Шаг выводов
- 2,54 ммдва ряда по 8
Какие выводы можно занимать, а какие лучше не трогать
У ESP8266 не все выводы равноправны. Четыре из одиннадцати участвуют в загрузке: при включении контроллер смотрит на их уровень и решает, запускать программу или ждать прошивку. Если повесить на такой вывод кнопку или датчик, который тянет линию не туда, плата просто не стартует — и это выглядит как поломка, хотя дело в схеме.
| Вывод | Можно ли занимать |
|---|---|
| D1, D2 | Свободно. Это же линии I2C — если шина не нужна, используйте как обычные выводы. |
| D5, D6, D7 | Свободно. Это линии SPI, но при неиспользуемом SPI они полностью ваши. Лучшие выводы платы. |
| D0 | Только выход и без ШИМ. Умеет будить плату из глубокого сна, если соединить с RST. |
| D3 | С оговоркой: подтянут к плюсу и участвует в загрузке. Кнопку на землю вешать можно, датчик, тянущий вниз при старте, — нет. |
| D4 | С оговоркой: тоже подтянут вверх, и на нём сидит встроенный светодиод. |
| D8 | С оговоркой: подтянут к земле и при старте обязан быть низким. Ничего, что тянет его вверх, подключать нельзя. |
| TX, RX | Заняты: через них идёт прошивка и монитор порта. Освобождаются, только если отказаться от того и другого. |
| A0 | Единственный аналоговый вход, 0–3,3 В. Выше — сожжёте, ниже нуля тоже нельзя. |
Встроенный светодиод: на каком он выводе
Светодиод распаян на D4, это GPIO2. Логика у него обратная: digitalWrite(D4, LOW) зажигает, HIGH гасит — светодиод включён между питанием и выводом, а не между выводом и землёй.
Отсюда два следствия. Первое: если светодиод мигает наоборот, вы ничего не сломали, так и задумано. Второе: вывод D4 занят светодиодом, но использовать его всё равно можно — просто помните, что каждое переключение будет видно глазами, а при старте он моргнёт сам.
Где какой интерфейс
Номера на плате (D1, D2 и так далее) не совпадают с номерами GPIO, которые ждёт код. Это главная путаница у новичков: в скетче для ESP8266 пишут либо константы D1, D2, либо номера GPIO, и перепутать их легко.
| Интерфейс | Выводы |
|---|---|
| I2C | D1 — тактовая линия SCL (GPIO5), D2 — данные SDA (GPIO4). Стандартные для всех шилдов и дисплеев. |
| SPI | D5 — SCK (GPIO14), D6 — MISO (GPIO12), D7 — MOSI (GPIO13), D8 — выбор устройства (GPIO15). |
| UART | TX — GPIO1, RX — GPIO3. Заняты прошивкой и монитором порта. |
| ШИМ | Любой цифровой вывод, кроме D0. У ESP8266 модуляция программная, а не аппаратная, поэтому жёсткой привязки к выводам нет. |
| АЦП | Только A0, разрядность 10 бит. На плате уже стоит делитель, поэтому вход рассчитан на 3,3 В, а не на 1 В, как у голого модуля. |
| Прерывания | Любой вывод, кроме D0. |
Версии платы: почему на вашей написано не D1, а просто 5
Плату выпускает LOLIN (бывший Wemos), и ревизии отличаются заметнее, чем принято думать. Порядок выводов не менялся ни разу — любая схема подойдёт к любой плате, — а вот подписаны они по-разному, и это сбивает с толку сильнее всего.
На платах до третьей ревизии включительно подписи напечатаны на лицевой стороне в привычной нотации: D1, D2, D3 и так далее. На актуальной V4.0.0 подписи перенесли на обратную сторону и сменили на номера GPIO: 5, 4, 0, 2, 16, 14, 12, 13, 15. Рядом с ними подписаны интерфейсы — SCL, SDA, SCK, MISO, MOSI, SS.
Поэтому человек с новой платой видит на ней «5» и «4», а во всех уроках, включая наши примеры, написано D1 и D2. Это одно и то же: D1 — это GPIO5, D2 — GPIO4. В таблице распиновки в начале страницы рядом с каждым выводом стоит его номер GPIO, а в коде работают оба варианта: и digitalWrite(D1, HIGH), и digitalWrite(5, HIGH).
| Что сравниваем | До V3 включительно / V4.0.0 |
|---|---|
| Разъём | micro-USB / Type-C |
| Чип | модуль ESP-12 под металлическим экраном / голый ESP8266EX и отдельная микросхема флеш-памяти |
| Подписи выводов | на лицевой стороне, D1…D8 / на обратной стороне, номера GPIO |
| Вывод питания от USB | 5V / VBUS — то же самое, переименовали |
| Глубокий сон | паять провод D0 → RST / перемычка SLEEP прямо на плате |
| Разъём I2C | нет / есть отдельный четырёхконтактный разъём LOLIN I2C |
Что распаяно на плате
Сразу за разъёмом USB стоит стабилизатор на 3,3 вольта — на разных партиях это ME6211, RT9013 или аналог, точную маркировку видно на самом корпусе. Именно он ограничивает ток по выводу 3V3 примерно пятьюстами миллиамперами и именно он греется, если повесить на плату мощный модуль.
Рядом — мост USB-UART, через который идёт прошивка: у старых ревизий это CH340G в крупном корпусе, у V4 микросхема та же, но в другом исполнении. Ещё на плате кварц на 26 МГц, кнопка сброса и, у четвёртой ревизии, отдельная микросхема флеш-памяти на 4 МБ — у старых она была спрятана внутри модуля ESP-12.
Клоны встречаются часто и обычно работают, но у них бывает урезана флеш-память: вместо 4 МБ ставят 1 МБ. Проверить можно в среде — при загрузке она печатает реальный размер.
Чем отличается от соседей
ESP8266 и NodeMCU
Тот же чип, та же нумерация D0–D8. NodeMCU крупнее, у неё три земли и выведены служебные выводы, но нет шилдов. Скетчи переносятся один в один.
ESP32-C3 Super Mini
Ещё меньше, с Bluetooth и USB прямо в чипе. Если проект новый и шилды не нужны, C3 современнее и не дороже.
D1 mini Pro
Та же плата с разъёмом для внешней антенны и 16 МБ памяти. Нужна, когда роутер далеко или надо хранить много данных на самой плате.
На чём попадаются
Куплена версия на ESP32
Внешне одинаковые, но скетч для ESP8266 на ESP32 не соберётся. Смотрите на чип: у ESP8266 экран с надписью ESP-12, у ESP32 — ESP32-WROOM. В среде это разные платы.
Шилд реле не даёт прошить плату
Часть шилдов сидит на D1, часть — на D3 или D8, а те участвуют в загрузке. Если после надевания шилда плата не прошивается, снимите его на время загрузки или перепаяйте перемычку на шилде.
Глубокий сон не просыпается
Для пробуждения по таймеру D0 должен быть соединён с RST — на платах до третьей ревизии это делают проводом или перемычкой. На V4.0.0 паять ничего не нужно: на обратной стороне есть готовая перемычка SLEEP, её достаточно замкнуть каплей припоя. И в обоих случаях соединять нужно после прошивки: с замкнутым сбросом загрузка идёт нестабильно.
Одна земля на всех
На плате единственный вывод G. Три датчика — уже три провода в одну точку. Удобнее вывести землю на шину макетки и брать оттуда.
Что к ней подключают
Схемы подключения, библиотеки и рабочие скетчи для датчиков, дисплеев и драйверов — в разделе компонентов. Каждый скетч проверен компиляцией именно под эту плату.