Справочник по распиновке ESP32
Одно из преимуществ ESP32 заключается в том, что у него гораздо больше выводов GPIO, чем у ESP8266. Вам не придётся жонглировать или мультиплексировать свои выводы ввода/вывода. Однако есть несколько моментов, которые необходимо учитывать, поэтому внимательно ознакомьтесь с описанием распиновки.
Примечание
Обратите внимание, что следующее описание распиновки относится к популярной 30-пиновой отладочной плате ESP32 devkit v1.
Не каждая отладочная плата 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 DevKit V1 имеет 30 выводов. Для удобства выводы с аналогичными функциями сгруппированы вместе. Распиновка выглядит следующим образом:
Давайте подробнее рассмотрим выводы ESP32 и их функции.
Выводы GPIO ESP32
Отладочная плата ESP32 имеет 25 выводов GPIO, которым можно назначить различные функции путём программирования соответствующих регистров. Существует несколько типов GPIO: только цифровые, с поддержкой аналогового ввода, с поддержкой ёмкостного сенсора и т.д. GPIO с поддержкой аналогового ввода и GPIO с поддержкой ёмкостного сенсора могут быть настроены как цифровые GPIO. Большинство этих цифровых GPIO могут быть настроены с внутренней подтяжкой к питанию (pull-up) или к земле (pull-down), либо переведены в состояние высокого импеданса.
Какие 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 только для ввода
Выводы GPIO34, GPIO35, GPIO36(VP) и GPIO39(VN) не могут быть настроены как выходы. Они могут использоваться как цифровые или аналоговые входы, либо для других целей. Также, в отличие от остальных выводов GPIO, они не имеют внутренних подтягивающих резисторов (pull-up и pull-down).
Выводы прерываний ESP32
Все GPIO могут быть настроены как прерывания. Для получения дополнительной информации обратитесь к соответствующему руководству.
Если вы уже некоторое время работаете с ESP32, вы, вероятно, писали код, который использует циклы для постоянной проверки нажатия кнопки…
Выводы АЦП ESP32
ESP32 интегрирует два 12-битных SAR АЦП и поддерживает измерения на 15 каналах (выводы с поддержкой аналогового ввода).
АЦП 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-битных канала ЦАП для преобразования цифровых сигналов в истинные аналоговые напряжения. Их можно использовать в качестве «цифрового потенциометра» для управления аналоговыми устройствами.
Эти ЦАП имеют 8-битное разрешение, что означает, что значения в диапазоне от 0 до 256 будут преобразованы в аналоговое напряжение в диапазоне от 0 до 3,3 В.
Примечание
8-битное разрешение ЦАП может быть недостаточным для использования в аудиоприложениях. В таком случае предпочтительнее использовать внешний ЦАП с более высоким разрешением (12–24 бита).
Сенсорные выводы ESP32
ESP32 имеет 9 GPIO с ёмкостным сенсорным считыванием. Когда ёмкостная нагрузка (например, палец человека) находится в непосредственной близости от GPIO, ESP32 обнаруживает изменение ёмкости.
Вы можете создать сенсорную площадку, подключив к этим выводам любой проводящий объект, например алюминиевую фольгу, проводящую ткань, проводящую краску и т.д. Благодаря малошумной конструкции и высокой чувствительности схемы можно создавать относительно небольшие сенсорные площадки.
Кроме того, эти ёмкостные сенсорные выводы могут использоваться для пробуждения ESP32 из режима глубокого сна.
Выводы I2C ESP32
ESP32 имеет два интерфейса шины I2C, но не имеет выделенных выводов I2C. Вместо этого он допускает гибкое назначение выводов, что означает, что любой вывод GPIO может быть настроен как SDA (линия данных) и SCL (линия тактового сигнала) I2C.
Однако GPIO21 (SDA) и GPIO22 (SCL) обычно используются как выводы I2C по умолчанию, чтобы упростить работу с существующим кодом Arduino, библиотеками и скетчами.
Выводы SPI ESP32
ESP32 имеет три интерфейса SPI (SPI, HSPI и VSPI) в режимах ведомого и ведущего. Эти интерфейсы SPI также поддерживают следующие общие функции SPI:
4 режима тактирования формата передачи SPI
Частота до 80 МГц и делённые тактовые частоты от 80 МГц
FIFO до 64 байт
Только 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 обеспечивает аппаратное управление сигналами CTS и RTS, а также программное управление потоком (XON и XOFF).
Выводы ШИМ ESP32
Плата имеет 21 канал (все GPIO, кроме GPIO только для ввода) ШИМ-выводов, управляемых контроллером ШИМ. ШИМ-выход может использоваться для управления цифровыми двигателями и светодиодами.
Контроллер ШИМ состоит из таймеров ШИМ, оператора ШИМ и выделенного подмодуля захвата. Каждый таймер обеспечивает тактирование в синхронном или независимом режиме, а каждый оператор ШИМ генерирует сигнал для одного канала ШИМ. Выделенный подмодуль захвата может точно фиксировать события с внешним тактированием.
Выводы RTC GPIO ESP32
Некоторые GPIO подключены к низкомощной подсистеме RTC и называются RTC GPIO. Эти выводы используются для пробуждения ESP32 из режима глубокого сна, когда работает сопроцессор сверхнизкого потребления (ULP). Выделенные ниже GPIO могут использоваться в качестве источников внешнего пробуждения.
Выводы конфигурации (Strapping Pins) ESP32
Существует пять выводов конфигурации: GPIO0, GPIO2, GPIO5, GPIO12 и GPIO15.
Эти выводы используются для перевода ESP32 в режим BOOT (для запуска программы, хранящейся во Flash-памяти) или режим FLASH (для загрузки программы во Flash-память). В зависимости от состояния этих выводов ESP32 войдёт в режим BOOT или FLASH при включении питания.
На большинстве отладочных плат со встроенным USB/Serial вам не нужно беспокоиться о состоянии этих выводов, поскольку плата автоматически устанавливает их в правильное состояние для режима прошивки или загрузки.
Однако, если к этим выводам подключена периферия, вы можете столкнуться с проблемами при попытке загрузить новый код или прошить ESP32 новой прошивкой, поскольку эта периферия может помешать ESP32 войти в правильный режим.
Выводы конфигурации нормально функционируют после снятия сброса, но их следует использовать с осторожностью.
Выводы питания ESP32
Есть два вывода питания: вывод VIN и вывод 3V3. Вывод VIN может использоваться для непосредственного питания ESP32 и его периферии, если у вас есть стабилизированный источник питания 5 В. Вывод 3V3 — это выход встроенного стабилизатора напряжения; от него можно получить до 600 мА. GND — это вывод заземления.
Вывод включения (Enable) ESP32
Вывод EN — это вывод включения ESP32, по умолчанию подтянутый к высокому уровню. Когда он подтянут к HIGH, чип включён; когда подтянут к LOW, чип выключен.
Вывод EN также подключён к кнопке, которая может подтянуть вывод к LOW и вызвать сброс.