Esp 01 сколько свободных gpio
![]()
Вы здесь: Home
Железо
Без проводов (WI-FI)
Работа с GPIO (VGPIO) на ESP8266
ESP8266 имеет 15 полноценных GPIO выходов. 6 из которых заняты микросхемой flash памяти. При этом GPIO 0,1,2,3,15 имеют системные функции и имеют ограничения при использовании — не рекомендуется их использовать для сухого контакта, кнопок, прерываний (хотя в некоторых случаях работать будет). Для штатной работы модуля ESP8266 GPIO 0 и 2 не должны быть подтянуты к минусу при старте модуля. GPIO 15 для старта должен подтянут к минусу через резистор 10кОм. GPIO 1 соотвествует вывод TXD. GPIO 3 — RXD.
Так же ESP8266 имеет отдельный GPIO16 , который управляется через RTC регистры, этот GPIO имеет ограничения при использовании и в прошивке используется только для режима OUTPUT (выход). Подключение датчиков к этому выводу невозможно. GPIO16 используется для пробуждения модуля при использовании спящего режима, если подключить его к выводу RESET.
Карта GPIO модуля
| GPIO | Описание |
| 0-5,12-16 | GPIO самого модуля. |
| 6-11 | GPIO заняты под flash память. |
| 20-79 | VGPIO удаленных ESP8266 (только управление) |
| 80-199 | Зарезервирировано. Может быть расширено для VGPIO |
| 200-215 | Ремап MCP23017 |
| 220-227 | Ремап PCF8574 |
| 230-245 | Ремап 74HC595 |
Настройка GPIO
На вкладке GPIO можно установить назначение выводов: Можно выбрать как INPUT (для сухого контакта) так и OUTPUT, INVERT OUTPUT (для реле, управляемые по минусу). Состояние INPUT у GPIO можно отследить на страничке http://IP_ADRESS/gpioprintinput , в MQTT, а так же на серверах narodmon, flymon.net, MajorDoMo. Аналогично можно посмотреть состояние GPIO и для режима OUTPUT на вкладке http://IP_ADRESS/gpioprint .
Управлять состоянием gpio можно командой вида http://IP_ADRES/gpio?st=1&pin=12 — этим Вы установите на 12 GPIO логическую единицу. При установке st=2 будет проихсодить инвертирование GPIO. Если дописать к команде &flash=1 ,то настройка запишется в энергонезависимую память. &click=10 — инвертирует состояние через указанный промежуток времени в секундах. Например http://IP_ADRES/gpio?st=1&pin=5&click=10 включит GPIO 5 на 10 секунд.
GET запросы на данные адреса модуля требует ввод логина/пароля, если включена опция «Full Security».
При подключении устройств, датчиков на данной вкладке настройка этих GPIO не требуется.
Обратите внимание, что на некоторых китайских модулях GPIO 5 и 4 могут быть перепутаны.
Настройка VGPIO
При установке данного модуля на вкладке VGPIO можно настроить назначение GPIO, расположенных на других ESP8266 находящихся в данной локальной сети. Необходимо указать последнюю цифру IP адреса. Например локальный номер GPIO 21 будет соотвествовать удаленному GPIO 1 находящийся на модуле с IP адресом 192.168.1.154 на (см.скриншот).
Управление данными VGPIO поддерживается из модуля планировщика заданий, термостата, логического модуля, IR управления, а так же у функции KEY(прерывания). Назначить VGPIO для подключения датчиков и устройств невозможно.
В данный момент для работы VGPIO на удаленных модулях функция Full Security должна быть отключена (но в планах добавить её поддержку)
Remap( переназначение GPIO) c MCP23017, PCF8574 и 74HC595.
Для удобства управления из функций прошивки было добавлено переназначение(ремап) GPIO находящихся на микросхемах-расширителях портов MCP23017, PCF8574 и 74HC595. Возможности и ограничения аналогичны VGPIO.
Использование расширителей портов
Прошивка поддерживает микросхемы PCF8574(8 GPIO) , MCP23017(16 GPIO) и 74HC595 (до 16 GPIO).
Микрохсема PCF8574 по умолчанию должна иметь i2c адрес 0x20 (возможно включение изменения адреса в конструкторе прошивки по запросу). Возможно управление/чтение через MQTT.
Микросхема MCP23017 по умолчанию должна иметь i2c адрес 0x20 (A0,A1,A2 на GND). Настройка режима input/output настраивается на соотвествующей веб вкладке. Возможно управление/чтение через MQTT.
Микросхема 74HC595 — сдвиговый регистр на 8 дополнительных выходов. Занимает 3 выхода ESP8266: GPIO 14 -pin 14 (DS) у 75HC595, GPIO 12 -pin 12 (ST_CP) у 75HC595, GPIO 13 — pin 11 (SH_CP) у 75HC595, MR(10) на +V, OE(13) на GND. Микросхемы возможно подключенить каскадом две штуки , получив 16 выводов. Возможно управление/чтение через MQTT.
Управление микросхемами осуществляется через remap внутри модуля — смотрите таблицу выше.
В данный момент сохранение состояния GPIO во flash не реализовано, но это в планах.
Работа с прерываниями
Прошивка поддерживает 3 режима работы с прерываниями:
Counter — подсчет импульсов с счетчиков воды, газа, электричества. Данные отправляются на все сервера. При установке модуля «Сбрасываемый счетчик» отправляются данные импульсов за каждый период отправки данных. В поле «Impulse divider» возможна установка делителя.
Active send — Немедленная отправка факта изменения состояния прерывания на сервера. Может использоватся для датчиков движения или датчиков открытия/вскрытия двери.
Key — Управление GPIO по нажатию кнопки. Включение/ выключение GPIO , указанного в поле «GPIO For Key». Изменение состояния GPIO отправляется на сервера.
Time Key — Включение установленного GPIO на заданный промежуток времени, например по прерыванию с датчика движения. Функция доступна только на первом прерывании.
Прерывание может настраивается в пункте Mode. Оно может происходить при отрицательном импульсе (Neg) , при положительном (Pos) или при любом (Any). Например при замыкании входа прерывания на GND необходимо выбрать режим Neg.
В данный момент доступен новый модуль прерываний в конструкторе прошивки, который поддерживает до 4 счетчиков или кнопок. Старый модуль упразнен 11.10.15.
Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.
Справочник по распиновке 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 — только входные. Эти контакты не имеют внутренних подтягивающих или понижающих резисторов. Они не могут быть использованы как выходы, поэтому используйте эти контакты только как входы:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
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 работают не линейно. Об этом следует помнить при использовании выводов АЦП. Ниже представлен график получемых значений в зависимости от напряжения:
Esp 01 сколько свободных gpio
Эта документация относится к работе с локальными GPIO на модулях ESP8266 и ESP32.
Опция необходима для настройки GPIO для режимов вход или выход — подключение реле или других коммутирующих устройств, а так же «сухих» контактов. Для подключения цифровых датчиков или устройств опция не применяется.
Для работы общим принципом работы с GPIO рекомендуется прочитать статью
Для работы с GPIO в системах Linux имеется отдельная статья.
Описание GPIO на ESP8266
ESP8266 имеет 15 полноценных GPIO выходов, 6 из которых заняты микросхемой flash памяти.
При этом GPIO 0,1,2,3,15 имеют системные функции и имеют ограничения при использовании — не рекомендуется их использовать для сухого контакта, кнопок, прерываний (хотя в некоторых случаях работать будет).
Для штатной работы модуля ESP8266 GPIO 0 и 2 не должны быть подтянуты к минусу, а 1 к плюсу при старте модуля.
GPIO 15 для старта должен быть подтянут к минусу через резистор 10 кОм. GPIO 1 — TX. GPIO 3 — RXD.
GPIO 16 на ESP8266 используется только для режима OUTPUT (выход). Подключение датчиков и других устройств к этому выводу невозможно.
Описание GPIO на ESP32
ESP32 Имеет больше GPIO. Номера выше 33 невозможно настроить на выход. GPIO 0 при GND переключает модуль в режим прошивки. GPIO12 нельзя подтягивать к GND. Подробнее в документации.




