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

Примечание:

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

30pin ESP32 Dev Board

Не каждая плата разработки 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 и их функции один за другим.

Контакты GPIO

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

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

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

Ваши самые приоритетные значки. Они совершенно безопасны в использовании.

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

Рекомендуется избегать использования этих штифтов.

Label GPIO Safe to use? Reason
D0 0   must be HIGH during boot and LOW for programming
TX0 1   Tx pin, used for flashing and debugging
D2 2   must be LOW during boot and also connected to the on-board LED
RX0 3   Rx pin, used for flashing and debugging
D4 4    
D5 5   must be HIGH during boot
D6 6   Connected to Flash memory
D7 7   Connected to Flash memory
D8 8   Connected to Flash memory
D9 9   Connected to Flash memory
D10 10   Connected to Flash memory
D11 11   Connected to Flash memory
D12 12   must be LOW during boot
D13 13    
D14 14    
D15 15   must be HIGH during boot, prevents startup log if pulled 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 Input only GPIO, cannot be configured as output
D35 35 Input only GPIO, cannot be configured as output
VP 36 Input only GPIO, cannot be configured as output
VN 39 Input only GPIO, cannot be configured as output

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

Вход только GPIO

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

Контакты прерывания ESP32

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

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

Выводы АЦП

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 включает в себя два 8-битных канала ЦАП для преобразования цифровых сигналов в настоящие аналоговые напряжения. Его можно использовать как «цифровой потенциометр» для управления аналоговыми устройствами.

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

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

Сенсорные контакты

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

Сенсорные контакты ESP32

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

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

Контакты I2C

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

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

Контакты ESP32 I2C

SPI-контакты

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

    • 4 режима синхронизации передачи формата SPI
    • До 80 МГц и разделенные часы 80 МГц
  • До 64-байтового FIFO

Контакты ESP32 SPI

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

HSPI против VSPI

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

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

Контакты UART

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

    • Выводы UART0 подключаются к преобразователю USB-Serial и используются для прошивки и отладки. Поэтому выводы UART0 использовать не рекомендуется.
    • Выводы UART1 зарезервированы для встроенной микросхемы флэш-памяти.
    • UART2, с другой стороны, является безопасным вариантом подключения к UART-устройствам, таким как GPS, датчик отпечатков пальцев, датчик расстояния и так далее.

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

ШИМ-контакты

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

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

Контакты RTC GPIO

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

Обвязочные контакты

Имеется пять соединительных контактов: GPIO0, GPIO2, GPIO5, GPIO12 и GPIO15.

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

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

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

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

Силовые контакты

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

Контакты питания ESP32

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

Вывод EN является контактом включения ESP32, по умолчанию он поднят на высокий уровень. Когда вытянут ВЫСОКИЙ уровень, чип включается; при НИЗКОМ уровне чип отключается.

Вывод EN также подключен к кнопочному переключателю, который может перевести вывод в НИЗКИЙ уровень и вызвать сброс.

esp32 включающий контакт