Será que alguem consegue me ajudar?

Meu Esp01 trava quando faço reset, com um rele ligado no pino GPIO2. Eu ja li aqui no blog que isso é porque o Eps01 nao tem resistor de pull-down nas portas. Oque se faz para contornar isso?

Exibições: 5952

Responder esta

Respostas a este tópico

Elcids, tirei o chapéu pra ti. Há algumas coisas a salientar no teu artigo. Se nota que tu tem uma carga enorme de conhecimento, eu tenho procurado informações na internet inteira e não encontrei algo tao bem explanada. Ta bem explanado, e bem embasado. Outra coisa é tua dedicação que chega a ser uma obsessão, conseguiste esmiuçar todos os objetos e chegar a uma visão precisa e técnica do que esta acontecendo e me deu uma solução que nunca vi na internet sobre outros problemas que eu enfrentei. E olha que antes mesmo do google existir eu já era uma pesquisador da net. Eu explico porque quero resolver estes problemas que acontece com as portas do esp01, ele é muito barato, e para desenvolver módulos para qualquer tipo de solução IoT, ele é mais do que suficiente. Claro se quiser mais portas é só usar outras boards com o mesmo esp8266 ou pular para um esp32, ou mesmo usar um expansor de portas digitais, mas se tu consegue simplificar com um esp01 barateia demais o produto final.

Sobre o código, aquelas sugestões tuas são ótimos, mas a descrição dos pinos, eu coloquei aquele nome pois é oq se vê na placa física, ali do lado dos pininhos, ai fica mais fácil de se localizar. E sobre o fragmento que trata a hora, funciona bem, pois se tu coloca um horário de ligar maior que o horário de desligar, como seria, ligar as 18 e desligar as 7, um if simples não resolvia, então tratei em duas situações, mas não ta reminado aquela parte. Eu quero implementar uma a opção de desligar ou ligar a qualquer momento independente de que hora for, ou se está desligado ou ligado o rele, estou estudando como fazer isso. 

Muito obrigado por tudo que tu fez e vou colocar em pratica e ver se resolveu, pois acredito que tem muita gente querendo esta solução mas é tao difícil de explicar o problema e tao difícil alguém que sabe resolver se dedicar a isso.

oi Luiz, boa noite.

      Estamos aqui para colaborar mesmo, e levamos isso até o necessário para conseguir atender as necessidades do pessoal que coloca as dúvidas, questões, etc (sejam as mais simples, sejam as mais sofisticadas, pra nós são todas importantes).

     Alguns comentários sobre meu último post, onde descrevi o problema que vc estava confrontando:

     1) mencionei que o GPIO2 estando em "0", como acabava ocorrendo no seu design durante o BOOT do ESP, força o "Modo "UART" ser iniciado pelo ESP (o modo de gravação do código, que todo mundo usa). Na verdade para entrar neste modo, a combinação dos GPIOs é outra, conforme pode ser vista no meu primeiro post (a tal "Tabela  3").  Então o que faz o ESP "travar" quando o GPIO2 está em "0" durante o BOOT ?  a resposta pra isso está na tabela a seguir:

     Como se pode observar, para o ESP01, quando o GPIO2 está em "0" durante o BOOT, resulta em uma combinação que não é considerada válida. Obviamente, que algo deve ocorrer nessa situação, mas não é divulgado pelo Fabricante, pois provavelmente é reservado para situações de testes na Linha de Produção da Fábrica. Claro que se você gastar horas e horas analisando o código nativo residente do ESP8266, poderá descobrir, mas acho que não vale a pena né?

     Também, note que para o ESP01, apenas as 4 primeiras linhas da Tabela são aplicáveis, pois esta placa tem o GPIO15 do ESP8266 ligado a 0V (GND).

      E a Tabela pode ser usada para o também popular ESP12, e como este tem o GPIO15 "livre", então todas as combinações se aplicam a essa placa.

      Essa Tabela e outras informações significativas, podem ser encontradas neste link:   ESP8266 Arduino Core

 

     2) reforço meu conselho de usar 5V para alimentar o Relé, pois se você olhar o datasheet que está no site do Robocore (é fabricado pela Metaltex), vai ver que a tensão mínima da Bobina que é garantido acionar os contatos, é de 3,5V. Se vc alimentar a Bobina com 3,3V, eventualmente um ou outro Relé do mesmo modelo, irá falhar no acionamento, pois você estaria no limiar da tensão mínima de acionamento (na verdade já abaixo desse limiar). Também se acionado com 3,3V, uma pequena pancada no Relé poderá abrir os contatos (e talvez não feche novamente), pois a força do campo magnético criado pela corrente na Bobina (e que aciona os contatos) não será tão forte como em 5V.  Além disso, 5V é a tensão nominal desse modelo de Relé.

    3) Sua plaquinha Adaptadora para o ESP01 (a da Robocore), possui um regulador LDO na mesma. Isto permite você alimentar o ESP01 seguramente por ela, pois a saída desse LDO é de 3,3V. Outro ponto: o LDO exige uma tensão mínima de entrada maior que a tensão de saída (os 3,3V). Então a plaquinha adaptadora não deve ser alimentada com exatos 3,3V (caso vc a alimente com essa tensão, o LDO não "terá força" para suprir a necessidade de corrente do ESP01, e hora ou outra este poderá falhar).

    Finalizando, alguns comentários sobre o código:

     1) procure usar a técnica que mostrei, usando os defines para os números dos pinos, e usando os nomes funcionais para os pinos no restante do código (como por exemplo o "pino_Rele" e o "pino_Pisca"), isso certamente deixará seu  código mais claro e fácil de trabalhar.

     2) Sobre as sentenças lógicas para as decisões de acionamento do Relé, a partir da Hora atual, e dos valores "Ativa" e "Desativa", veja as figuras que preparei a seguir:

   e

   Bem estas duas últimas figuras, me poupam palavras (ufa!!!) para descrever.

   Pessoal, há alguns meses atrás, levantei os esquemáticos do ESP01 e do ESP12, o mais confiável que pude, a partir de diversas referências (em sites e do próprio fabricante), e inclusive medindo alguns pontos nas próprias placas.

   Para o ESP01, encontrei duas versões bem solidificadas no mercado, que chamei de "revisão 1" e "revisão 2". Para o ESP12, desenhei apenas uma revisão. Todas os três esquemáticos estou disponibilizando no anexo no final do post.

   Mas pra "enfeitar o pavão", seguem os prints para a "rev 2" do ESP01, e para o ESP12:

   Luiz, caso tenha algo que possamos colaborar, estaremos à disposição.

   Abraços.

   Elcids

