Справочник по распиновке ESP8266
Одно из преимуществ ESP8266 заключается в том, что у него достаточно большое количество выводов GPIO для работы. Вам не придётся жонглировать или мультиплексировать выводы ввода/вывода. Однако есть несколько моментов, на которые стоит обратить внимание, поэтому внимательно изучите данный справочник по распиновке.
Примечание
Обратите внимание, что данный справочник по распиновке относится к популярной 30-контактной плате разработки ESP8266 NodeMCU.
Не каждая плата разработки ESP8266 выводит все контакты на разъёмы, но каждый вывод работает абсолютно одинаково, независимо от того, какую плату разработки вы используете.
Периферия и ввод/вывод ESP8266
ESP8266 NodeMCU имеет в общей сложности 17 выводов GPIO, которые выведены на контактные гребёнки по обеим сторонам платы разработки. Этим выводам можно назначить различные периферийные функции, в том числе:
1 канал АЦП |
1 канал 10-битного SAR АЦП |
2 интерфейса UART |
2 интерфейса UART с поддержкой управления потоком |
4 выхода PWM |
4 вывода PWM для управления, например, скоростью двигателя или яркостью светодиода |
2 SPI и 1 I2C интерфейс |
Два интерфейса SPI и один интерфейс I2C для подключения различных датчиков и периферийных устройств |
Интерфейс I2S |
Один интерфейс I2S для добавления звука в ваш проект |
Благодаря функции мультиплексирования выводов ESP8266, которая позволяет нескольким периферийным устройствам совместно использовать один вывод GPIO, один GPIO-вывод может выполнять такие функции, как I2C, I2S, UART, PWM и т.д.
Для получения подробной информации об ESP8266 обратитесь к даташиту.
Распиновка ESP8266
ESP8266 NodeMCU имеет 30 выводов. Для удобства выводы со схожим функционалом сгруппированы вместе. Распиновка выглядит следующим образом:
Давайте подробнее рассмотрим выводы ESP8266 и их функции по отдельности.
Выводы GPIO ESP8266
ESP8266 NodeMCU имеет 17 выводов GPIO, которым можно назначить различные функции путём программирования соответствующих регистров. Каждый GPIO можно настроить с внутренним подтягивающим резистором к питанию или к земле, либо установить в режим высокого импеданса.
Какие GPIO ESP8266 безопасны для использования?
Хотя у ESP8266 много выводов с различными функциями, некоторые из них могут не подходить для ваших проектов. В таблице ниже показано, какие выводы безопасны для использования, а какие следует использовать с осторожностью.
🟢 — Выводы первого приоритета. Их использование полностью безопасно.
🟡 — Обратите особое внимание, поскольку их поведение, особенно при загрузке, может быть непредсказуемым. Используйте их только при крайней необходимости.
🔴 — Рекомендуется избегать использования этих выводов.
Маркировка |
GPIO |
Безопасен? |
Причина |
|---|---|---|---|
D0 |
GPIO16 |
🟡 |
HIGH при загрузке, используется для выхода из глубокого сна |
D1 |
GPIO5 |
🟢 |
|
D2 |
GPIO4 |
🟢 |
|
D3 |
GPIO0 |
🟡 |
Подключён к кнопке FLASH, загрузка не удастся, если подтянут к LOW |
D4 |
GPIO2 |
🟡 |
HIGH при загрузке, загрузка не удастся, если подтянут к LOW |
D5 |
GPIO14 |
🟢 |
|
D6 |
GPIO12 |
🟢 |
|
D7 |
GPIO13 |
🟢 |
|
D8 |
GPIO15 |
🟡 |
Необходим для загрузки, загрузка не удастся, если подтянут к HIGH |
RX |
GPIO3 |
🟡 |
Вывод Rx, используется для прошивки и отладки |
TX |
GPIO1 |
🟡 |
Вывод Tx, используется для прошивки и отладки |
CLK |
GPIO6 |
🔴 |
Подключён к Flash-памяти |
SDO |
GPIO7 |
🔴 |
Подключён к Flash-памяти |
CMD |
GPIO11 |
🔴 |
Подключён к Flash-памяти |
SD1 |
GPIO8 |
🔴 |
Подключён к Flash-памяти |
SD2 |
GPIO9 |
🔴 |
Подключён к Flash-памяти |
SD3 |
GPIO10 |
🔴 |
Подключён к Flash-памяти |
A0 |
ADC0 |
🟢 |
Аналоговый вход, не может быть настроен как выход |
На изображении ниже показано, какие выводы GPIO можно безопасно использовать.
Выводы АЦП ESP8266
ESP8266 оснащён 10-битным SAR АЦП, что означает, что он может определять 1024 (2^10) дискретных аналоговых уровня. Другими словами, он преобразует входное напряжение в диапазоне от 0 до 3,3 В (рабочее напряжение) в целочисленные значения в диапазоне от 0 до 1024. Это даёт разрешение 3,3 В / 1024 единицы, или 0,0032 В (3,2 мВ) на единицу.
С помощью АЦП можно реализовать два следующих измерения. Однако их нельзя реализовать одновременно.
Измерение напряжения питания VDD3P3 (Pin3 и Pin4).
Измерение входного напряжения на выводе A0.
Выводы SPI ESP8266
ESP8266 имеет два интерфейса SPI (SPI и HSPI) в режимах ведомого и ведущего. Эти SPI также поддерживают следующие функции общего назначения:
4 режима синхронизации формата передачи SPI
Частота до 80 МГц и делённые тактовые частоты от 80 МГц
FIFO до 64 байт
Также возможно использовать SPI на любых выводах с помощью программной реализации (bitbanging).
Выводы I2C ESP8266
ESP8266 не имеет аппаратных выводов I2C, но протокол может быть реализован программно (bitbanging). Это работает достаточно хорошо, и ESP8266 достаточно быстр, чтобы соответствовать скорости «уровня Arduino».
По умолчанию GPIO4 (SDA) и GPIO5 (SCL) используются в качестве выводов I2C, чтобы облегчить использование существующего кода, библиотек и скетчей Arduino.
Однако вы можете использовать любые другие два вывода GPIO в качестве выводов I2C, вызвав wire.begin(SDA, SCL) в Arduino IDE.
Выводы UART ESP8266
ESP8266 имеет два интерфейса UART — UART0 и UART2, которые поддерживают асинхронную связь (RS232 и RS485) на скорости до 4,5 Мбит/с.
UART0 (выводы TXD0, RXD0, RST0 и CTS0) используется для связи.
UART1 (вывод TXD1) имеет только сигнал передачи данных и обычно используется для вывода логов.
RXD0 и TXD0 являются выводами управления последовательной связью и загрузки прошивки. Они в первую очередь используются для связи с модулем ESP.
Поэтому следует проявлять осторожность при использовании этих выводов, поскольку они подключены через USB-последовательный преобразователь и, следовательно, будут получать USB-трафик.
Выводы PWM ESP8266
Все выводы GPIO ESP8266 — от GPIO0 до GPIO15 — могут быть запрограммированы для генерации сигналов с широтно-импульсной модуляцией (PWM).
На ESP8266 сигнал PWM имеет 10-битное разрешение, а диапазон частоты PWM регулируется в пределах от 1000 мкс до 10000 мкс, т.е. от 100 Гц до 1 кГц.
Выводы SDIO ESP8266
ESP8266 имеет один подчинённый интерфейс SDIO (Secure Digital Input/Output Interface) для подключения SD-карт. Поддерживаются SDIO v1.1 (4-бит, 25 МГц) и SDIO v2.0 (4-бит, 50 МГц).
Выводы питания ESP8266
Вывод VIN может использоваться для непосредственного питания ESP8266 и его периферийных устройств, если у вас есть стабилизированный источник питания 5 В.
Вывод 3V3 является выходом встроенного стабилизатора напряжения; от него можно получить до 600 мА.
GND — это вывод заземления.
Выводы прерываний ESP8266
Все GPIO могут быть настроены как прерывания, за исключением GPIO16.
Управляющие выводы ESP8266
Вывод EN (также известный как CH_PD или Chip Power Down) — это вывод включения ESP8266, по умолчанию подтянутый к высокому уровню. Когда на нём HIGH, чип включён; когда LOW — чип выключен.
Вывод RST — это вывод сброса ESP8266, по умолчанию подтянутый к высокому уровню. При кратковременном подключении к земле происходит сброс ESP8266. Это эквивалентно нажатию кнопки RST на плате.
Вывод FLASH используется ESP8266 для определения момента входа в загрузчик. Если этот вывод удерживается в низком состоянии при включении питания, начнётся загрузка прошивки! Это эквивалентно нажатию кнопки FLASH на плате.
Вывод WAKE используется для пробуждения ESP8266 из глубокого сна.