Микроконтроллер ESP-WROOM-32 (ESP32-S) (Espressif Systems) сочетает двухъядерный процессор Xtensa с модулями Wi-Fi 802.11 b/g/n и Bluetooth (Classic/BLE). Набор периферийных интерфейсов (ADC, DAC, I2C, SPI) и поддержка Arduino IDE обеспечивают его широкое применение в качестве основы для IoT-устройств, систем автоматизации и сложных embedded-решений. Ниже распиновка данного микроконтроллера.

В состав периферийных устройств ESP32 входят:

  • 18 каналов аналого-цифрового преобразователя (АЦП)
  • 3 интерфейса SPI
  • 3 интерфейса UART
  • 2 интерфейса I2C
  • 16 выходных каналов ШИМ
  • 2 цифро-аналоговых преобразователя (ЦАП)
  • 2 интерфейса I2S
  • 10 емкостных сенсорных выводов GPIO

 

Какие контакты можно использовать в ESP32

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

GPIO Вход Выход Описание
0 pulled up OK Выдает ШИМ-сигнал при загрузке (конфигурационный вывод). Для входа в режим прошивки должен быть установлен низкий уровень (LOW)
1 TX pin OK отладочная информация при загрузке системы
2 OK OK Подключенный к встроенному светодиоду, для перехода в режим мигания его необходимо оставить в плавающем состоянии или в положении LOW.
3 OK RX pin Высокий уровень (HIGH) при загрузке 
4 OK OK  
5 OK OK Выдает ШИМ-сигнал при загрузке (конфигурационный вывод)
6 x x подключено к встроенной SPI-флэш-памяти
7 x x подключено к встроенной SPI-флэш-памяти
8 x x подключено к встроенной SPI-флэш-памяти
9 x x подключено к встроенной SPI-флэш-памяти
10 x x подключено к встроенной SPI-флэш-памяти
11 x x подключено к встроенной SPI-флэш-памяти
12 OK OK Сбой загрузки при высоком уровне, конфигурационный вывод
13 OK OK  
14 OK OK Выдает ШИМ-сигнал при загрузке
15 OK OK Выдает ШИМ-сигнал при загрузке (конфигурационный вывод)
16 OK OK  
17 OK OK  
18 OK OK  
19 OK OK  
21 OK OK  
22 OK OK  
23 OK OK  
25 OK OK  
26 OK OK  
27 OK OK  
32 OK OK  
33 OK OK  
34 OK   Только вход
35 OK   Только вход
36 OK   Только вход
39 OK   Только вход

 

Входные контакты

Контакты GPIO с 34 по 39 — это контакты только для ввода. Эти контакты не имеют внутренних подтягивающих или отключающих резисторов. Их нельзя использовать в качестве выходов, поэтому используйте эти контакты только в качестве входов:

  • GPIO 34
  • GPIO 35
  • GPIO 36
  • GPIO 39

 

Встроенная SPI-флэш-память в ESP32s

В некоторых платах разработки ESP32 доступны контакты GPIO 6–GPIO 11. Однако эти контакты подключены к встроенной SPI-флэш-памяти микросхемы ESP-WROOM-32 и не рекомендуются для других целей. Поэтому не используйте эти контакты в своих проектах:

  • GPIO 6 (SCK/CLK)
  • GPIO 7 (SDO/SD0)
  • GPIO 8 (SDI/SD1)
  • GPIO 9 (SHD/SD2)
  • GPIO 10 (SWP/SD3)
  • GPIO 11 (CSC/CMD)

 

Емкостные сенсорные GPIO

ESP32 имеет 10 внутренних емкостных сенсоров. Они способны улавливать изменения в любых поверхностях, обладающих электрическим зарядом, например, на коже человека. Таким образом, они могут обнаруживать изменения, возникающие при касании выводов GPIO пальцем. Эти выводы легко интегрируются в емкостные площадки и заменяют механические кнопки. Емкостные сенсорные выводы также могут использоваться для пробуждения ESP32 из глубокого сна .

Эти внутренние сенсорные датчики подключены к следующим выводам GPIO:

  • T0 (GPIO 4)
  • T1 (GPIO 0)
  • T2 (GPIO 2)
  • T3 (GPIO 15)
  • T4 (GPIO 13)
  • T5 (GPIO 12)
  • T6 (GPIO 14)
  • T7 (GPIO 27)
  • T8 (GPIO 33)
  • T9 (GPIO 32)

 

Аналого-цифровой преобразователь (АЦП)

