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

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

Одно из преимуществ ESP32 заключается в том, что у него гораздо больше выводов GPIO, чем у ESP8266. Вам не придётся жонглировать или мультиплексировать свои выводы ввода/вывода. Однако есть несколько моментов, которые необходимо учитывать, поэтому внимательно ознакомьтесь с описанием распиновки.

Примечание

Обратите внимание, что следующее описание распиновки относится к популярной 30-пиновой отладочной плате ESP32 devkit v1.

30-контактная отладочная плата ESP32

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

Периферия и ввод/вывод ESP32

Хотя ESP32 имеет в общей сложности 48 выводов GPIO, только 25 из них выведены на штыревые разъёмы по обеим сторонам отладочной платы. Этим выводам можно назначить различные периферийные функции, в том числе:

15 каналов АЦП

15 каналов 12-битного SAR АЦП с выбираемыми диапазонами 0–1 В, 0–1,4 В, 0–2 В или 0–4 В

2 интерфейса UART

2 интерфейса UART с управлением потоком и поддержкой IrDA

25 выходов ШИМ

25 выводов ШИМ для управления такими устройствами, как скорость двигателя или яркость светодиода

2 канала ЦАП

Два 8-битных ЦАП для генерации истинных аналоговых напряжений

Интерфейсы SPI, I2C и I2S

Три интерфейса SPI и один I2C для подключения различных датчиков и периферийных устройств, а также два интерфейса I2S для добавления звука в ваш проект

9 сенсорных площадок

9 GPIO с ёмкостным сенсорным считыванием

Благодаря функции мультиплексирования выводов ESP32, несколько периферийных устройств могут совместно использовать один вывод GPIO. Например, один вывод GPIO может выступать в качестве входа АЦП, выхода ЦАП или сенсорной площадки.

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

Даташит ESP32

Распиновка ESP32

Отладочная плата ESP32 DevKit V1 имеет 30 выводов. Для удобства выводы с аналогичными функциями сгруппированы вместе. Распиновка выглядит следующим образом:

Распиновка ESP32

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

Выводы GPIO ESP32

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

Выводы GPIO ESP32

Какие GPIO ESP32 безопасны для использования?

Хотя ESP32 имеет множество выводов с различными функциями, некоторые из них могут оказаться непригодными для ваших проектов. В таблице ниже показано, какие выводы безопасны для использования, а какие следует использовать с осторожностью.

  • 🟢 — Ваши приоритетные выводы. Они полностью безопасны для использования.

  • 🟡 — Обратите особое внимание, поскольку их поведение, особенно во время загрузки, может быть непредсказуемым. Используйте их только при крайней необходимости.

  • 🔴 — Рекомендуется избегать использования этих выводов.

Маркировка

GPIO

Безопасен?

Причина

D0

0

🟡

должен быть HIGH при загрузке и LOW для программирования

TX0

1

🔴

Вывод Tx, используется для прошивки и отладки

D2

2

🟡

должен быть LOW при загрузке, также подключён к встроенному светодиоду

RX0

3

🔴

Вывод Rx, используется для прошивки и отладки

D4

4

🟢

D5

5

🟡

должен быть HIGH при загрузке

D6

6

🔴

Подключён к Flash-памяти

D7

7

🔴

Подключён к Flash-памяти

D8

8

🔴

Подключён к Flash-памяти

D9

9

🔴

Подключён к Flash-памяти

D10

10

🔴

Подключён к Flash-памяти

D11

11

🔴

Подключён к Flash-памяти

D12

12

🟡

должен быть LOW при загрузке

D13

13

🟢

D14

14

🟢

D15

15

🟡

должен быть HIGH при загрузке, при подтяжке к LOW блокирует лог загрузки

RX2

16

🟢

TX2

17

🟢

D18

18

🟢

D19

19

🟢

D21

21

🟢

D22

22

🟢

D23

23

🟢

D25

25

🟢

D26

26

🟢

D27

27

🟢

D32

32

🟢

D33

33

🟢

D34

34

🟢

GPIO только для ввода, не может быть настроен как выход

D35

35

🟢

GPIO только для ввода, не может быть настроен как выход

VP

36

🟢

GPIO только для ввода, не может быть настроен как выход

VN

39

🟢

GPIO только для ввода, не может быть настроен как выход

На изображении ниже показано, какие выводы GPIO можно безопасно использовать.

Безопасные для использования выводы GPIO ESP32

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

Выводы GPIO34, GPIO35, GPIO36(VP) и GPIO39(VN) не могут быть настроены как выходы. Они могут использоваться как цифровые или аналоговые входы, либо для других целей. Также, в отличие от остальных выводов GPIO, они не имеют внутренних подтягивающих резисторов (pull-up и pull-down).

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

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

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

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

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

Выводы АЦП ESP32

ESP32 интегрирует два 12-битных SAR АЦП и поддерживает измерения на 15 каналах (выводы с поддержкой аналогового ввода).

Выводы АЦП ESP32

АЦП ESP32 является 12-битным, что означает, что он может различать 4096 (2^12) дискретных аналоговых уровней. Другими словами, он преобразует входные напряжения в диапазоне от 0 до 3,3 В (рабочее напряжение) в целочисленные значения от 0 до 4095. Это даёт разрешение 3,3 В / 4096 единиц, или 0,0008 В (0,8 мВ) на единицу.

Кроме того, разрешение АЦП и диапазон канала могут быть настроены программно.

Предупреждение

Выводы ADC2 не могут использоваться при включённом Wi-Fi. Если ваш проект требует Wi-Fi, рассмотрите возможность использования выводов ADC1.

