Одним из преимуществ 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 имеет 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 из режима глубокого сна .
Контакты I2C
ESP32 имеет два интерфейса шины I2C, но не имеет выделенных контактов I2C. Вместо этого он позволяет гибко назначать контакты, то есть любой вывод GPIO можно настроить как I2C SDA (линия данных) и SCL (линия синхронизации).
Однако GPIO21 (SDA) и GPIO22 (SCL) обычно используются в качестве контактов I2C по умолчанию, чтобы облегчить людям использование существующего кода, библиотек и эскизов Arduino.
SPI-контакты
ESP32 имеет три интерфейса SPI (SPI, HSPI и VSPI) в подчиненном и ведущем режимах. Эти SPI также поддерживают функции SPI общего назначения, перечисленные ниже:
- 4 режима синхронизации передачи формата SPI
- До 80 МГц и разделенные часы 80 МГц
- До 64-байтового FIFO
Только 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 — это контакт заземления.
Вывод включения
Вывод EN является контактом включения ESP32, по умолчанию он поднят на высокий уровень. Когда вытянут ВЫСОКИЙ уровень, чип включается; при НИЗКОМ уровне чип отключается.
Вывод EN также подключен к кнопочному переключателю, который может перевести вывод в НИЗКИЙ уровень и вызвать сброс.