ESP32 имеет 18 12-битных входных каналов АЦП. Вот контакты GPIO, которые можно использовать в качестве АЦП и соответствующих каналов:

  • ADC1_CH0 (GPIO 36)
  • ADC1_CH1 (GPIO 37)
  • ADC1_CH2 (GPIO 38)
  • ADC1_CH3 (GPIO 39)
  • ADC1_CH4 (GPIO 32)
  • ADC1_CH5 (GPIO 33)
  • ADC1_CH6 (GPIO 34)
  • ADC1_CH7 (GPIO 35)
  • ADC2_CH0 (GPIO 4)
  • ADC2_CH1 (GPIO 0)
  • ADC2_CH2 (GPIO 2)
  • ADC2_CH3 (GPIO 15)
  • ADC2_CH4 (GPIO 13)
  • ADC2_CH5 (GPIO 12)
  • ADC2_CH6 (GPIO 14)
  • ADC2_CH7 (GPIO 27)
  • ADC2_CH8 (GPIO 25)
  • ADC2_CH9 (GPIO 26)

Примечание: контакты ADC2 нельзя использовать при подключении к Wi-Fi. Поэтому, если вы используете Wi-Fi и у вас возникают проблемы с получением значения с GPIO ADC2, вы можете рассмотреть возможность использования GPIO ADC1. Это должно решить вашу проблему.

Входные каналы АЦП имеют 12-битное разрешение. Это означает, что вы можете получать аналоговые показания в диапазоне от 0 до 4095, где 0 соответствует 0 В, а 4095 — 3,3 В. Вы также можете установить разрешение каналов в коде и диапазон АЦП.

Контакты АЦП ESP32 не обладают линейной характеристикой. Вероятно, вы не сможете различить значения от 0 до 0,1 В или от 3,2 до 3,3 В. Это необходимо учитывать при использовании контактов АЦП.

 

Цифро-аналоговый преобразователь (ЦАП)

В ESP32 имеется 2 канала ЦАП по 8 бит для преобразования цифровых сигналов в аналоговые сигналы напряжения. Вот эти каналы ЦАП:

  • ЦАП1 (GPIO25)
  • ЦАП2 (GPIO26)

 

GPIO RTC

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

  • RTC_GPIO0 (GPIO36)
  • RTC_GPIO3 (GPIO39)
  • RTC_GPIO4 (GPIO34)
  • RTC_GPIO5 (GPIO35)
  • RTC_GPIO6 (GPIO25)
  • RTC_GPIO7 (GPIO26)
  • RTC_GPIO8 (GPIO33)
  • RTC_GPIO9 (GPIO32)
  • RTC_GPIO10 (GPIO4)
  • RTC_GPIO11 (GPIO0)
  • RTC_GPIO12 (GPIO2)
  • RTC_GPIO13 (GPIO15)
  • RTC_GPIO14 (GPIO13)
  • RTC_GPIO15 (GPIO12)
  • RTC_GPIO16 (GPIO14)
  • RTC_GPIO17 (GPIO27)

 

ШИМ

Контроллер ШИМ для светодиодов ESP32 имеет 16 независимых каналов, которые можно настроить для генерации ШИМ-сигналов с различными свойствами. Все выводы, которые могут выступать в качестве выходов, могут использоваться как ШИМ-выводы (выводы GPIO с 34 по 39 не могут генерировать ШИМ).

Для установки ШИМ-сигнала необходимо определить следующие параметры в коде:

  • Частота сигнала;
  • Рабочий цикл;
  • ШИМ-канал;
  • Контакт GPIO, куда вы хотите вывести сигнал.

 

I2C

ESP32 имеет два канала I2C, и любой вывод может быть установлен как SDA или SCL. При использовании ESP32 с Arduino IDE по умолчанию используются следующие выводы I2C:

  • GPIO 21 (SDA)
  • GPIO 22 (SCL)

 

SPI

По умолчанию для интерфейса SPI используется следующая схема расположения контактов:

SPI MOSI MISO CLK CS
VSPI GPIO 23 GPIO 19 GPIO 18 GPIO 5
HSPI GPIO 13 GPIO 12 GPIO 14 GPIO 15

 

UART

В зависимости от модели платы ESP32, она поддерживает до трех интерфейсов UART: UART0 , UART1 и UART2 .

  • Интерфейс UART0 обычно используется для связи с последовательным монитором во время загрузки и отладки кода. Однако, если последовательный монитор не требуется, его можно использовать и для связи с другими устройствами после загрузки кода.
  • UART1 и UART2 : доступны для связи с внешними устройствами.

Подобно I2C и SPI, эти контакты UART можно сопоставить с любым контактом GPIO на ESP32. Однако на большинстве моделей плат они имеют назначение по умолчанию.

Для большинства плат ESP32 назначение контактов UART следующее:

Порт UART TX РКС Примечания
UART0 GPIO 1 GPIO 3 Используется для мониторинга последовательного порта и загрузки кода; может быть назначен другим выводам GPIO;
UART1 GPIO 10 GPIO 9 Необходимо назначить другим выводам GPIO.
UART2 GPIO 17 GPIO 16 Может быть назначен другим выводам GPIO.

Что касается UART1 (GPIO 9 и GPIO 10) — эти выводы GPIO подключены к SPI-флэш-памяти ESP32, поэтому вы не можете использовать их напрямую. Для связи с другими устройствами через UART1 необходимо определить другие выводы с помощью соответствующего параметра.

Комментарии