Справочник по распиновке ESP32: Какие выводы GPIO следует использовать?
Чип ESP32 поставляется с 48 контактами с разными функциями. Не все пины ESP32 доступны для использования.
Есть много вопросов о том, как использовать ESP32 GPIO. Какие контакты необходимо использовать? Какие выводы лучше избегать в своих проектах? Этот пост призван стать простым и понятным справочным руководством для ESP32 GPIO.
На рисунке ниже показана распиновка ESP-WROOM-32:


Периферийные устройства ESP32
К периферийным устройствам ESP32 относятся:
- 18 Каналов аналого-цифрового преобразователя (АЦП )
- 3 Интерфейса SPI3
- Интерфейс UART2
- Интерфейс I2C16
- Выходные каналы ШИМ
- 2 Цифро-аналоговых преобразователя (ЦАП)
- 2 Интерфейса I2S10
- Емкостные считывающие GPIO
Функции АЦП (аналого-цифровой преобразователь) и ЦАП (цифро-аналоговый преобразователь) назначены строго определённым пинам. Тем не менее, вы сами решаете, какие контакты будут отведены под интерфейсы UART, I2C, SPI, PWM и т. д. — они определяются в коде прошивки. Это возможно благодаря функции мультиплексирования чипа ESP32.
Существуют пины, назначенные по умолчанию, как показано на следующем рисунке (это пример платы ESP32 DEVKIT V1 DOIT с 36 контактами — расположение контактов может меняться в зависимости от производителя). Вы можете их переопределять.

