• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

кратковременный импульс на пинах esp8266 при включении

Moseich

Member
все верно,
но при том коде выше, на пинах нет "-".

кстати, у Соноф, у 1М тоже ничего не щелкает
И у меня никогда не щелкает,:) если я предустанавливаю все пины реле в "1". Но как только уровень входного пина "падает" до "0" - реле щелкает. Правда здорово🎶
В прошивке sonoff подобное решение. Также я поступал и на девайсах с ардуино.
 

CodeNameHawk

Moderator
Команда форума

Moseich

Member
Это происходит еще до старта вашей программы.
Я исхожу из того, что предметом обсуждения у нас реле, которое не должно щелкать. и мы должны бороться с последствиями старта контроллера, которое зависит от многих факторов. DO,D5, D6 и D7 (на Wemos d1mini) я всегда пользую как выходные. других и не знаю.:coffee:
 

CodeNameHawk

Moderator
Команда форума
что предметом обсуждения у нас реле, которое не должно щелкать.
Добавлю, не должно щелкать во время старта есп.
и мы должны бороться с последствиями старта контроллера,
Во время старта есп, на служебных ногах выводится информации, поменять программно не получится, т.е. бороться с нечем.
других и не знаю
https://esp8266.ru/category/esp8266-hardware/
https://www.dropbox.com/s/c6bljycdvfhe0ez/WeMos-D1-mini-Lite_breadboard_v2 2.svg?dl=0
Теперь не будет у вас такой слабой отмазки.
https://edistechlab.com/esp8266-wemos-d1-mini-pin-out/?v=c562607189d7
Советую обращаться к выводам по номеру GPIO, а почему так, сами придумайте.
 
Последнее редактирование:

nikolz

Well-known member
Всем привет! ESP8266 интересуюсь уже давно, но раньше в основном подключал к нему разные датчики температуры, влажности, дисплеи и т.д. Сейчас возникла необходимость подключить реле. Сделал. Но столкнулся с таким неприятным моментом как щелканье реле при включении модуля. Модуль WittyCloud. Раньше как-то не обращал внимания, а сейчас заметил что и встроенный RGB-светодиод на этом модуле тоже кратковременно моргает при включении. В сетапе ставил пины в 0 - не помогает. Взял NodeMCU, подпаял светодиод к неиспользуемому gpio14(D5) - такая же ситуация, при старте кратковременный импульс. Подскажите это нормально для esp8266 или нет? И можно ли с этим как-то бороться?
я решил эту проблему поставив расширитель ввода-вывода в результате подключил 8 реле и кучу датчиков без проблем
Цена вопроса копейки, подключение не требует никакой обвязки кроме чипа расширения.
давно писал об этом на этом форуме и выкладывал картинки
 

nikolz

Well-known member
применение расширителя дает еще некоторые плюсы при создании устройства с несколькими реле для управления мощной нагрузки.
об этом тоже писал.
 

nikolz

Well-known member
Here’s a summary of how all the ESP8266 GPIOs behave. Pictures of the analyzer/scope traces are shown below.

NodeMCU
GPIO
ESP8266
GPIO
Behaviour
Flash Mode
Behaviour
Dummy Arduino App
Behaviour
Arduino Set GPIOs Low
D016HighHigh during boot, falls after ~110ms (to ~1V?)High during boot, falls after ~110ms (to ~1V)
D15LowLowLow
D24LowLowLow
D30Low then oscillatesVaries, stabilizes high after ~100msVaries, stabilizes low after ~110ms
D42Varies, stabilizes high after ~60msVaries, stabilizes high after ~70msVaries, stabilizes low after ~110ms
D514HighHigh, then low after ~110msHigh, then low after ~110ms
D612HighHigh, then low after ~110msHigh, then low after ~110ms
D713HighHigh, then low after ~110msHigh, then low after ~110ms
D815LowLow, with glitch ~110msLow, with glitch ~110ms
D93LowLow until ~50ms then highLow until ~50ms then high until ~110ms then low
D101LowLow until ~50ms then highLow until ~50ms then high until ~110ms then low
Вот краткое описание того, как ведут себя все GPIO ESP8266. Изображения трассировок анализатора/прицела показаны ниже.

