Главная  /  Программа «Smacont-ESP»  /  ESP8266. Порты ввода-вывода (GPIO)

ESP8266. Порты ввода-вывода (GPIO)


Содержание

Общие данные
Функциональные выводы
Порты ввода-вывода (GPIO)
Состояние выводов GPIO для штатного запуска устройства
Состояние выводов GPIO для программирования устройства
GPIO0   GPIO1   GPIO2   GPIO3
GPIO4   GPIO5
GPIO10
GPIO12   GPIO13   GPIO14
GPIO15   GPIO16
A0
Действие «gpio_Impulse()»



Общие данные

Wi-Fi модули, на чипах ESP8266, выпускаются в различных форм-факторов (серии от ESP-01 по ESP-14) и имеют разное количество выводов.

По своему значению, выводы модулей делятся на функциональные и на порты ввода-вывода (GPIO (General Purpose Input Output) — порты ввода-вывода общего назначения).



Функциональные выводы

«Vcc», «Gnd» - выводы для подачи напряжения питания

По документации на микроконтроллер ESP8266, указан допустимый диапазон питающего напряжения 3,0...3.6 В. Фактически, чип работает в более широком диапазоне напряжения питания 2,0...3.6 В, что позволяет запитывать его от автономных источников питания - батарей, ионисторов и аккумуляторов.

На некоторых выпускаемых модулях установлен линейный стабилизатор напряжения, понижающий входное напряжение (5...7 В) до напряжения 3,3 В.

«RST» - сброс

В рабочем состоянии должен быть подтянут к «Vcc» через токоограничивающий резистор номиналом 10...100 кОм. Сброс микроконтроллера осуществляется путем замыкания вывода «RST» на «Gnd».

Практически на всех модулях, вывод «RST» подтянут к «Vcc» через резистор 10...12 кОм.

«CHIP_EN» - разрешение работы микроконтроллера

В рабочем состоянии должен быть подтянут к «Vcc» через токоограничивающий резистор номиналом 10...100 кОм.

Практически на всех модулях, вывод «CHIP_EN» подтянут к «Vcc» через резистор 10...12 кОм.



Порты ввода-вывода (GPIO)

Порты ввода-вывода имеют обозначение GPIO0...GPIO16. Некоторые модули, в зависимости от производителя, имеют свою нумерацию выводов, которая отличается от обозначения чипа ESP8266.

Прошивка «Smacont-ESP» позволяет использовать следующие порты ввода-вывода: GPIO0...GPIO5, GPIO10, GPIO12...GPIO16.

Максимальная допустимая нагрузка по току на каждый порт: 12мА.
Рекомендуемое значение: 6мА.

Все основные параметры выводов GPIO устанавливаются при помощи действий «gpioN_SetParam()».


Smacont-ESP. Действие «gpioN_SetParam()»

Действие «gpioN_SetParam()»

При включении устройства, действие «gpioN_SetParam()» выполняется автоматически (Autorun).
При изменении параметров, необходимо, либо выполнить действие вручную (путем нажатия иконки ), либо перезагрузить устройство.
При удалении действия, необходимо выполнить перезагрузку устройства.
При необходимости, допускается вызывать действие в сценариях.

После инициализации модуля (при перезагрузке устройства), выводы GPIO, которые не прописаны в действии «gpioN_SetParam()», конфигурируются как ВХОД.

На вкладке «GPIO» можно ТОЛЬКО контролировать параметры выводов GPIO после инициализации (выполнения действий «gpioN_SetParam()»).


Smacont-ESP. Вкладка «GPIO»

Вкладка «GPIO»





Состояние выводов GPIO для штатного запуска устройства

GPIO0 - HIGH
GPIO1 - HIGH
GPIO2 - HIGH
GPIO15 - LOW

На просторах Интернета можно встретить такое изображение (источник неизвестен), где указаны допустимые уровни напряжения и состояние выводов GPIO при перезагрузке.


Smacont-ESP. ESP8266. Допустимые уровни напряжения и состояние выводов GPIO

ESP8266. Допустимые уровни напряжения и состояние выводов GPIO

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

Чтобы предотвратить кратковременное включение нагрузки во время старта ESP8266, нужно добавить RC фильтр с постоянной времени длинее, чем время появления логической единицы на выводе GPIO (см. рис. ниже).


Smacont-ESP. ESP8266. RC фильтр

GPIO. RC фильтр

Следует учитывать, что использование RC фильтра будет вносить задержку при включение нагрузки, равную постоянной времени RC цепочки.




Состояние выводов GPIO для программирования устройства

GPIO0 - LOW
GPIO1 - HIGH
GPIO2 - HIGH
GPIO15 - LOW


Smacont-ESP. ESP8266. ESP8266. Программирование модуля

ESP8266. Программирование модуля





GPIO0

1. Для запуска модуля в режиме нормальной работы необходимо, чтобы при подаче напряжения питания на модуль, вывод GPIO0 был подтянут к +U источника питания.

2. Для перевода модуля в режим программирования необходимо, чтобы при подаче напряжения питания на модуль, вывод GPIO0 был подтянут к GND источника питания.

3. При использовании GPIO0 как "INPUT": в момент подачи напряжения питания на модуль или в момент перезагрузки модуля, необходимо исключить уровень логического нуля.

4. При использовании GPIO0 как "OUTPUT": при подаче напряжения питания на модуль, на выходе будет установлен уровень логической единицы на время инициализации модуля.

