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: 1207

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.

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2019   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço