Boas a todos,

tenho o seguinte problema:

ESP32S com aplicação Blynk.

Tudo funciona bem através da aplicação. Tenho uma entrada Push Button que funciona mais ou menos bem. Se tiver um botão fisico com ligação de cabo até +- 10 cm, liga e desliga muito bem. No caso do comprimento dos 2 fios for  superior aos ditos 10 cm, passado uns tempos (20 min +-) a luz acende ou apaga, sem eu ter dado alguma ordem para tal.

Já troquei os pinos de entrada mas acontece o mesmo.

Porque é que o comprimento dos fios interfere com o sistema?

Agradecia ajuda

Obrigado 

Ventura

Exibições: 1290

Responder esta

Respostas a este tópico

ok Mário.

      Foi bom vc anexar o "ota.h"  também, pois eu me esqueci dele.

      Mas vc realmente usa a funcionalidade "OTA"  ?

      Irei preparar uma versão conforme informei antes.  Quando eu postar o código aqui, deixarei bem explicado mas procurando não adentrar em grandes detalhes técnicos, e sim ressaltando os pontos que podem ser eventualmente configurados.

      Terei também que reestruturar alguns pontos, para resolver o "problema" que vc levantou e também para melhor organizar o código a fim de melhor facilitar sua evolução e acréscimo de novas funcionalidades (como o controle IR que vc citou).

      abrçs

      Elcids

Viva Elcids,

sim, também uso o OTA para um eventual upgrade de software e facilitar o envio Over The Air.

Nesse aspecto está tudo a funcionar bem.

Abrç

MV

ok Mário, irei apenas "ajeitar" o uso desta parte do OTA, para ficar em harmonia com o restante do código.

      abrçs,

      Elcids

olá novamente Mário.

      Irei fazer algo diferente aqui:  conforme algo relevante for sendo construído no seu código,  irei postar aqui esta evolução, pois tratando-a separadamente fica mais acessível ao entendimento, e consequentemente mais didático. Mas evitarei fazer isso caso se trate de algo com detalhes muito técnicos, já que partes muito técnicas costumam ser um tanto indigestas para a maioria das pessoas.

      Começo assim pela questão do uso da Serial,  que no seu Sistema original aparentemente estava sendo usada para testes e "debug" via Monitor Serial do Arduino.

      Vi que no último código,  vc comentou (ou eliminou) as linhas referentes aos "prints" via Serial. Para que vc ainda tenha esta funcionalidade quando precisar,  implementei uma técnica onde vc simplesmente "liga" ou "desliga" esta funcionalidade logo no início do código.  Desta forma vc não precisa se preocupar em comentar ou descomentar  as linhas onde usa a Serial.  Simplesmente onde está escrito "Serial.xyz"  basta substituir por "Serial_xyz",  onde "xyz" é a função sendo executada (print, println, begin, etc).

      Veja o trecho logo no início do código,  onde é possível "ligar" ou "desligar" o uso das funções da Serial:

(clique na figura para "zoom")

      Onde está marcado na cor amarelo, vc pode habilitar ou desabilitar o uso da Serial.  No caso, está com o valor "0", e assim a Serial está "desabilitada".  Onde marquei em roxo e azul,  é definida a pasta e o arquivo onde está o código necessário para uso desta funcionalidade.

      Além de facilitar o uso, a  vantagem disto é que quando vc "desabilitar" a Serial, as funções usadas no código não terão efeito, e portanto não consomem  área de Memória (seja RAM, seja Flash).

      Apenas para visualizar a simplicidade da implementação, segue o trecho de código que está no arquivo "Serial_ON_OFF_01.h",  mostrando como a implementação "ON/OFF"  é feita:

