LOLIN (Wemos) D1 mini: распиновка и устройство
Плата LOLIN D1 mini V4.0.0 по схеме и чертежу производителя: какой GPIO ESP8266 стоит за каждым из 16 контактов, какие выводы участвуют в загрузке, как устроены питание от USB-C, вход A0 и разъём I²C, чем эта ревизия отличается от NodeMCU.
Обновлено Редакция GAW
LOLIN D1 mini — её чаще называют Wemos D1 mini, а документация платы публикуется в репозитории wemos/docs — маленькая плата на ESP8266EX: Wi-Fi, 4 МБ флеш-памяти, 11 цифровых выводов и один аналоговый вход на двух рядах по 8 контактов. В ревизии V4.0.0 микроконтроллер, флеш-память и антенна стоят прямо на плате, без отдельного модуля, а для подключения к компьютеру используются разъём USB-C и мост CH340C. К D1 mini LOLIN выпускает платы расширения с тем же расположением контактов — их ставят сверху «бутербродом».
| Параметр | Значение |
|---|---|
| Микроконтроллер | ESP8266EX, 80 или 160 МГц |
| Флеш-память | 4 МБ (микросхема серии 25Q в корпусе SOIC-8) |
| Контакты | 2 × 8 с шагом 2,54 мм: 11 GPIO, A0, RST, 3V3, 5V, GND |
| АЦП | один вход A0, 0–3,2 В через делитель платы |
| USB | USB-C, мост USB-UART CH340C, автоматическая загрузка прошивки |
| Питание | 5 В от USB-C или контакта 5V, стабилизатор ME6211C33 на 3,3 В |
| Дополнительно | кнопка RST, светодиод на GPIO2, разъём I²C (SH 1,0 мм, 4 контакта) |
| Размер | 25,4 × 34,3 мм по чертежу (в таблице характеристик LOLIN — 34,2 × 25,6 мм), масса 3 г |
Распиновка
Плата нарисована сверху, антенной вверх и разъёмом USB-C вниз, по чертежу и схеме V4.0.0. Слева — разъём J2 (RST у антенны), справа — J3 (TX у антенны). Подписи D0–D8 — это номера ядра Arduino; рядом указаны GPIO ESP8266 и его аппаратные функции.
- ввод-вывод
- питание и земля
- управление: RST
- выбранная функция
Контакты и функции
Все выводы работают с логикой 3,3 В — LOLIN отдельно подчёркивает это в документации. Аппаратные интерфейсы ESP8266 — HSPI на D5–D8 (GPIO14, 12, 13, 15) и UART0 на TX и RX; I²C, ШИМ и 1-Wire библиотеки делают программно и могут назначить на любой вывод, кроме D0 (GPIO16). По умолчанию шина Wire — это D2 (SDA, GPIO4) и D1 (SCL, GPIO5): к этим же линиям подключён разъём I²C платы.
| Контакт | Подпись | GPIO | Мультиплексор | Ещё |
|---|---|---|---|---|
| J2-1 | RST | — | сброс низким уровнем | |
| J2-2 | A0 | — | АЦП, 0–3,2 В | |
| J2-3 | D0 | 16 | — | в домене RTC: подтяжка только вниз; для выхода из глубокого сна соединяют с RST |
| J2-4 | D5 | 14 | MTMS, I2SI_WS, HSPICLK, U0DSR | в Arduino для ESP8266 по умолчанию SCK (SPI) |
| J2-5 | D6 | 12 | MTDI, I2SI_DATA, HSPIQ, U0DTR | в Arduino для ESP8266 по умолчанию MISO (SPI) |
| J2-6 | D7 | 13 | MTCK, I2SI_BCK, HSPID, U0CTS | в Arduino для ESP8266 по умолчанию MOSI (SPI) |
| J2-7 | D8 | 15 | MTDO, I2SO_BCK, HSPICS, U0RTS | вывод обвязки загрузки: при загрузке должен быть 0; в Arduino для ESP8266 по умолчанию SS (SPI) |
| J2-8 | 3V3 | — | 3,3 В | |
| J3-1 | TX | 1 | U0TXD, SPICS1, CLK_RTC_BK | в Arduino для ESP8266 по умолчанию Serial TX |
| J3-2 | RX | 3 | U0RXD, I2SO_DATA, CLK_XTAL_BK | в Arduino для ESP8266 по умолчанию Serial RX |
| J3-3 | D1 | 5 | CLK_RTC | в Arduino для ESP8266 по умолчанию SCL (Wire) |
| J3-4 | D2 | 4 | CLK_XTAL | в Arduino для ESP8266 по умолчанию SDA (Wire) |
| J3-5 | D3 | 0 | SPICS2, CLK_OUT | вывод обвязки загрузки: 1 — запуск программы, 0 — загрузка прошивки по UART |
| J3-6 | D4 | 2 | I2SO_WS, U1TXD_BK, U0TXD_BK | вывод обвязки загрузки: при загрузке должен быть 1; в Arduino для ESP8266 по умолчанию LED_BUILTIN |
| J3-7 | GND | — | общий провод | |
| J3-8 | 5V | — | VBUS, 5 В от USB | |
Разъём I²C (P1, шаг 1,0 мм) — четыре контакта: GND, SDA (GPIO4), SCL (GPIO5) и 3,3 В. Через него без пайки подключают датчики и дисплеи с таким же разъёмом. Подтягивающие резисторы линий I²C на плате не установлены; номинал считает калькулятор подтяжки I²C.
Выводы, с которыми осторожно
D3, D4, D8 — выводы обвязки загрузки. Как у любой платы на ESP8266, при включении и сбросе GPIO15 (D8) должен быть в низком уровне, GPIO2 (D4) — в высоком, а GPIO0 (D3) выбирает запуск программы (1) или загрузку прошивки (0). На D1 mini GPIO0 и GPIO2 подтянуты к 3,3 В, а GPIO15 — к земле резисторами 12 кОм. К D4 вдобавок подключён синий светодиод: через резистор 2 кОм от 3,3 В, он горит при низком уровне (LED_BUILTIN).
D0 (GPIO16) — вывод домена RTC: без прерываний, ШИМ и I²C, по документации LOLIN это единственный цифровой вывод без этих функций. Он же будит ESP8266 из глубокого сна — для этого D0 соединяют с RST перемычкой JP1 (через резистор 470 Ом) на обратной стороне платы.
TX и RX подключены к мосту CH340C (TX — через резистор 470 Ом): через них загружается прошивка и работает Serial. Загрузчик ESP8266 при включении выводит сообщения на скорости 74 880 бит/с — у D1 mini кварц 26 МГц, а для него даташит ESP8266EX указывает именно эту скорость.
Выводов флеш-памяти (GPIO6–11) на разъёмах D1 mini нет — в отличие от NodeMCU, их нельзя занять по ошибке.
Питание
По схеме V4.0.0 питание устроено просто:
- 5V — это цепь VBUS разъёма USB-C, без диода между ними. Через контакт 5V плату можно питать от внешнего источника 5 В, но при подключённом USB это напряжение попадёт в USB компьютера; если нужны оба источника, внешний подключают через диод Шоттки.
- 3V3 — выход линейного стабилизатора ME6211C33, от которого питаются ESP8266, флеш-память и CH340C. Подавать сюда можно только стабилизированные 3,3 В: допустимое напряжение питания ESP8266EX — 2,5–3,6 В.
- Резисторы 5,1 кОм на линиях CC1 и CC2 разъёма USB-C сообщают источнику, что подключено потребляющее устройство, — поэтому плата питается и от зарядников с USB-C, которые без этих резисторов не включают 5 В.
Как оценить нагрев линейного стабилизатора при большом токе — в статье о линейных стабилизаторах.
Вход A0
Вход АЦП ESP8266 рассчитан на 0–1,0 В. На D1 mini контакт A0 подключён к нему через делитель 220 кОм / 100 кОм, поэтому полная шкала — 3,2 В:
где N — результат analogRead(A0). Для измерения напряжения аккумулятора 4,2 В или 5 В перед A0 ставят ещё один делитель — его рассчитает калькулятор делителя напряжения. Входное сопротивление цепочки — 320 кОм, поэтому источник с большим внутренним сопротивлением занизит показания.
Ограничения выводов
Уровни логики — как у любого ESP8266 (табл. 5-1 даташита): высокий уровень на входе — не меньше 0,75 · 3,3 = 2,48 В и не больше 3,6 В, низкий — не больше 0,83 В; ток вывода — до 12 мА. Внутренние подтяжки есть только к питанию, у GPIO16 — только к земле. 5-вольтовые сигналы подключают через преобразователь уровней, нагрузку больше 12 мА — через транзисторный ключ.
Загрузка прошивки
Мост CH340C и сдвоенный транзистор UMH3N образуют схему автозагрузки: линии DTR и RTS управляют выводами RST и GPIO0, поэтому Arduino IDE и esptool сами переводят ESP8266 в режим загрузки — кнопок нажимать не нужно. Кнопка RST на плате (с конденсатором 100 нФ) только перезапускает программу. Для CH340C в некоторых системах нужен драйвер производителя микросхемы; LOLIN даёт на него ссылку в своей документации.
Чем D1 mini отличается от NodeMCU: плата короче (34,3 мм против 48,26 мм) и вдвое меньше контактов, на разъёмах нет выводов флеш-памяти и контактов RSV, питание идёт через USB-C без диода, а нумерация D0–D8 и назначение GPIO у них одинаковые. Для проектов, где нужны больше выводов, АЦП с несколькими каналами или Bluetooth, подходит ESP32-DevKitC.
Частые вопросы
Какие GPIO у выводов Wemos D1 mini?
D0 — GPIO16, D1 — GPIO5, D2 — GPIO4, D3 — GPIO0, D4 — GPIO2, D5 — GPIO14, D6 — GPIO12, D7 — GPIO13, D8 — GPIO15, TX — GPIO1, RX — GPIO3. Нумерация D0–D8 совпадает с NodeMCU, поэтому скетчи для одной платы обычно работают на другой.
Можно ли питать D1 mini через контакт 5V и одновременно подключать USB?
Осторожно: по схеме V4.0.0 контакт 5V — это та же цепь VBUS, что и у разъёма USB-C, без диода. Внешнее питание на 5V при подключённом USB попадёт в USB компьютера или зарядника. Если нужны оба источника, внешний подключают через диод.
Сколько вольт можно подать на A0 у D1 mini?
До 3,2 В: перед входом АЦП ESP8266 (0–1,0 В) стоит делитель 220 кОм / 100 кОм. Для более высоких напряжений добавляют внешний делитель.
Как разбудить D1 mini из глубокого сна по таймеру?
Таймер глубокого сна будит ESP8266 низким уровнем на GPIO16 (D0), поэтому D0 должен быть соединён с RST. На плате V4.0.0 для этого есть перемычка JP1 с резистором 470 Ом — её запаивают; можно и соединить контакты D0 и RST проводом. Пока перемычка замкнута, D0 нельзя использовать как обычный вывод.
Источники
- LOLIN. D1 mini (документация wemos/docs, коммит efb3d1d) — характеристики, рисунок контактов V4.0.0
- LOLIN. D1 mini V4.0.0: схема (sch_d1_mini_v4.0.0.pdf) и чертёж (dim_d1_mini_v4.0.0.pdf) — разъёмы J2 и J3, ME6211C33, CH340C, автосброс на UMH3N, делитель A0, светодиод на GPIO2, перемычка JP1, разъём I²C; размеры 25,4 × 34,3 мм
- Espressif. ESP8266EX Datasheet v7.1 — обвязка загрузки, интерфейсы, АЦП 0–1 В, уровни и ток выводов (табл. 5-1)
- ESP8266 Arduino Core 3.1.2: variants/d1_mini/pins_arduino.h — номера D0–D8, Wire, SPI, LED_BUILTIN; лицензия LGPL 2.1
Нашли ошибку?
Смотрите также
- ПлатыArduino, ESP32-DevKitC, Raspberry Pi Pico: распиновка и питание
- NodeMCU ESP8266D0–D10 и GPIO, выводы загрузки, A0, питание, прошивка
- ESP32-DevKitC V438 контактов, АЦП, сенсоры, обвязка загрузки, питание, прошивка
- Согласование уровнейПрямое соединение, делитель, диоды, MOSFET-транслятор, I²C на BSS138
- Делитель напряженияВыход, ток, нагрузка, подбор пары резисторов
- I²CSDA и SCL, START/STOP, ACK, адреса, скорости, расчёт подтяжек