Настройка встроенных GPIO

На вкладке GPIO можно установить назначение выводов: Можно выбрать как INPUT или INPUT EVENT (для сухого контакта) так и OUTPUT, INVERT OUTPUT (для реле, управляемые по минусу). Состояние INPUT и INPUT EVENT у GPIO можно отследить на страничке http://[ip адрес]/gpioprintinput , в MQTT, а так же на серверах narodmon, MajorDoMo. Аналогично можно посмотреть состояние GPIO и для режима OUTPUT на вкладке http://[ip адрес]/gpioprint .
Режим INPUT EVENT (добавлен 22.11.2020) , кроме настройки вывода на вход позволяет отправлять немедленно измененное состояние данного GPIO на сервера.
Управлять состоянием gpio можно командой вида http://[ip адрес]/gpio?st=1&pin=12 — этим Вы установите на GPIO12 логическую 1. При установке &st=2 будет происходить инвертирование GPIO. Если дописать к команде &flash=1 ,то настройка запишется в энергонезависимую память. &click=10 — инвертирует состояние через 2 секунды. Например http://[ip адрес]/gpio?st=1&pin=5&click=10 включит GPIO5 на 10 секунд. &mclick — аналогично в миллисекундах.
GET запросы на данные адреса модуля требует ввод логина/пароля, если включена опция «Full Security«.
При подключении устройств, датчиков на данной вкладке настройка этих GPIO не требуется.
Обратите внимание, что на некоторых китайских модулях GPIO 4 и 5 могут быть перепутаны.
Сохранение состояния GPIO в энергонезависимую память
Кроме опции &flash=1 в GET запросе доступно сохранение состояния GPIO на постоянной основе из всех функций модуля через настройку на вкладке GPIO. Для этого необходимо выбрать соответствующий GPIO, указать его режим и установить опцию flash, рядом в списке с GPIO появится метка F.
Крайне не рекомендуется включать режим flash для GPIO используемых для активных изменений состояния например в термостате или опции logic во избежания быстрого износа flash памяти модуля.
Установочный GPIO
GPIO 6 реализован как установочный , его состояние можно установить стандартно GET командой, из планировщика заданий, логики, конструктора кода.