5. Если на плате нет встроенного подтягивающего резистора на +Uпит, необходимо использовать внешний подтягивающий резистор (10кОм...33кОм).



GPIO1

1. Для запуска модуля необходимо, чтобы при подаче напряжения питания на модуль, вывод GPIO1 был подтянут к GND источника питания.

2. При подаче напряжения питания на модуль, GPIO1 автоматически конфигурируется как "UART0 TX (MOSI)" (производится передача информации о модуле, со скоростью 74480бод).

3. При подаче напряжения питания на модуль, на GPIO1 будут подаваться пачки импульсов на время передачи информации о модуле. В этом случае необходимо отслеживать, чтобы GPIO1 не был замкнут на общий вывод источника питания, т.к. возможен выход модуля из строя.



GPIO2

1. Для запуска модуля в режиме нормальной работы необходимо, чтобы при подаче напряжения питания на модуль, вывод GPIO2 был подтянут к +U источника питания.

2. При использовании GPIO2 как "INPUT": в момент подачи напряжения питания на модуль или в момент перезагрузки модуля, необходимо исключить уровень логического нуля.

3. При использовании GPIO2 как "OUTPUT": при подаче напряжения питания на модуль, на выходе будет установлен уровень логической единицы на время инициализации модуля.

4. Если на плате нет встроенного подтягивающего резистора на +Uпит, необходимо использовать внешний подтягивающий резистор (10кОм...33кОм).



GPIO3

1. При использовании GPIO3 как "OUTPUT": при подаче напряжения питания на модуль, на выходе будет установлен уровень логической единицы на время инициализации модуля.



GPIO4, GPIO5

Нет ограничений при использовании выводов GPIO.



GPIO10

1. Для GPIO10, сконфигурированного как "INPUT", всегда включена подтяжка к уровню логической единицы.

2. При подаче напряжения питания на модуль, на GPIO10 подается уровень логической единицы на время инициализации модуля. В этом случае необходимо отслеживать, чтобы GPIO10 не был замкнут на общий вывод источника питания, т.к. в возможен выход модуля из строя.



GPIO12, GPIO13, GPIO14

Нет ограничений при использовании выводов GPIO.



GPIO15

1. Для штатной работы модуля, GPIO15 не должен быть подтянут к +Uпит модуля, при подаче напряжения питания на модуль.

2. При использовании GPIO15 как "INPUT", необходимо исключить уровень логической единицы, при подаче напряжения питания на модуль.

3. Если на плате нет встроенного подтягивающего резистора на общий источника питания, необходимо использовать внешний подтягивающий резистор (10кОм...33кОм).

4. GPIO15 не допускается для подключения "1-WIRE" и "I2C" устройств, т.к. в этом случае применяется подтяжка к +Uпит.



GPIO16

1. При использовании GPIO16 как "INPUT": в момент подачи напряжения питания на модуль или в момент перезагрузки модуля, необходимо исключить уровень логического нуля.

2. При использовании GPIO16 как "OUTPUT": при подаче напряжения питания на модуль, на выходе будет установлен уровень логической единицы на время инициализации модул.



A0

Допустимое напряжение, подаваемое напрямую на АЦП чипа esp8266, составляет 0...1,0 В. На некоторых модулях (NodeMCU, Wemos Mini) установлен делитель напряжения, который расширяет диапазон до значений 0...3,3 В.

Разрешение АЦП составляет 10 бит (0...1023 отсчетов, значение 1024 сигнализирует о превышении допустимого напряжения 1,0 В).

По умолчанию, период опроса установлен в значение «0», что полностью запрещает работу АЦП (экономит процессорное время).

При работе под управлением прошивки, с обозначением «vX.XXu»:
1. Вход A0 должен быть «свободным».
2. Для получения «напряжения системы» используется действие «adc0_GetVcc()».



Действие «gpio_Impulse()»

Данное действие применяется для организации коротких (от 20мкс до 100мкс) импульсов на выходе GPIO, например, для запуска «триггера» ультразвукового датчика.


Smacont. Действие «gpio_Impulse()»     Smacont. Действие «gpio_Impulse()»

Действие «gpio_Impulse()»

При завершении выдержки времени, события не генерируются.

Примечания
1. Точность выдержки временных интервалов в диапазоне «20…100 мкс» составляет +-3мкс.
2. Только для GPIO, сконфигурированных как «выход».
3. Если GPIO привязан к переменной «Vx», то значение переменной «Vx» обновляться не будет.



Программы

Прошивка «Smacont-ESP»:
скачать

«Программа Настройки»:
запусить (только браузер Firefox)
скачать zip-архив

Телеграм канал

Новости

Энергонезависимая память (EEPROM)

Переменные «Vx» (карта переменных «Vx»)

WEB-интерфейс

Действие «wifi_CheckConn()». После подключения к WiFi-сети, выполнить действие с задержкой

Обмен данными. Open Monitoring

Датчики температуры и влажности AHT10/AHT15/AHT20/AHT21/AHT25

Датчик температуры и влажности SHT30 (SHT31/SHT35)

Действие «valueToVx()», «valueToArrVx()». Отслеживание заданного уровня в диапазоне значений

Действие «termostat()». Термостат

ESP-NOW. Датчик температуры и влажности с питанием от батареек

Последовательные интерфейсы (UART, I2C, SPI)

Управление одноканальным модулем реле

Протокол MQTT

Обмен данными. NarodMon

Обмен данными. ioControl



Программы для модулей ESP     Программы     Применения     Справочник         Контакты     SMACONT. Напишите нам smacont@ya.ru