• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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
без обид, я вас не пытаюсь хоть каким-либо образом принизить или что-то такое, а то мало ли надумаете себе. Все люди разные, и у каждого свой путь.
Не думал обижаться, вы совершенно правы, по граблям пройтись не против, грабли тут небольшие. И да у меня работает, может быть не на долго, посмотрим. Я уверен что все тут люди не глупые и вы прекрасно понимаете что, почему, и как должно работать, я погуляю чуть вокруг, может там еще что есть.
 
Сверху Снизу