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.