Справочник по распиновке ESP32-WROOM-32
Для тех, кто хочет добавить беспроводное подключение в свои встраиваемые проекты или создать IoT-устройства, ESP32, вероятно, является самым популярным выбором. Он предлагает двухъядерный вариант для приложений, требующих высокой вычислительной мощности процессора, а встроенные WiFi и Bluetooth упрощают проектирование. Он также имеет достаточно входов/выходов, памяти и возможностей взаимодействия для удовлетворения потребностей большинства приложений.
Espressif, компания, стоящая за чипом ESP-32, также производит модули и отладочные платы. Если вы планируете разработать собственную печатную плату с ESP32, модуль ESP32-WROOM-32 — отличный выбор. Выбор модуля вместо голого чипа имеет ряд преимуществ. В частности, модуль уже имеет сертификацию FCC, что означает, что вам не нужно будет предпринимать никаких дополнительных мер для получения соответствия FCC. Это значительно упрощает процесс производства.
Когда дело доходит до разработки собственной печатной платы, понимание распиновки ESP32-WROOM-32 становится крайне важным. В этой статье мы подробно рассмотрим распиновку ESP32-WROOM-32.
Распиновка ESP32-WROOM-32
Модуль ESP32-WROOM-32 имеет в общей сложности 38 выводов. Распиновка выглядит следующим образом:
Давайте подробнее рассмотрим выводы ESP32 и их функции один за другим.
GPIO-выводы ESP32-WROOM-32
Модуль ESP32-WROOM-32 имеет 32 вывода GPIO, которым можно назначить различные функции путём программирования соответствующих регистров. Существует несколько типов GPIO: только цифровые, с поддержкой аналогового входа, с поддержкой ёмкостного сенсора и т.д. Большинство цифровых GPIO можно настроить с внутренней подтяжкой к питанию (pull-up) или к земле (pull-down), или установить в режим высокого импеданса.
Какие GPIO безопасны для использования?
Хотя модуль имеет множество выводов с различными функциями, некоторые из них могут не подходить для ваших проектов. В таблице ниже показано, какие выводы безопасны для использования, а какие следует использовать с осторожностью.
🟢 — Ваши приоритетные выводы. Они полностью безопасны для использования.
🟡 — Обратите пристальное внимание, так как их поведение, особенно во время загрузки, может быть непредсказуемым. Используйте их только при крайней необходимости.
🔴 — Рекомендуется избегать использования этих выводов.
Пин |
Маркировка |
GPIO |
Безопасно? |
Причина |
|---|---|---|---|---|
4 |
SENSOR_VP |
GPIO36 |
🟢 |
Только вход, нельзя настроить как выход |
5 |
SENSOR_VN |
GPIO39 |
🟢 |
Только вход, нельзя настроить как выход |
6 |
IO34 |
GPIO34 |
🟢 |
Только вход, нельзя настроить как выход |
7 |
IO35 |
GPIO35 |
🟢 |
Только вход, нельзя настроить как выход |
8 |
IO32 |
GPIO32 |
🟢 |
|
9 |
IO33 |
GPIO33 |
🟢 |
|
10 |
IO25 |
GPIO25 |
🟢 |
|
11 |
IO26 |
GPIO26 |
🟢 |
|
12 |
IO27 |
GPIO27 |
🟢 |
|
13 |
IO14 |
GPIO14 |
🟢 |
|
14 |
IO12 |
GPIO12 |
🟡 |
Должен быть LOW во время загрузки |
16 |
IO13 |
GPIO13 |
🟢 |
|
17 |
SHD/SD2 |
GPIO9 |
🔴 |
Подключён к Flash-памяти |
18 |
SWP/SD3 |
GPIO10 |
🔴 |
Подключён к Flash-памяти |
19 |
SCS/CMD |
GPIO11 |
🔴 |
Подключён к Flash-памяти |
20 |
SCK/CLK |
GPIO6 |
🔴 |
Подключён к Flash-памяти |
21 |
SDO/SD0 |
GPIO7 |
🔴 |
Подключён к Flash-памяти |
22 |
SDI/SD1 |
GPIO8 |
🔴 |
Подключён к Flash-памяти |
23 |
IO15 |
GPIO15 |
🟡 |
Должен быть HIGH во время загрузки, предотвращает вывод лога при подтяжке к LOW |
24 |
IO2 |
GPIO2 |
🟡 |
Должен быть LOW во время загрузки, также подключён к встроенному светодиоду |
25 |
IO0 |
GPIO0 |
🟡 |
Должен быть HIGH во время загрузки и LOW для программирования |
26 |
IO4 |
GPIO4 |
🟢 |
|
27 |
IO16 |
GPIO16 |
🟢 |
|
28 |
IO17 |
GPIO17 |
🟢 |
|
29 |
IO5 |
GPIO5 |
🟡 |
Должен быть HIGH во время загрузки |
30 |
IO18 |
GPIO18 |
🟢 |
|
31 |
IO19 |
GPIO19 |
🟢 |
|
33 |
IO21 |
GPIO21 |
🟢 |
|
34 |
RXD0 |
GPIO3 |
🟡 |
Вывод Rx, используется для прошивки и отладки |
35 |
TXD0 |
GPIO1 |
🟡 |
Вывод Tx, используется для прошивки и отладки |
36 |
IO22 |
GPIO22 |
🟢 |
|
37 |
IO23 |
GPIO23 |
🟢 |
На изображении ниже показано, какие GPIO-выводы можно безопасно использовать.
GPIO только для ввода
Выводы 4, 5, 6 и 7 не могут быть настроены как выходы. Они могут использоваться как цифровые или аналоговые входы, или для других целей. В отличие от остальных GPIO-выводов, у них также отсутствуют внутренние подтягивающие резисторы (pull-up и pull-down).
Выводы прерываний ESP32
Все GPIO могут быть настроены как прерывания. Для получения дополнительной информации обратитесь к руководству по обработке прерываний GPIO на ESP32.
Если вы уже некоторое время работаете с ESP32, вы, вероятно, писали код, который использует циклы для постоянной проверки нажатия кнопки…
АЦП-выводы ESP32-WROOM-32
Модуль ESP32-WROOM-32 имеет два блока АЦП (аналого-цифровой преобразователь): ADC1 и ADC2. Каждый блок имеет несколько каналов:
ADC1: содержит 6 каналов (обозначаемых как ADC1_CH0 и ADC1_CH3 — ADC1_CH7).
ADC2: содержит 10 каналов (обозначаемых как ADC2_CH0 — ADC2_CH9).
Разрешение АЦП на ESP32 может быть настроено до 12 бит. Это означает, что АЦП может различать 4096 (2^12) дискретных аналоговых уровней. Это даёт разрешение 3,3 В (рабочее напряжение) / 4096 единиц, или 0,0008 вольт (0,8 мВ) на единицу.
Предупреждение
Когда Wi-Fi включён, выводы ADC2 не могут использоваться. Если вам нужен Wi-Fi, рассмотрите возможность использования выводов ADC1.
ЦАП-выводы ESP32-WROOM-32
Модуль ESP32-WROOM-32 содержит два 8-битных цифро-аналоговых преобразователя (ЦАП). Эти ЦАП полезны для преобразования цифровых сигналов в аналоговые напряжения.
Выводы Touch ESP32-WROOM-32
Модуль ESP32-WROOM-32 имеет десять GPIO с поддержкой ёмкостного сенсора, обозначенных TOUCH0 — TOUCH9. Эти выводы работают путём измерения изменения ёмкости, когда палец или проводящий объект находится вблизи поверхности вывода.
Они могут использоваться для различных приложений, таких как сенсорные кнопки, сенсорные слайдеры или даже базовое распознавание жестов. Они также могут использоваться для пробуждения ESP32 из режима глубокого сна, что особенно полезно в приложениях, чувствительных к энергопотреблению.
Выводы I2C ESP32-WROOM-32
Модуль ESP32-WROOM-32 имеет два интерфейса шины I2C, но не имеет выделенных выводов I2C. Вместо этого он допускает гибкое назначение выводов, что означает, что любой GPIO-вывод может быть настроен как I2C SDA (линия данных) и SCL (линия тактирования).
Однако GPIO21 (SDA) и GPIO22 (SCL) обычно используются как выводы I2C по умолчанию, чтобы облегчить работу людям, использующим существующий код, библиотеки и скетчи Arduino.
Выводы SPI ESP32-WROOM-32
Модуль ESP32-WROOM-32 имеет три SPI-интерфейса (SPI, HSPI и VSPI). HSPI и VSPI обычно используются для общих целей, а третий используется для взаимодействия с SPI Flash-памятью, интегрированной в модуль.
Как и в случае с I2C, ESP32 допускает гибкое назначение выводов для SPI. Это означает, что любой GPIO-вывод может быть настроен как SPI-вывод.
Выводы UART ESP32-WROOM-32
Модуль ESP32-WROOM-32 имеет три интерфейса UART: UART0, UART1 и UART2. Эти интерфейсы обеспечивают последовательную связь с различными периферийными устройствами или используются для логирования и отладки.
Примечание
Обратите внимание, что выводы UART1 (GPIO 9 и GPIO 10) используются для взаимодействия с SPI Flash-памятью, интегрированной в модуль, поэтому вы не можете их использовать. Однако вы всё равно можете использовать UART1, реализовав протокол UART программно (bit-banging) на других GPIO-выводах.
Помимо основных выводов TX и RX, интерфейсы UART на ESP32 также поддерживают RTS (Request To Send) и CTS (Clear To Send) для аппаратного управления потоком, хотя они используются реже.
Выводы PWM ESP32-WROOM-32
Почти все GPIO-выводы модуля могут быть настроены для генерации PWM-сигнала.
PWM на ESP32 может быть настроен с высоким разрешением, обычно до 16 бит, что позволяет точно управлять PWM-сигналами. Частота PWM также может быть изменена, с типичным диапазоном от нескольких Гц до десятков МГц, что делает его подходящим для широкого спектра приложений — от управления двигателями до регулировки яркости светодиодов.
RTC GPIO-выводы ESP32-WROOM-32
Некоторые GPIO связаны с низкопотребляющей подсистемой RTC и известны как RTC GPIO. Эти GPIO могут использоваться для пробуждения ESP32 из режима глубокого сна и для взаимодействия с периферийными устройствами RTC.
Выводы Strapping ESP32-WROOM-32
На ESP32 имеется пять выводов strapping: GPIO0, GPIO2, GPIO5, GPIO12 и GPIO15. Состояние этих выводов определяет, войдёт ли ESP32 в режим BOOT (для запуска программы, хранящейся во Flash-памяти) или в режим FLASH (для загрузки программы во Flash-память) при включении питания.
Имейте в виду, что если к этим выводам подключены периферийные устройства, у вас могут возникнуть проблемы при попытке прошить ESP32 новой прошивкой. Это связано с тем, что эти периферийные устройства могут помешать ESP32 войти в правильный режим.
Выводы питания ESP32-WROOM-32
Выводы питания обеспечивают модулю необходимое напряжение для работы:
3V3 — основной вывод напряжения питания. На него должно подаваться стабильное напряжение 3,3 В.
GND — вывод заземления.
Вывод Enable ESP32-WROOM-32
Вывод EN — это вывод включения (enable) ESP32. Когда он подтянут к HIGH, чип включён и работает; когда он подтянут к LOW, чип отключён.