Справочник по распиновке ESP32-WROOM-32

Справочник по распиновке 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-WROOM-32

Давайте подробнее рассмотрим выводы ESP32 и их функции один за другим.

GPIO-выводы ESP32-WROOM-32

Модуль ESP32-WROOM-32 имеет 32 вывода GPIO, которым можно назначить различные функции путём программирования соответствующих регистров. Существует несколько типов GPIO: только цифровые, с поддержкой аналогового входа, с поддержкой ёмкостного сенсора и т.д. Большинство цифровых GPIO можно настроить с внутренней подтяжкой к питанию (pull-up) или к земле (pull-down), или установить в режим высокого импеданса.

GPIO-выводы ESP32-WROOM-32

Какие 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-выводы ESP32-WROOM-32

GPIO только для ввода

Выводы 4, 5, 6 и 7 не могут быть настроены как выходы. Они могут использоваться как цифровые или аналоговые входы, или для других целей. В отличие от остальных GPIO-выводов, у них также отсутствуют внутренние подтягивающие резисторы (pull-up и pull-down).

Выводы прерываний ESP32

Все GPIO могут быть настроены как прерывания. Для получения дополнительной информации обратитесь к руководству по обработке прерываний GPIO на ESP32.

Настройка и обработка прерываний GPIO на ESP32 в Arduino IDE

Если вы уже некоторое время работаете с ESP32, вы, вероятно, писали код, который использует циклы для постоянной проверки нажатия кнопки…

/lastminuteengineers/handling-esp32-gpio-interrupts-tutorial/index

АЦП-выводы ESP32-WROOM-32

Модуль ESP32-WROOM-32 имеет два блока АЦП (аналого-цифровой преобразователь): ADC1 и ADC2. Каждый блок имеет несколько каналов:

  • ADC1: содержит 6 каналов (обозначаемых как ADC1_CH0 и ADC1_CH3 — ADC1_CH7).

  • ADC2: содержит 10 каналов (обозначаемых как ADC2_CH0 — ADC2_CH9).

АЦП-выводы ESP32-WROOM-32

Разрешение АЦП на 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-битных цифро-аналоговых преобразователя (ЦАП). Эти ЦАП полезны для преобразования цифровых сигналов в аналоговые напряжения.

ЦАП-выводы ESP32-WROOM-32

Выводы Touch ESP32-WROOM-32

Модуль ESP32-WROOM-32 имеет десять GPIO с поддержкой ёмкостного сенсора, обозначенных TOUCH0 — TOUCH9. Эти выводы работают путём измерения изменения ёмкости, когда палец или проводящий объект находится вблизи поверхности вывода.

Они могут использоваться для различных приложений, таких как сенсорные кнопки, сенсорные слайдеры или даже базовое распознавание жестов. Они также могут использоваться для пробуждения ESP32 из режима глубокого сна, что особенно полезно в приложениях, чувствительных к энергопотреблению.

Выводы Touch ESP32-WROOM-32

Выводы I2C ESP32-WROOM-32

Модуль ESP32-WROOM-32 имеет два интерфейса шины I2C, но не имеет выделенных выводов I2C. Вместо этого он допускает гибкое назначение выводов, что означает, что любой GPIO-вывод может быть настроен как I2C SDA (линия данных) и SCL (линия тактирования).

Однако GPIO21 (SDA) и GPIO22 (SCL) обычно используются как выводы I2C по умолчанию, чтобы облегчить работу людям, использующим существующий код, библиотеки и скетчи Arduino.

Выводы I2C ESP32-WROOM-32

Выводы SPI ESP32-WROOM-32

Модуль ESP32-WROOM-32 имеет три SPI-интерфейса (SPI, HSPI и VSPI). HSPI и VSPI обычно используются для общих целей, а третий используется для взаимодействия с SPI Flash-памятью, интегрированной в модуль.

Как и в случае с I2C, ESP32 допускает гибкое назначение выводов для SPI. Это означает, что любой GPIO-вывод может быть настроен как SPI-вывод.

Выводы SPI ESP32-WROOM-32

Выводы UART ESP32-WROOM-32

Модуль ESP32-WROOM-32 имеет три интерфейса UART: UART0, UART1 и UART2. Эти интерфейсы обеспечивают последовательную связь с различными периферийными устройствами или используются для логирования и отладки.

Выводы UART ESP32-WROOM-32

Примечание

Обратите внимание, что выводы 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-WROOM-32

PWM на ESP32 может быть настроен с высоким разрешением, обычно до 16 бит, что позволяет точно управлять PWM-сигналами. Частота PWM также может быть изменена, с типичным диапазоном от нескольких Гц до десятков МГц, что делает его подходящим для широкого спектра приложений — от управления двигателями до регулировки яркости светодиодов.

RTC GPIO-выводы ESP32-WROOM-32

Некоторые GPIO связаны с низкопотребляющей подсистемой RTC и известны как RTC GPIO. Эти GPIO могут использоваться для пробуждения ESP32 из режима глубокого сна и для взаимодействия с периферийными устройствами RTC.

RTC GPIO-выводы ESP32-WROOM-32

Выводы Strapping ESP32-WROOM-32

На ESP32 имеется пять выводов strapping: GPIO0, GPIO2, GPIO5, GPIO12 и GPIO15. Состояние этих выводов определяет, войдёт ли ESP32 в режим BOOT (для запуска программы, хранящейся во Flash-памяти) или в режим FLASH (для загрузки программы во Flash-память) при включении питания.

Выводы Strapping ESP32-WROOM-32

Имейте в виду, что если к этим выводам подключены периферийные устройства, у вас могут возникнуть проблемы при попытке прошить ESP32 новой прошивкой. Это связано с тем, что эти периферийные устройства могут помешать ESP32 войти в правильный режим.

Выводы питания ESP32-WROOM-32

Выводы питания обеспечивают модулю необходимое напряжение для работы:

3V3 — основной вывод напряжения питания. На него должно подаваться стабильное напряжение 3,3 В.

GND — вывод заземления.

Выводы питания ESP32-WROOM-32

Вывод Enable ESP32-WROOM-32

Вывод EN — это вывод включения (enable) ESP32. Когда он подтянут к HIGH, чип включён и работает; когда он подтянут к LOW, чип отключён.

Вывод Enable ESP32-WROOM-32