Anexos

Boa tarde , 

O_2 ( GPIO_2 / Pino 14 do Chip):
Obdecendo configuração do firmware, para boot da memória Flash durante o reset, esse pino deverá ter o nível alto - conecte um resistor de 10K ohms ao +3,3V. Para o modo de download através da interface serial UART, esse pino também deverá estar no nível alto (3,3V).

ESP8266 - Pinos e definições :
http://labdegaragem.com/forum/topics/conhecendo-o-esp8266?commentId...

ESP8266 - Usando IDE Arduino (exemplos ADAFRUIT/SPARKFUN )
http://labdegaragem.com/forum/topics/conhecendo-o-esp8266?commentId...

No caso do uso do ESP8266 com a IDE Arduino, não precisa ficar mudando as portas para o modo Download e Running. Se deseja fazer vários testes com os programas, mantenha-o no modo Download e antes de carregar o programa dê um reset no módulo. Após a gravação do programa (Sketch), se deseja rodar o programa novamente mude as portas para o modo Running.

Para uso normal do ESP8266 (Running mode) :
IO_00 - mantenha no nível 1 ( resistor de 10K conectado ao +3,3V). 
IO_02 - mantenha no nível 1 ( resistor de 10K conectado ao +3,3V). 
IO_15 - mantenha no nível 0 ( conectado ao terra).

Para download de programa para o ESP8266:
IO_00 - mantenha no nível 0 ( conectado ao terra).
IO_02 - mantenha no nível 1 ( resistor de 10K conectado ao +3,3V). 
IO_15 - mantenha no nível 0 ( conectado ao terra).

ESP8266 - Diagrama da montagem do Modulo ESP8266-01:
http://labdegaragem.com/forum/topics/conhecendo-o-esp8266?commentId...

Tutorial - Conhecendo o ESP8266 (por José Gustavo Abreu Murta)

O módulo de relé da Robocore que esta usando é para saídas de 5V .

https://www.robocore.net/loja/produtos/modulo-rele.html#descricao

Creio que por isso esta tendo problemas na sua montagem.

A porta GPIO2 do ESP8266 usa nivel de tensão 3,3V. E ela deverá ter um resistor de pull up.

Talvez a tensão de 3,3V não seja suficiente para ativar o opto-acoplador na entrada da módulo do Relé.

OBS - a alimentação do ESP8266-01 tem que ser 3,3V ! Não use 5V.

Sugiro que use um circuito driver Inversor para esse led do optoacoplador. 

Caro Murta, este rele funciona com 3,3V, tanto que se eu coloco na porta RX funciona tranquilamente. Abraço!

Bom dia!

Estava devendo um retorno para os amigos do Forum. Estou esperando chegar os componentes que o Elcids me recomendou para isolar os circuitos. E fiz uma tentativa, colocar um transistor 2N2222. E funcionou, pelo menos quando eu ligo o ESP, o rele liga e desliga, e depois funciona bem. Tambem tive um problema com um LED que acontecia o mesmo, quando ligava o ESP, o LED ligava junto e ficava ligado e o ESP ficava com o LED azul ligado e parado. Coloquei o 2N222 etre ele e o pino logico do ESP e funcionou.

Eu arrisco a concluir que ao ligar o rele e o LED, devem retornar algum ruido ao ESP que ele fica parado e nao inicializa. 