Кроме того, есть контакты с определенными функциями, которые делают их подходящими или не подходящими для конкретного проекта. В следующей таблице показано, какие выводы лучше всего использовать в качестве входов, выходов, а с какими следует соблюдать осторожность.
Контакты, с «ОК», подходят для использования. Пины без «ОК», подходят для использования, но вы должны обратить на них внимание, потому что они могут иметь неожиданное поведение, в основном при загрузке.
| GPIO | Input | Output | Notes |
| 0 | pulled up | OK | outputs PWM signal at boot |
| 1 | TX pin | OK | debug output at boot |
| 2 | OK | OK | connected to on-board LED |
| 3 | OK | RX pin | HIGH at boot |
| 4 | OK | OK | |
| 5 | OK | OK | outputs PWM signal at boot |
| 6 | x | x | connected to the integrated SPI flash |
| 7 | x | x | connected to the integrated SPI flash |
| 8 | x | x | connected to the integrated SPI flash |
| 9 | x | x | connected to the integrated SPI flash |
| 10 | x | x | connected to the integrated SPI flash |
| 11 | x | x | connected to the integrated SPI flash |
| 12 | OK | OK | boot fail if pulled high |
| 13 | OK | OK | |
| 14 | OK | OK | outputs PWM signal at boot |
| 15 | OK | OK | outputs PWM signal at boot |
| 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 | input only | |
| 35 | OK | input only | |
| 36 | OK | input only | |
| 39 | OK | input only |
Пины только для входа
GPIO с 34 по 39 являются GPI — только входные. Эти контакты не имеют внутренних подтягивающих или понижающих резисторов. Они не могут быть использованы как выходы, поэтому используйте эти контакты только как входы:
SPI-flash встроена в ESP-WROOM-32
От GPIO 6 до GPIO 11 представлены в некоторых платах ESP32. Однако эти пины подключены к встроенной флэш-памяти 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 x 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_12 GPO (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 работают не линейно. Об этом следует помнить при использовании выводов АЦП. Ниже представлен график получемых значений в зависимости от напряжения:
WIFi модуль Esp8266 ESP-07
Модуль WiFi в типоразмере ESP-07 имеет на борту керамическую антенну c возможностью подключить внешнюю антенну (пигтейл для подключения антенны можно купить у нас в магазине), небольшой стандартный размер, все порты gpio выведены, плата спроектирована для установки на dip-панельку.

WIFi модуль Esp8266 ESP-07
Данный модули разработаны китайской компанией Espressif System
Всего разновидностей Модулей ESP8266 на сегодня двенадцать:
ESP-01, ESP-02, ESP-03, ESP-04, ESP-05, ESP-06, ESP-07, ESP-08, ESP-09, ESP-10, ESP-11, ESP-12
Краткие характеристики модели ESP-07
- WI-FI: 802.11 b/g/n с WEP, WPA, WPA2.
- Режимы работы: Клиент (STA), Точка доступа (AP), Клиент+Точка доступа (STA+AP).
- Напряжение питания 1.7..3.6 В.
- Потребляемый ток: до 215мА в зависимости от режима работы.
- Количество свободных GPIO: 8.
- шаг дырочек для пайки : 2мм
- Flash память размером 512кб.
- RAM данных 80 кб
- RAM инструкций — 32 кб.
Подключение
Для этого нужно подать на него 3.3В. Причем стабилизаторы у преобразователей USB/UART не тянут данный модуль по току, поэтому необходим источник питания как минимум на 200мА.
Далее нужно посадить GPIO15 на землю, а CH_PD и GPIO0 подтянуть к VCC через резистор. В некоторых источниках еще указывается, что нужно подтянуть к VCC и GPIO2, но работает и без этого.
RXD, TXD и GND подсоединяются через переходник USB/UART к компьютеру.
В результатеполучается такая схема

Обратите внимание что шаг дырочек у ESP07 — 2мм, а не 2.5 как у штырьковых разъемов, применяемых в Ардуино и прочих местах.
Грязный хак модуля ESP8266 ESP-01 — дополнительно 4 GPIO

Наш буржуинский коллега Dave Allan попробовал вытащить неразведенные GPIO из ESP-01 и у него это получилось. Требуются прямые руки, орлиный глаз и высокий скилл пайки. Дополнительно вы получаете 4 GPIO: GPIO14, GPIO12, GPIO13 и GPIO15. Аккуратно выпаиваете 4 двухрядных пина из модуля и заменяете их на 7 двухрядных, предварительно удалив пятую пару пинов. Далее самое сложное — припаиваете провода к выводам 9, 10, 12, 13 чипа ESP8266EX. Как бонус вы получаете возможность подключить разъем IDC-14.
По материалам блога Peter Scargill
Рубрики
- ESP8266 Espressif SDK, AT прошивки
- ESP8266 для начинающих
- ESP8266 и Arduino IDE
- ESP8266 и железные вопросы
- ESPlorer
- IoT Manager
- MicroPython
- NodeMCU
- SmartJS
- Все о ESP8266
- Новости
Справочная информация
- ESP8266 AT команды v0.19
- ESP8266 AT команды v0.20
- ESP8266 AT команды v0.21
- ESP8266 AT команды v0.22
- ESP8266 GPIO — описание регистров
- ESP8266 Pins list function, register, strapping
- ESP8266 UART REG
- ESPlorer
- ESPRESSIF System released ESP IoT SDK v1.3.0 with AT v0.40 — Aug 8 2015
- IoT Manager
- Купить ESP8266
Расширитель GPIO PCA9535 c QIIC
GPIO — это набор входов/выходов общего назначения, с помощью которых микроконтроллер может управлять внешними устройствами и принимать от них сигналы. В одном из первых уроков мы подключали к Ардуино светодиод, и делали это как раз при помощи GPIO.
Ардуино Уно и её более мелкие собратья имеют 20 штук GPIO контактов, которых хватает для большинства DIY проектов. У версии Mega и того больше — 54. А вот у популярной WiFi платы ESP8266, особенно у версии 01S — свободных контактов крайне мало — их вообще всего 4. Как же быть, если нам не хватает контактов для подключения нужной периферии?
Есть разные способы, которые зависят от особенностей подключаемых устройств. Например, можно применить микросхему дешифратора или сдвиговые регистры. Можно даже соединить вместе несколько микроконтроллерных плат по одноранговой схеме или по схеме ведущий-ведомый, чтобы получить любое количество доступных контактов.
А ещё для увеличения GPIO существуют специальные микросхемы. На этом уроке мы будет работать с модулем расширения GPIO от RobotClass как раз на одной из таких микросхем — PCA9535.

Модуль умеет работать как с напряжением 3,3 Вольт, так и 5 Вольт. Так что его можно использовать в связке с разного рода платами Ардуино, а также с stm32, esp8266, esp32 и другими микроконтроллерами.
В качестве примера, увеличим число GPIO контактов у самой обычной платы Ардуино Уно. Попробуем применить модуль PCA9535 и для передачи сигнала (OUTPUT), и для чтения (INPUT).
Список необходимых компонентов
Все необходимые для урока компоненты можно приобрести у нас в магазине: