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

Включение с подключенным к реле GPIO 0

Serenity

New member
Здравствуйте дорогие друзья,

Модуль ESP - 01 подключен при страте к реле GPIO_0 и GND и не стартует, если реле отключить - стартует нормально. Это грустно, потому как хотелось бы иметь полностью готовую платформу, а так после потери питания не стартанет, сталкивался кто?

И да, сейчас вы будете орать, но, у меня отлично работает от 5v (я проверял с 3.3 тоже самое, кстати на 3.3 грелся на 5 не греется), никаких резисторов никуда не подтянуто(и да, я подключал 10к 5к 3к и 250 везде где можно было, и работает модуль точно также) Единственное, что я так и не завел его с помощью TTL эмулятора, все прошивания и другие операции выполнял через Arduino(кому надо расскажу как).

Благодарю за ответ зарание.

p.s.
Кстати, Victor я так понял вы перешли с AT и NodeMCU на что то другое, не расскажите что сподвигло, в чем преимущества?
 

JustACat

Moderator
Команда форума
Привет.
сталкивался кто?
Конечно, документация про это знает ESP8266_Module Application Design Guide.pdf - страница 16. При старте модуля GPIO0 и GPIO2 обязательно должны быть в 1. А потом можно их использовать и по-другому.
сейчас вы будете орать
Не будем, мы вообще тут орем редко, тем более, что это запрещено правилами форума :)
отлично работает от 5v
Что ж, хорошо, что вам так везет.
выполнял через Arduino(кому надо расскажу как)
Да вроде уже рассказано вот тут: http://esp8266.ru/esp8266-podkluchenie-obnovlenie-proshivki/#esp8266-arduino-connect Но если хотите - мы от информации никогда не отказываемся. Будем рады.

PS: и да, если вам именно решение нужно, то можно что-нибудь попробовать сколхозить с резистором подтягивающим. То есть подтянуть GPIO0 дополнительно резистором кОм на 5 к питанию. А вот если вам надо, чтобы оно было обяазтельно в 0, т.к. ваше реле именно в 0 находится в нужном вам состоянии - тогда можно поставить еще элемент НЕ чтобы он инвертировал 1 в 0. Либо взять другой модуль реле, который будет в правильном состоянии именно в 1. Большинство модулей с реле на моей памяти имеют вообще 3 контакта, то есть 1 из них переключается между двумя другими, так что вообще без проблем.
 

Victor

Administrator
Команда форума
никаких резисторов никуда не подтянуто
у меня также :) но долго так не работает (может вам повезет?), попробуйте оставить хотя бы на ночь.
перешли с AT и NodeMCU на что то другое
мне нельзя никуда переходить - я должен быть практически везде :)

А если серьезно, то если у вас невысокий скилл программирования на С (как у меня, например. а таких людей очень много, кстати)
То нам недоступно написание прошивки используя всякие тулчайны и SDK в разумные сроки.
Недоступно и кастомизация под свои потребности существующих прошивок типа NodeMCU или прошивок от @pvvx.
А вот подергать GPIO или сделать еще что-то, написав прошивку в UDK+Sming или Arduino IDE очень даже возможно за короткое время.
Эти три проекта UDK, Sming и Arduino IDE очень обнадеживают и открывают значительные возможности, недоступные нам ранее.

NodeMCU уже в тупике по памяти (зависла на SDK 0.9.6, разделили float и integer, но и это все не спасает).
Если SDK будет и дальше так же отъедать оперативку с каждым релизом, то и остальные проекты зайдут в тупик, пока не придет PVVX-SDK :)
 

Serenity

New member
Спасибо большое за ответы,

Я прочитал документацию, тем не менее я так и не понял, почему модуль не стартует когда к ноге что-либо подключено. Для меня нет проблемы в том что реле сработает при старте, проблема в том, что с подключенной ногой 8266 не стартует. И это равносильно не только для реле, с симистором та же беда.

Спасибо за ответ заранее.

p.s. с 5v проработало 3 дня, 3 дня я тестировал выключатель удаленный, и все отлично держалось, пока я не выключил фильтр сетевой -> обратно модуль(8266) не загрузился(с 3.3v таже песня).

Сама схема у меня очень простая, ну та что с реле, с симистором сложнее.

Схема.png

Код:
gpio.mode(3, gpio.OUTPUT)
function onoff()
if gpio.read(3) == 0 then gpio.write(3, gpio.HIGH) else gpio.write(3, gpio.LOW) end
end

wifi.setmode(wifi.STATION)
wifi.sta.config("NETID","PASS")
print(wifi.sta.getip())

srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
conn:on("receive",function(conn, payload)
print(payload)
node.input(payload)
if gpio.read(3) == 0 then gpstatus = "offline" else gpstatus = "online" end
conn:send(gpstatus)
end)
collectgarbage()
end)
Любым TCP сендером ASCII отправляю onoff() на адрес esp:80 порт, он меняет ногу с HIGH на LOW, можно команду целиком отправлять, но меньше пакет - меньше проблем.

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

Alex

Member
То что реле подключено напрямую к модулю я промолчу :). Так как не знаю что за реле.
Подключите реле одним концом к + питания а другим на модуль. И проинвертируйте в программу эту ногу.
 

Andy Korg

Moderator
Команда форума
Скорее всего в реле стоит какая-то схема (биполярный транзистор например) у которой есть ток утечки (будем так называть) на землю и модуль входит в режим BOOT, нога GPIO0 у нас такая. В связи с этим два предложения - перевесить на другую ногу esp реле или поставить какой-нибудь буфер КМОП между esp и реле.
 

JustACat

Moderator
Команда форума
Или, как я уже сказал: хотя бы просто подтянуть, блин, GPIO0 резистором к 3.3 вольтам. Для начала. Неужто нету резистора на 5-10 кОм?
почему модуль не стартует когда к ноге что-либо подключено
Потому что так решили разработчики и так спроектировали GPIO0 и GPIO2 - при старте сначала попадаем в бутлоадер, который эти ноги использует по-другому. А именно - он читает на них состояния, чтобы выбрать нужный режим загрузки.
И если у вас на этих двух ногах не 1 при старте - то модуль стартует не в штатном режиме. И это четко прописано как в документации, так и в миллионе мест на форуме.
Так что, вы конечно простите, но как так получается, что вы документацию читали, а этого не увидели - я не понимаю...

Вот и получается, что, когда вы напрямую подключаете какую-то вундервафлю к ногам этим, то эта самая вундервафля при старте может на ничем не подтянутой ноге ESP создать любой уровень. Тем более, что при подаче питания происходит куча физических переходных процессов. Я уж молчу о том, что вы модуль при 5 вольтах эксплуатируете, что явно выходит за его номиналы допустимые.
Даже просто кусок провода длинный подключить к GPIO0 (висящей в воздухе), и модуль может стартовать через раз.
 
Последнее редактирование:

Serenity

New member
Спасибо большое за ответы.

То что реле подключено напрямую к модулю я промолчу :). Так как не знаю что за реле.
Реле совершенно простое TRIL-5VDC-SD-1CH-R , не секрет. Может быть вы как-раз знаете решение? Как по-вашему оно должно быть подключено? 5кОм?

поставить какой-нибудь буфер КМОП между esp и реле.
Спасибо за пояснения, другую ногу я пробовал, результат еще более печальный, постоянно горит синий диод, не подскажете какой КМОП вы имели ввиду?

Или, как я уже сказал: хотя бы просто подтянуть, блин, GPIO0 резистором к 3.3 вольтам. Для начала. Неужто нету резистора на 5-10 кОм?
Здравствуйте, я пробовал подтягивать с резистором, на 5 кОм, на 10кОм, на 300Ом, 1кОм, никакой разницы нету, более того, объясните мне пожалуйста, каким образом резистор, может помочь в этой ситуации? Какой вообще магии везде пытаются добиться резисторами?
Так что, вы конечно простите, но как так получается, что вы документацию читали, а этого не увидели - я не понимаю...
Вы совершенно правы, я не уточнил этот момент, к сожалению. Често но говоря, то,
И если у вас на этих двух ногах не 1 при старте - то модуль стартует не в штатном режиме.
что вы описали, звучит довольно странно, поскольку модуль стартует отлично при пустых ногах, попробовал подтянуть GPIO0 через 5кОм, не помогло, пробовал GPIO0 и 2 подтягивать через резисторы - 0 разницы.

Я буду эксперементировать дальше, отпишу если что выйдет, но если у кого есть добрые идеи, - презентуйте :)

С уважением.
 

Andy Korg

Moderator
Команда форума
Реле совершенно простое TRIL-5VDC-SD-1CH-R
Ну вы блин даете! (с) Особенности русской охоты. Получается, что у вас нога замыкается через обмотку реле на землю и модуль входит в режим BOOT (загрузка прошивки), а кроме того получается при включении ток через ногу esp равен примерно 50мА.
Тут простым буфером не отделаться, ставте транзисторный ключ.
 

JustACat

Moderator
Команда форума
Напрямую что ли? О_о А ничего, что у него по докам номинальный ток катушки аж 80 mA при максимально допустимом для ESP на ноге токе в 12 mA?
Я молчу о том, что он на 5 вольт рассчитан. Но тут раз вы сам ESP на 5 запитываете, то все "нормально" =)
Думаю, Alex имел ввиду, что может у вас реле подключено все таки модулем неким, ну, например, таким. Со всей необходимой обвязкой.
А вот запускать реле напрямую от ножки бедного МК, даже для АВР-ок - это перебор, а у ESP и вовсе с ногами плохо.
Но, судя по тому, что у вас оно как-то работает - вам везет. Что ж, я искренне рад (серьезно, не сарказм).
я пробовал подтягивать с резистором
В данном случае я писал про подтяжку, думая, что у вас реле модулем (как по ссылке выше), а не голое. Если голое, то тут уже, боюсь, одним резистором не обойдешься.
Какой вообще магии везде пытаются добиться резисторами?
Очень просто - стабилизировать некий уровень напряжения на контакте. Чтобы на нем не было черти чего.

что вы описали, звучит довольно странно
Раз вы так считаете, то у меня возникает ощущение, что вы вообще плюете на всю аналоговую часть схемотехники. Это так? Я понимаю, что МК - это штука цифровая, 0 и 1, все дела. Но питание и еще куча всего - аналоговое же. Да и распознавание 0 и 1 на МК происходит на определенных уровнях вольтажа. Обычно это некий порядок от VCC. Но это если VCC по документации не превышает каких-то пределов...

Если все так, то вам надо ознакомиться с чем-то таким:
Подключение микроконтроллера. Ликбез.
Управление мощной нагрузкой постоянного тока. Часть 1
Управление мощной нагрузкой постоянного тока. Часть 2
Управление мощной нагрузкой постоянного тока. Часть 3
Управление мощной нагрузкой переменного тока
Возможно, еще и вот этот вот цикл статей.
 

JustACat

Moderator
Команда форума
А уж какие тут у DI HALT'а картинки! Мммм!
И там таких много :)
 

Serenity

New member
Это очень мило, обязательно воспользуюсь. К сожалению, подключение резисторов ничего не дало, а вот инвертация ноги, по вашему совету, очень помогла, спасибо. Теперь работает безотказно. Проверю на стабильность.
 

Serenity

New member
Спасибо большое за ответы.
Раз вы так считаете, то у меня возникает ощущение, что вы вообще плюете на всю аналоговую часть схемотехники. Это так? Я понимаю, что МК - это штука цифровая, 0 и 1, все дела. Но питание и еще куча всего - аналоговое же. Да и распознавание 0 и 1 на МК происходит на определенных уровнях вольтажа. Обычно это некий порядок от VCC. Но это если VCC по документации не превышает каких-то пределов...
Ну в общем то да, пока плюю, т.к. не сталкивался с проблемами по этой части, однажды я уверен, аналоговая часть будет чудесно работать. Инвертация помогла, собственно теперь схема выглядит так.Схема.png

LUA соответственно

Код:
gpio.mode(3, gpio.INPUT)
function onoff()
if gpio.read(3) == 0 then gpio.write(3, gpio.HIGH) else gpio.write(3, gpio.LOW) end
end

wifi.setmode(wifi.STATION)
wifi.sta.config("IT-commune","IT@comm9")
print(wifi.sta.getip())

srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
conn:on("receive",function(conn, payload)
print(payload)
node.input(payload)
conn:send(gpio.read(3))
end)
collectgarbage()
end)
Пока работает.

За ликбез и картинки огромное спасибо, обязательно к прочтению!

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

С уважением.
 

JustACat

Moderator
Команда форума
Andy Korg, забейте :) У человека все работает. Пусть учится на своих ошибках - это нормально. Многим нужно самостоятельно пройтись по граблям.
Serenity, без обид, я вас не пытаюсь хоть каким-либо образом принизить или что-то такое, а то мало ли надумаете себе. Все люди разные, и у каждого свой путь.
 

Serenity

New member
не ну вы че!? питать от 5 В да еще и на нагрузку 60 Ом. Выключайте пока не лишились модуля!
Спасибо за беспокойство, но, к сожалению, когда модуль рабоатет от 3.3 он жутко греется, причем от 5 - нет. Если он умрет, я обязательно отпишу об этом.
 

Serenity

New member
без обид, я вас не пытаюсь хоть каким-либо образом принизить или что-то такое, а то мало ли надумаете себе. Все люди разные, и у каждого свой путь.
Не думал обижаться, вы совершенно правы, по граблям пройтись не против, грабли тут небольшие. И да у меня работает, может быть не на долго, посмотрим. Я уверен что все тут люди не глупые и вы прекрасно понимаете что, почему, и как должно работать, я погуляю чуть вокруг, может там еще что есть.
 
Сверху Снизу