A questão do LED, o problema está que comprei um pacote de LED que me informaram ser de consumo de 2.2V mas dependo da cor ele nao diexa o ESP inicializar. Bom mas isso não é mais problema pois se colocar o transistor resolve.

Boa noite a todos.

Comprei um modulo de relé padrão (com 1 relé, 1 transistor, 1 regulador 3,3 vcc, 1 soquete para ESP8266) porém  o pino femea no conector que seria do GPIO 0 do ESP8266 fica com negativo ( 0 volts). Quando encaixo o ESP e entra em modo gravação/programação e não opera. Para funcionar coloquei um resistor de 3k3 ohms entre este pino GPIO 0 e o +3,3 VCC do soquete mas não acho adequado e nem ortodoxo. Alguem saberia de uma solução para isso sem fazer "gambiarras" externas ? Quem me vendeu informou que não dá assistencia tecnica. Tambem tive que inverter todos os comandos no sketch. Não sei se o mesmo caso de vocês.

Mais: o modelo do modulo: ESP-01S Relay, V1.0.

Peguei 2 do meu lote de 10 pças e eles apresentam 0 volts no pino femea (GPIO 0) quando são alimentados pelos 5Volts CC.

olá sr Olinto.

      Provavelmente isto está ocorrendo,  porque foram utilizadas revisões diferentes  do  módulo Relé  "ESP-01S".

      A figura a seguir mostra as plaquinhas para as duas revisões:

(clique na figura para "zoom")

      Na primeira revisão,  o Relé era acionado por "HIGH" no Arduino,  e o nível lógico do sinal "GPIO0" controla diretamente o MOSFET  (Canal N) que aciona a bobina do Relé. Isto pode ser conferido no esquema elétrico dessa revisão, conforme mostro na figura a seguir:

(clique na figura para "zoom")

      Já o outro módulo ao qual o sr se refere,  é provavelmente uma revisão "4".  Nesta revisão, algumas coisas foram alteradas. Uma delas, é que o Relé tem bobina para 3.3V (isso aumenta a corrente necessária para acionar o Relé, embora a Potência consumida para obter-se este acionamento, ainda seja a mesma da revisão 1). Mas isto não tem efeito no Sistema,  uma vez que já existe na plaquinha do módulo um Regulador de Tensão para 3.3V.

      Outra coisa, é que nesta revisão "4", também foram acrescentados Resistores de "pullup" para os sinais "GPIO0" e "CH_PD". Também foi acrescentado um circuito clássico  "PUC" ("Power Up Clear") para o sinal "RST", assim garantindo que o ESP01 seja resetado quando o Sistema é energizado.

      E finalmente,  foi acrescentado um "Opto-acoplador" entre o Gate do MOSFET  e o sinal "GPIO0" do ESP01. Devido à forma como o LED interno deste Opto-acoplador  está conectado no circuito deste módulo,  o Relé deve ser acionado por "LOW" no sinal "GPIO0".

      Estas características podem ser observadas no esquemático da revisão "4", conforme mostro na figura a seguir:

(clique na figura para "zoom")

      Para facilitar, aconselho que use logo no início do seu código,  um "#define"  para especificar o nível lógico ("HIGH" ou "LOW") que deve ser aplicado ao "GPIO0" para ligar o Relé, o que terá efeito em todo seu programa,  e facilitará manter duas versões (para um caso ou outro).  Na figura a seguir mostro um exemplo disso, neste caso para a revisão "4", onde o Relé deve ser acionado por "LOW":

(clique na figura para "zoom")

      E para configurar o pino,  e fazer o controle ON/OFF do Relé,  pode ser como mostro na figura a seguir:

(clique na figura para "zoom")

      E caso queira conhecer algumas "artimanhas" referentes ao acionamento desses módulos de Relés mais "genéricos" (mas que também se aplicam ao módulo "ESP-01S"),  veja um tópico recente aqui no LDG  onde descrevo algumas características relacionadas.

      O tópico é este:   "Módulo Relé 8 canais sem JD-VCC"

      Espero ter ajudado.

      Abrçs,

      Elcids

Bom dia Elcids.

Faz muito tempo que não vejo uma resposta tão bem elaborada e embasada no conhecimento.

Quanto ao sketch, não estou tendo problemas. Já mudei o status do GPIO 0 conforme a necessidade.

Quanto ao modulo de relé, vc tem razão, minha versão é V1.0 e não deve ser compativel com o ESP8266 adquirido. Já postei no site de compras estas informações. Achei mais lógico soldar nos pinos do conector o resistor de 3k3 ohms do que solicitar troca. Com certeza eles não terão uma versão mais atual do modulo.

Paguei 20,30 por cada conjunto "ESP8266/modulo relé" então vale a pena.

Muito obrigado pelas explicações. Serão de muita valia.

Estou utilizando estes kits para tomadas inteligentes em minha casa (ver artigo aqui no LabGaragem).

o sketch atualizado está aqui: http://ww.olintronica.com/ESP/Tomada_temporizada.txt

Um abraço

Olinto

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço