Локальные GPIO (обновлено: 20 Feb 2022, 21:22:42)

Эта документация относится к работе с локальными 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 командой, из планировщика заданий, логики, конструктора кода.  

Читать этот GPIO можно из Logic и из конструктора кода.

Суть опции - обмен состояния между модулями прошивки.