NodeMCU
GPIO ESP8266
Поведение GPIO
Поведение в режиме вспышки
Фиктивное поведение приложения Arduino
Arduino установил низкий уровень GPIOs
D0 16 Высокий Высокий во время загрузки, падает через ~ 110 мс (до ~ 1 В?) Высокий во время загрузки, падает через ~110 мс (до ~ 1 В)
D1 5 Низкий Низкий Низкий
D2 4 Низкий Низкий Низкий
D3 0 Низкий, затем колеблется Меняется, стабилизируется высокий после ~ 100 мс Меняется, стабилизируется низкий после ~ 110 мс
D4 2 Меняется, стабилизирует высокий уровень после ~ 60 мс Меняется, стабилизирует высокий уровень после ~ 70 мс Меняется, стабилизирует низкий уровень после ~ 110 мс
D5 14 Высокий, затем низкий после ~ 110 мс Высокий, затем низкий после ~ 110 мс
D6 12 Высокий, затем низкий после ~ 110 мс Высокий, затем низкий после ~ 110 мс
D7 13 Высокий, затем низкий после ~ 110 мс Высокий, затем низкий после ~ 110 мс
D8 15 Низкий Низкий, с задержкой ~110 мс Низкий, с задержкой ~110 мс
D9 3 Низкий Низкий до ~ 50 мс, затем высокий Низкий до ~ 50 мс, затем высокий до ~ 110 мс, затем низкий
D10 1 Низкий Низкий до ~ 50 мс, затем высокий Низкий до ~ 50 мс, затем высокий до ~ 110 мс, затем низкий
 

nikolz

Well-known member
Как использовать
контакты GPIO0, GPIO2 и
GPIO15 в качестве выходов и входов на модулях ESP8266

Обновлено 24 декабря 2021 года – добавлено примечание о предотвращении мерцания реле GOIO0 при запуске
Обновлено 2 апреля 2018 года для отображения светодиодов ESP8266-01

Введение
ESP8266 - это недорогой чип с поддержкой Wi-Fi. Он поставляется в различных типах модулей и может быть запрограммирован различными способами. Также используются контакты и светодиоды ESP-01 и ESP-01S

Все модули обеспечивают доступность GPIO0 и GPIO2. Большинство модулей, кроме ESP8266-01, также обеспечивают доступ к GPIO15. Эти GPIO управляют запуском модуля и поэтому требуют особого обращения, если они вообще будут использоваться. GPIO6-GPIO11 также требуют специальной обработки, как описано ниже

Советы по программированию ESP8266 (сбой espcomm)
При программировании ESP8266 с использованием Arduino IDE (см. ESP8266-01 Wifi Shield) вы иногда (часто) получаете сообщения об ошибках в Arduino IDE, такие как
ошибка esp_com open failed
ошибка: не удалось открыть COM33
ошибка: ошибка
espcomm_open ошибка: ошибка espcomm_upload_mem сбой


В этом случае выполните следующие действия, чтобы заставить его работать:-

  1. Убедитесь, что в меню Arduino Tools выбрана плата ESP8266
  2. Убедитесь, что вы выбрали COM-порт в меню инструментов Arduino
  3. Включите питание ESP8266 с заземлением GPIO0 (чистая подача питания, см. Ниже)
  4. Если 3) не устраняет проблему, отсоедините USB-кабель от компьютера, подождите несколько секунд и снова подключите его
  5. Если 4) не устраняет проблему, отсоедините USB-кабель от ПК, закройте Arduino IDE, откройте Arduino IDE, снова подключите USB-кабель.
Когда вы подаете питание на ESP8266 после заземления GPIO0, убедитесь, что оно подается чисто. Не искажайте связь. Светодиод ESP8266 должен просто загореться и гореть без каких-либо вспышек.
Если у вас все еще возникают проблемы, ознакомьтесь с подробными проверками, описанными здесь (локальная копия здесь)