(clique na figura para "zoom")

      Note que nesta primeira implementação, não acrescentei todas as funções da Serial, mas sim apenas as mais utilizadas (além da "Serial_delay", que nada mais é do que um "alias" para o "delay" do Arduino).

      Caso vc não precise de nenhuma outra função, não precisa fazer mais nada no arquivo "Serial_ON_OFF_01.h".  Mas caso vc precise acrescentar outras funções da Serial, basta seguir o padrão mostrado: acrescente na região marcada na cor verde a função função "Serial_xyz" usada,  e repetindo a função "Serial_xyz" na região marcada na cor amarela.

      A parte marcada na cor laranja, apenas serve para forçar um erro no momento da compilação, caso a opção ON/OFF  não tenha sido selecionada corretamente (ou seja, nem "0", nem "1").

      Veja um exemplo do uso desta funcionalidade no código principal, conforme mostrado na figura a seguir:

(clique na figura para "zoom")

      Note as duas áreas marcadas na cor cinza.  Elas só terão efeito se vc habilitou a Serial  no início do código (colocando "1" na definição de "Serial_ON"). Do contrário, nenhum código será gerado para as duas linhas marcadas na cor cinza (e também nenhuma RAM será consumida).

      Esta funcionalidade se torna mais necessária quando seu código evolui, e vc precisa fazer testes e depuração. E quando isso ocorre,  seu código também aumenta em tamanho, e portanto este ON/OFF  facilita muito quando vc tiver concluído tudo e quiser eliminar o uso da Serial  no código final,  sem precisar comentar as linhas onde vc usou as funções da Serial.

      Ah claro,  não dê atenção aos números das linhas  nos trechos de código mostrados nas figuras anteriores,  pois estes números irão mudar no código final.

      Agora irei iniciar a implementação restante. Na verdade só irei adaptar o que já tenho implementado, pois como eu disse anteriormente,  já implementei isso para um amigo que também fez uma automação residencial e também usou o Blynk.

      Aparentemente, está claro para mim a forma que vc está usando, mas caso eu tenha alguma dúvida eu perguntarei aqui.

      abrçs,

      Elcids

Boa tarde Elcids,

Aqui fica o ficheiro completo bem como os respectivos ficheiros de apoio (.h)

Obrigado

Ok Elcids,

ficarei a aguardar pela resolução do pequeno Bug.

Obrigado

MV

Bom dia Mário,

Sua casa ficou muito legal! 

Parabéns. 

Essa é uma dica: num projeto meu, quando uma tecla é  pressionada, eu começo a fazer sucessivas leituras a cada 5ms junto com um contador que, atingindo 20, um bit é  setado reconhecendo a tecla pressionada. Se durante essa contagem for lida uma tecla solta por causa de ruídos, o contador zera e começa tudo de novo. Pra reconhecer a tecla solta o procedimento é  o mesmo com a lógica invertida e zerado o bit. Com esse filtro digital nem precisa capacitor, somente a tecla e o pullup interno.

Olá,

creio que seu problema não são cabos, e sim o código, além de estar usando delay que para a plataforma é um problema, você esta utilizando repetições inadequadas e prejudiciais no void loop, que deve ficar de preferencia vazio, exemplo do seu código.

como esta:

Blynk.run();
timer.run();
if (wifiFlag == 0)
with_internet();
else
without_internet();
if (toggleState_1 == 0)
{Serial.println("LED 1 DESLIGADO");}
else
{Serial.println("LED 1 LIGADO");}

Deveria conter somente:

{

Blynk.run();
timer.run();

}

Caso contrario poderá ter o tipo de problemas que esta descrevendo e outros aleatórios.

Trate de criar funções fora do void loop e usar timer no lugar de delay sempre, já que delay ou millis, que é uma  ótima alternativa, na plataforma Blynk não funciona. 

Corrija isso e nos de um feedback sobre o resultado.

Abs.

CK

Boa tarde CK,

Já tinha feito essas alterações e o problema estava mesmo na adição do condensador.

Após essa fase, tudo ficou a funcionar bem excepto aquando da não detecção do Router.

Obrigado

MV

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço