GPIO (updated: 27 Apr 2017, 12:51:59)

Поддержка GPIO. Чтение GPIO и управление реле. Управлять можно gpio командой вида http://IP_ADRES/gpio?st=1&pin=12 - этим Вы установите на 12 GPIO логическую единицу. Дополнительные команды: &flash=1 - настройка запишется в энергонезависимую память. &click=10 - инвертирует состояние через указанный промежуток времени в секундах. Просмотреть состояние GPIO можно по адресу http://IP_ADRESS/gpioprint . Режим чтения состояния gpio можно включить выбрав режим input. При этом состояние gpio можно будет мониторить в сервисах narodmon, flymon.net, MajorDoMo а так же на страничке http://IP_ADRESS/gpioprintinput. Если отправить http://IP_ADRES/gpio?st=2&pin=12 - этим Вы смените на 12 GPIO состояние с нуля на единицу или наоборот. 


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-16GPIO самого модуля.
6GPIO занят под flash память, но используется как установочный .
7-11GPIO заняты под flash память.
20-119VGPIO удаленных ESP8266 (только управление)
120-135Управление силовыми модулями NooLite
140-149Remap gpio RCswitch 433/315
180-187MPR121.
188Вывод на матрицы первой строки конструктора строк.
189Событие исходящего звонка у GSM модуля.
190-193Произношение фраз и времени через MP3 UART.
194-197Управление Stepper
198Вызывает событие старта бегущей строки LED дисплеев
199Управление подсветкой дисплеев LCD и OLED
200-215Ремап MCP23017
220-227Ремап PCF8574 
230-245Ремап 74HC595


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

На вкладке GPIO можно установить назначение выводов: Можно выбрать как INPUT (для сухого контакта) так и OUTPUT, INVERT OUTPUT (для реле, управляемые по минусу). Состояние INPUT у GPIO можно отследить на страничке http://[ip адрес]/gpioprintinput , в MQTT, а так же на серверах narodmon, flymon.net, MajorDoMo. Аналогично можно посмотреть состояние GPIO и для режима OUTPUT на вкладке http://[ip адрес]/gpioprint .

Управлять состоянием gpio можно командой вида http://[ip адрес]/gpio?st=1&pin=12 - этим Вы установите на 12 GPIO логическую единицу. При установке st=2 будет происходить инвертирование GPIO. Если дописать к команде &flash=1 ,то настройка запишется в энергонезависимую память. &click=10 - инвертирует состояние через указанный промежуток времени в секундах. Например http://[ip адрес]/gpio?st=1&pin=5&click=10 включит GPIO 5 на 10 секунд.

GET запросы на данные адреса модуля требует ввод логина/пароля, если включена опция "Full Security".

При подключении устройств, датчиков на данной вкладке настройка этих GPIO не требуется.

Обратите внимание, что на некоторых китайских модулях GPIO 5 и 4 могут быть перепутаны.

Сохранение состояния GPIO в энергонезависимую память

Кроме опции &flash=1 в GET запросе доступно сохранение состояния GPIO на постоянной основе из всех функций модуля через настройку на вкладке GPIO ( опция доступна с 13.10.16). Для этого необходимо выбрать соответствующий GPIO , указать его режим и установить опцию flash, рядом в списке с GPIO появится метка F

Крайне не рекомендуется включать режим flash для GPIO используемых для активных изменений состояния например в термостате или опции logic во избежания быстрого износа flash памяти модуля.

Настройка 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 не реализовано, но это в планах.


Установочный GPIO

GPIO 6 реализован как установочный , его состояние можно установить стандартно GET командой, из планировщика заданий, логики, конструктора кода.  

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

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