Флэш–контакты GPIO - от GPIO6 до GPIO11
Большинство плат ESP8266 имеют флэш-чип, подключенный к некоторым или всем GPIO6-GPIO11. Большинство программ используют флэш-память, а также оперативную память, поэтому, если вы специально не убедитесь, что ваш код выполняется только из оперативной памяти, вы не можете использовать эти выводы для других целей.

Точное количество контактов, используемых в диапазоне от GPIO6 до GPIO11, зависит от типа флэш-памяти, используемой в вашем модуле. Quad IO использует 4 линии для передачи данных (всего 6 контактов) со скоростью, в 4 раза превышающей стандартную. Двойной ввод-вывод использует 2 линии для передачи данных (всего 4 контакта) Стандартный ввод-вывод использует одну линию для передачи данных (всего 3 контакта).

Если вы точно не знаете, что требуется вашей плате, вам лучше просто игнорировать GPIO6-GPIO11 и не ссылаться на них в своем коде.

Контакты GPIO0, GPIO2 и GPIO15
Эти выводы определяют, в каком режиме запускается чип.



Для нормального выполнения программы GPIO0 и GPIO2 необходимо подключить к Vcc (3,3 В), а GPIO15 необходимо подключить к GND, каждый с резистором в диапазоне от 2 Ком до 10 Ком. Резистор 2 Ком обеспечивает лучшую помехозащищенность. OLIMEX использует резисторы 2K, SparkFun использует резисторы 10K. Я использую резисторы 3K3.

Настройки этих входов проверяются только во время включения питания (или сброса) микросхемы. После этого выводы доступны для общего использования, но, как обсуждается ниже, их использование ограничено этими внешними подтягивающими резисторами.

Использование GPIO0, GPIO2 и GPIO15 в качестве выходов
Как отмечалось выше, на этих выводах уже будет резистор, подключенный либо к VCC (GPIO0 и GPIO2), либо к GND для GPIO15. Это определяет, как должно быть подключено любое внешнее устройство, например реле или светодиод + резистор. Для GPIO0 и GPIO2 между VCC и выводом должно быть подключено внешнее реле, чтобы оно не мешало работе подтягивающего резистора. И наоборот, между GND и выводом должно быть подключено внешнее реле, подключенное к GPIO15, чтобы оно не мешало действию понижающего резистора.

Для активации внешнего устройства GPIO0 или GPIO2 должны быть установлены на низкий уровень (активный НИЗКИЙ), а GPIO15 - на высокий (активный высокий).

На схеме ниже показано, как использовать GPIO0 и GPIO2 и GPIO15 в качестве выходов. Эта схема также включает в себя необходимые резисторы для снятия / снятия. Обратите внимание, что релейный модуль 5 В, управляемый GPIO0, имеет оптическую изоляцию и имеет отдельное общее соединение для входа. Важно, чтобы напряжение VCCA 5 В не подавалось на вывод ESP8266.



Как избежать мерцания реле при запуске

Обновление 24 декабря 2021 года – Когда ESP8266 включается / сбрасывается в обычном режиме, GPIO0 становится низким примерно на 100 мс. Это ненадолго включит реле, подключенное к GPIO0, как показано ниже. Чтобы избежать этого мерцания реле при запуске, припаяйте конденсатор емкостью от 470 мкФ до 1000 мкФ напряжением 6,3 В или выше к входным контактам оптоизолятора (после встроенного резистора) на самой плате реле. Проверьте с помощью мультиметра правильную полярность конденсатора. Этот конденсатор задержит реле примерно на 0,5-1 сек. Вы могли бы попробовать конденсатор до 220 мкФ. 1000 мкФ был протестирован и работает. Существует примерная схема использования выводов и светодиодов ESP-01 и ESP-01S



Вот схема в формате pdf.

Как перепрограммировать при использовании GPIO0 в качестве вывода
Примечание: GPIO0 is должен быть заземлен, чтобы перейти в режим программирования. Если ваш sketch перегоняет его слишком высоко, заземление может повредить ваш чип ESP8266.
Безопасный способ перепрограммировать ESP8266, когда ваш код управляет выходом GPIO0, состоит в том, чтобы: -
а) Выключить плату
; б) замкнуть GPIO0 на gnd
; в) включить плату, которая переходит в программный режим из-за короткого замыкания на GPIO0;
г) удалить короткое замыкание из GPIO0, чтобы не замкнуть вывод при запуске программы
e) перепрограммируйте плату
f) при необходимости включите питание платы.


Используя GPIO0, GPIO2 и GPIO15 в качестве входных данных.
Использование этих выводов в качестве входных данных немного сложно. Как отмечалось выше, при включении питания и во время сброса эти выводы необходимо поднимать или опускать по мере необходимости, чтобы модуль ESP8266 запустился в нормальном рабочем режиме. Это означает, что, как правило, вы не можете просто подключить внешний переключатель к этим выводам, потому что при включении питания вы обычно не можете гарантировать, что коммутатор не будет заземлять вход и, следовательно, не позволит модулю правильно запуститься.

Хитрость заключается в том, чтобы не подключать внешний коммутатор напрямую от GPIO0 или GPIO2 к GND, а вместо этого подключать его к другому выводу GPIO, который заземляется (как выход) только после запуска ESP8266. Помните, что при использовании в качестве выходов выводы GPIO обеспечивают подключение с очень низким сопротивлением либо к VCC, либо к GND в зависимости от того, являются ли они ВЫСОКИМИ или НИЗКИМИ.

Здесь будут учитываться только GPIO0 и GPIO2. Используя этот метод, вы можете получить один (1) дополнительный ввод, используя эти два (2) GPIO.

Аналогичный метод можно использовать для GPIO15, используя другой вывод GPIO для подключения его коммутатора к + VCC, но это не дает дополнительного входа, вы можете просто использовать другой вывод GPIO непосредственно в качестве входа.

В приведенной ниже схеме в качестве примера используется модуль ESP8266-01. Без использования этого трюка ESP8266-01 не имеет свободных контактов для использования в качестве входа, если вы уже используете контакты RX / TX для подключения UART.



Поскольку метод setup() sketch запускается только после запуска модуля ESP8266, безопасно сделать вывод GPIO0 НИЗКИМ и таким образом обеспечить заземление для S1, подключенного к GPIO2. Затем вы можете использовать digitalRead (2) в другом месте вашего эскиза, чтобы прочитать настройки переключателя.

Заключение
В этой короткой заметке показано, как использовать GPIO0, GPIO2 и GPIO15 в качестве выходных данных и как использовать дополнительный ввод, используя GPIO0 и GPIO2 вместе.
 

nikolz

Well-known member
еще раз повторю
вешаем на I2C расширитель подключаем к нему 8 реле и все работает без проблем.
И всего-то чип за копейки и 4 провода, включая питание.
чтобы реле не мешали ESP расширитель с реле выносим к силовой части которую коммутируем.
При таком включении прекрасно работают самые простейшие модули реле у которых нет оптронов а стоит один транзистор.
---------------
кроме того, ставим RC для уменьшения тока удержания
а в программе ставим алгоритм , который исключает одновременное включение реле.
--------------
В итоге вместо проблем с почти амперным импульсным током при работе реле имеем импульс тока не более 100 mA.
 

Kirbox

New member
Так, А если тоже самое, но используется не реле, а транзистор полевой и ШИМ? ESP-01 (хотя разница будет не большая), GPIO хоть 0, хоть 2. При включении - импульс. Конденсатором будет гаситься ШИМ. Как убрать кратковременное включение при старте?
 

Kirbox

New member
Так, А если тоже самое, но используется не реле, а транзистор полевой и ШИМ? ESP-01 (хотя разница будет не большая), GPIO хоть 0, хоть 2. При включении - импульс. Конденсатором будет гаситься ШИМ. Как убрать кратковременное включение при старте?
подозреваю, что можно инвертировать выход и управлять по +, использовав pnp транзистор, но не приемлемо по дальнейшей схеме
 
Сверху Снизу