Выводы ЦАП ESP32

ESP32 включает два 8-битных канала ЦАП для преобразования цифровых сигналов в истинные аналоговые напряжения. Их можно использовать в качестве «цифрового потенциометра» для управления аналоговыми устройствами.

Выводы ЦАП ESP32

Эти ЦАП имеют 8-битное разрешение, что означает, что значения в диапазоне от 0 до 256 будут преобразованы в аналоговое напряжение в диапазоне от 0 до 3,3 В.

Примечание

8-битное разрешение ЦАП может быть недостаточным для использования в аудиоприложениях. В таком случае предпочтительнее использовать внешний ЦАП с более высоким разрешением (12–24 бита).

Сенсорные выводы ESP32

ESP32 имеет 9 GPIO с ёмкостным сенсорным считыванием. Когда ёмкостная нагрузка (например, палец человека) находится в непосредственной близости от GPIO, ESP32 обнаруживает изменение ёмкости.

Сенсорные выводы ESP32

Вы можете создать сенсорную площадку, подключив к этим выводам любой проводящий объект, например алюминиевую фольгу, проводящую ткань, проводящую краску и т.д. Благодаря малошумной конструкции и высокой чувствительности схемы можно создавать относительно небольшие сенсорные площадки.

Кроме того, эти ёмкостные сенсорные выводы могут использоваться для пробуждения ESP32 из режима глубокого сна.

Выводы I2C ESP32

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

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

Выводы I2C ESP32

Выводы SPI ESP32

ESP32 имеет три интерфейса SPI (SPI, HSPI и VSPI) в режимах ведомого и ведущего. Эти интерфейсы SPI также поддерживают следующие общие функции SPI:

  • 4 режима тактирования формата передачи SPI

  • Частота до 80 МГц и делённые тактовые частоты от 80 МГц

  • FIFO до 64 байт

Выводы SPI ESP32

Только VSPI и HSPI являются используемыми интерфейсами SPI, а третья шина SPI используется встроенным чипом Flash-памяти. Выводы VSPI обычно используются в стандартных библиотеках.

HSPI и VSPI

HSPI иногда ошибочно интерпретируется как «аппаратный» SPI, а VSPI — как «виртуальный или программный» SPI. На самом деле они идентичны!

Как и в случае с I2C, вы можете программно реализовать протокол SPI на любых выводах GPIO с помощью команды bus.begin(CLK_PIN, MISO_PIN, MOSI_PIN, SS_PIN);.

Выводы UART ESP32

Отладочная плата ESP32 имеет три интерфейса UART — UART0, UART1 и UART2, которые поддерживают асинхронную связь (RS232 и RS485) и IrDA на скорости до 5 Мбит/с.

  • UART0 — выводы подключены к преобразователю USB-Serial и используются для прошивки и отладки. Поэтому использование выводов UART0 не рекомендуется.

  • UART1 — выводы зарезервированы для встроенного чипа Flash-памяти.

  • UART2 — безопасный вариант для подключения UART-устройств, таких как GPS, датчик отпечатков пальцев, датчик расстояния и т.д.

Выводы UART ESP32

Кроме того, UART обеспечивает аппаратное управление сигналами CTS и RTS, а также программное управление потоком (XON и XOFF).

Выводы ШИМ ESP32

Плата имеет 21 канал (все GPIO, кроме GPIO только для ввода) ШИМ-выводов, управляемых контроллером ШИМ. ШИМ-выход может использоваться для управления цифровыми двигателями и светодиодами.

Выводы ШИМ ESP32

Контроллер ШИМ состоит из таймеров ШИМ, оператора ШИМ и выделенного подмодуля захвата. Каждый таймер обеспечивает тактирование в синхронном или независимом режиме, а каждый оператор ШИМ генерирует сигнал для одного канала ШИМ. Выделенный подмодуль захвата может точно фиксировать события с внешним тактированием.

Выводы RTC GPIO ESP32

Некоторые GPIO подключены к низкомощной подсистеме RTC и называются RTC GPIO. Эти выводы используются для пробуждения ESP32 из режима глубокого сна, когда работает сопроцессор сверхнизкого потребления (ULP). Выделенные ниже GPIO могут использоваться в качестве источников внешнего пробуждения.

Выводы RTC GPIO ESP32

Выводы конфигурации (Strapping Pins) ESP32

Существует пять выводов конфигурации: GPIO0, GPIO2, GPIO5, GPIO12 и GPIO15.

Выводы конфигурации ESP32

Эти выводы используются для перевода ESP32 в режим BOOT (для запуска программы, хранящейся во Flash-памяти) или режим FLASH (для загрузки программы во Flash-память). В зависимости от состояния этих выводов ESP32 войдёт в режим BOOT или FLASH при включении питания.

На большинстве отладочных плат со встроенным USB/Serial вам не нужно беспокоиться о состоянии этих выводов, поскольку плата автоматически устанавливает их в правильное состояние для режима прошивки или загрузки.

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

Выводы конфигурации нормально функционируют после снятия сброса, но их следует использовать с осторожностью.

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

Есть два вывода питания: вывод VIN и вывод 3V3. Вывод VIN может использоваться для непосредственного питания ESP32 и его периферии, если у вас есть стабилизированный источник питания 5 В. Вывод 3V3 — это выход встроенного стабилизатора напряжения; от него можно получить до 600 мА. GND — это вывод заземления.

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

Вывод включения (Enable) ESP32

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

Вывод EN также подключён к кнопке, которая может подтянуть вывод к LOW и вызвать сброс.

Вывод включения ESP32