ESP8266. Порты ввода-вывода (GPIO) |
Содержание
Общие данные
Общие данные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мА.
Все основные параметры выводов GPIO устанавливаются при помощи действий «gpioN_SetParam()». Действие «gpioN_SetParam()»
При включении устройства, действие «gpioN_SetParam()» выполняется автоматически (Autorun).
После инициализации модуля (при перезагрузке устройства), выводы GPIO, которые не прописаны в действии «gpioN_SetParam()», конфигурируются как ВХОД. На вкладке «GPIO» можно ТОЛЬКО контролировать параметры выводов GPIO после инициализации (выполнения действий «gpioN_SetParam()»). Вкладка «GPIO» Состояние выводов GPIO для штатного запуска устройства
GPIO0 - HIGH
На просторах Интернета можно встретить такое изображение (источник неизвестен), где указаны допустимые уровни напряжения и состояние выводов GPIO при перезагрузке. ESP8266. Допустимые уровни напряжения и состояние выводов GPIO Как видно из таблицы выше, некоторые выводы GPIO при перезагрузке устанавливаются в состояние логической единицы, что может привести, например, к кратковременному включению реле или другой нагрузки. Чтобы предотвратить кратковременное включение нагрузки во время старта ESP8266, нужно добавить RC фильтр с постоянной времени длинее, чем время появления логической единицы на выводе GPIO (см. рис. ниже). GPIO. RC фильтр Следует учитывать, что использование RC фильтра будет вносить задержку при включение нагрузки, равную постоянной времени RC цепочки. Состояние выводов GPIO для программирования устройства
GPIO0 - LOW
ESP8266. Программирование модуля GPIO01. Для запуска модуля в режиме нормальной работы необходимо, чтобы при подаче напряжения питания на модуль, вывод GPIO0 был подтянут к +U источника питания. 2. Для перевода модуля в режим программирования необходимо, чтобы при подаче напряжения питания на модуль, вывод GPIO0 был подтянут к GND источника питания. 3. При использовании GPIO0 как "INPUT": в момент подачи напряжения питания на модуль или в момент перезагрузки модуля, необходимо исключить уровень логического нуля. 4. При использовании GPIO0 как "OUTPUT": при подаче напряжения питания на модуль, на выходе будет установлен уровень логической единицы на время инициализации модуля. 5. Если на плате нет встроенного подтягивающего резистора на +Uпит, необходимо использовать внешний подтягивающий резистор (10кОм...33кОм). GPIO11. Для запуска модуля необходимо, чтобы при подаче напряжения питания на модуль, вывод GPIO1 был подтянут к GND источника питания. 2. При подаче напряжения питания на модуль, GPIO1 автоматически конфигурируется как "UART0 TX (MOSI)" (производится передача информации о модуле, со скоростью 74480бод). 3. При подаче напряжения питания на модуль, на GPIO1 будут подаваться пачки импульсов на время передачи информации о модуле. В этом случае необходимо отслеживать, чтобы GPIO1 не был замкнут на общий вывод источника питания, т.к. возможен выход модуля из строя. GPIO21. Для запуска модуля в режиме нормальной работы необходимо, чтобы при подаче напряжения питания на модуль, вывод GPIO2 был подтянут к +U источника питания. 2. При использовании GPIO2 как "INPUT": в момент подачи напряжения питания на модуль или в момент перезагрузки модуля, необходимо исключить уровень логического нуля. 3. При использовании GPIO2 как "OUTPUT": при подаче напряжения питания на модуль, на выходе будет установлен уровень логической единицы на время инициализации модуля. 4. Если на плате нет встроенного подтягивающего резистора на +Uпит, необходимо использовать внешний подтягивающий резистор (10кОм...33кОм). GPIO31. При использовании GPIO3 как "OUTPUT": при подаче напряжения питания на модуль, на выходе будет установлен уровень логической единицы на время инициализации модуля. GPIO4, GPIO5Нет ограничений при использовании выводов GPIO. GPIO101. Для GPIO10, сконфигурированного как "INPUT", всегда включена подтяжка к уровню логической единицы. 2. При подаче напряжения питания на модуль, на GPIO10 подается уровень логической единицы на время инициализации модуля. В этом случае необходимо отслеживать, чтобы GPIO10 не был замкнут на общий вывод источника питания, т.к. в возможен выход модуля из строя. GPIO12, GPIO13, GPIO14Нет ограничений при использовании выводов GPIO. GPIO151. Для штатной работы модуля, GPIO15 не должен быть подтянут к +Uпит модуля, при подаче напряжения питания на модуль. 2. При использовании GPIO15 как "INPUT", необходимо исключить уровень логической единицы, при подаче напряжения питания на модуль. 3. Если на плате нет встроенного подтягивающего резистора на общий источника питания, необходимо использовать внешний подтягивающий резистор (10кОм...33кОм). 4. GPIO15 не допускается для подключения "1-WIRE" и "I2C" устройств, т.к. в этом случае применяется подтяжка к +Uпит. GPIO161. При использовании 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»:
Действие «gpio_Impulse()»Данное действие применяется для организации коротких (от 20мкс до 100мкс) импульсов на выходе GPIO, например, для запуска «триггера» ультразвукового датчика. Действие «gpio_Impulse()» При завершении выдержки времени, события не генерируются.
Примечания
|
Программы
Прошивка «Smacont-ESP»:
«Программа Настройки»:
Телеграм каналНовостиЭнергонезависимая память (EEPROM) Переменные «Vx» (карта переменных «Vx») Действие «wifi_CheckConn()». После подключения к WiFi-сети, выполнить действие с задержкой Обмен данными. Open Monitoring Датчики температуры и влажности AHT10/AHT15/AHT20/AHT21/AHT25 Датчик температуры и влажности SHT30 (SHT31/SHT35) Действие «valueToVx()», «valueToArrVx()». Отслеживание заданного уровня в диапазоне значений Действие «termostat()». Термостат ESP-NOW. Датчик температуры и влажности с питанием от батареек Последовательные интерфейсы (UART, I2C, SPI) Управление одноканальным модулем реле |