Pelo menos uma vez na vida todos nós já saímos…
NodeMCU – Utilizando com Interruptor Pulsador
Nesta prática você vai aprender a montar com o NodeMCU um circuito utilizando Interruptor Pulsador e Módulo Relé 5V para fazer o controle de uma lâmpada.
O Interruptor Pulsador é bastante utilizado em residências (campainha). O que difere um interruptor pulsador (normalmente aberto) do interruptor convencional (liga / desliga) é que o pulsador só conduz se estiver pressionado. Um pulsador bastante conhecido por quem utiliza microcontroladores e plataformas embarcadas é o push button (chave táctil).
Diferente do interruptor three way, o interruptor pulsador não precisa de um componente auxiliar para verificar o estado atual da lâmpada que está sendo controlada, pois o interruptor estará ligado diretamente ao NodeMCU através de um pino digital.
Há algumas semanas eu fiz a postagem NodeMCU – Utilizando com Interruptor Three Way aqui no blog e mostrei a vantagem e desvantagem em se utilizar este tipo de interruptor. Portanto, ao final deste tutorial você vai poder comparar as duas formas de controlar uma lâmpada manualmente através do NodeMCU e definir qual delas seria mais viável para o seu projeto de automação residencial.
Da mesma forma que feito na prática utilizando o three way, nesta prática também vamos utilizar o controle através do monitor serial da IDE do Arduino.
Abaixo está a lista dos itens necessários para esta prática. Alguns dos itens você pode adquirir em lojas de elétrica:
– NodeMCU
– Módulo Relé 5V de 1 Canal
– Chave Gangorra KCD1-101 NA Preta 2T (Pulsante)
– Cabo Jumper Fêmea-Fêmea
– Cabos com Garra Jacaré (Opcional)
– Lâmpada
– Receptáculo (boquilha)
– Cabo paralelo de 1,5mm ou 2,5mm
– Tomada (Rede alternada de 127V)
ATENÇÃO: MUITO CUIDADO AO EXECUTAR PRÁTICAS QUE ENVOLVAM TENSÃO / CORRENTE ALTERNADA! FAÇA TODAS AS LIGAÇÕES COM O CIRCUITO COMPLETAMENTE DESLIGADO E ANTES DE FAZER OS TESTES VERIFIQUE CADA UMA DAS LIGAÇÕES PARA ELIMINAR A POSSIBILIDADE DE CURTO ENTRE FASE / NEUTRO OU FASE / FASE.
Utilizei a Chave Gangorra 2T Pulsante para executar esta prática, contudo você pode utilizar qualquer interruptor pulsador, até mesmo uma chave táctil.
Abaixo está o esquema de ligação para esta prática:
Feito o esquema de ligação, basta implementar as instruções para o funcionamento.
Se ainda não tem a IDE do Arduino instalada e configurada para o NodeMCU, acesse os links abaixo e em seguida retorne para continuar:
Arduino – Instalação e Configuração da IDE no Windows
NodeMCU – Instalação no Windows
NodeMCU – Configurando a IDE do Arduino
O código para testes está abaixo, basta copiar o mesmo, colar na IDE, salvar e carregar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
const int pinoRele = 5; //PINO DIGITAL UTILIZADO PELO MÓDULO RELÉ const int pinoPulsador = 4; //PINO DIGITAL UTILIZADO PELO PULSADOR int status = 0; //VARIÁVEL QUE CONTROLA O STATUS DO MÓDULO RELÉ (LIGADO / DESLIGADO) String st = "APAGADA"; //VARIÁVEL QUE RECEBE O STATUS ATUAL DO MÓDULO RELÉ void setup(){ pinMode(pinoRele, OUTPUT); //DEFINE A PORTA COMO SAÍDA pinMode(pinoPulsador, INPUT_PULLUP); //DEFINE A PORTA COMO ENTRADA E ATIVA O RESISTOR INTERNO DE PULL UP digitalWrite(pinoRele, LOW); //MÓDULO RELÉ INICIA DESLIGADO Serial.begin(115200); //INICIALIZA A PORTA SERIAL } void loop(){ if((digitalRead(pinoPulsador) == 0) && (status == 0)){ //SE A LEITURA DO PULSADOR FOR IGUAL A 0 "E" VARIÁVEL STATUS IGUAL A 0, FAZ digitalWrite(pinoRele,HIGH); //RELÉ LIGADO status = 1; //VARIÁVEL RECEBE O VALOR 1 st = "ACESA"; //VARIÁVEL RECEBE O TEXTO delay(200); //INTERVALO DE 200 MILISSEGUNDOS }else{ //SENÃO, FAZ if((digitalRead(pinoPulsador) == 0) && (status == 1)){ //SE A LEITURA DO PULSADOR FOR IGUAL A 0 "E" VARIÁVEL STATUS IGUAL A 1, FAZ digitalWrite(pinoRele,LOW); //RELÉ DESLIGADO status = 0; //VARIÁVEL RECEBE O VALOR 0 st = "APAGADA"; //VARIÁVEL RECEBE O TEXTO delay(200); //INTERVALO DE 200 MILISSEGUNDOS } } switch (Serial.read()) { //LÊ A ENTRADA DE DADOS DIGITADOS NA SERIAL case 'a':{ //CASO O CARACTER DIGITADO FOR IGUAL A "a", FAZ if(status == 0){ //SE VARIÁVEL FOR IGUAL A 0, FAZ digitalWrite(pinoRele, HIGH); //RELÉ LIGADO status = 1; //VARIÁVEL RECEBE O VALOR 1 st = "ACESA"; //VARIÁVEL RECEBE O TEXTO delay(200); //INTERVALO DE 200 MILISEGUNDOS }else{ //SENÃO, FAZ if(status == 1){ //SE VARIÁVEL FOR IGUAL A 1, FAZ digitalWrite(pinoRele, LOW); //RELÉ DESLIGADO status = 0; //VARIÁVEL RECEBE O VALOR 0 st = "APAGADA"; //VARIÁVEL RECEBE O TEXTO delay(200); //INTERVALO DE 200 MILISEGUNDOS } } break; //PARADA } } Serial.println(st); //IMPRIME O TEXTO NA SERIAL } |
Após o carregamento do código abra o monitor serial na IDE do Arduino e digite no campo de entrada de dados a letra “a” (sem aspas) e clique no botão “ENVIAR”. Nesse instante o módulo relé vai alterar o estado para ligado e a lâmpada irá acender. Digite novamente a letra “a” e clique em “ENVIAR” para que o módulo relé desligue e a lâmpada apague. Agora pressione e solte o interruptor pulsante e veja que o módulo relé irá ligar e a lâmpada vai acender. Se pressionar novamente o interruptor pulsante a lâmpada vai apagar. Note que no monitor serial a atualização do estado da lâmpada é feito independente se você controla via entrada de dados do monitor ou pelo interruptor pulsador.
No vídeo abaixo você pode ver o resultado final desta prática:
Outro detalhe importante desta prática é que foi necessário utilizar um resistor interno de PULL UP do NodeMCU para garantir que a leitura do pino digital em que o interruptor pulsador está ligado não fique flutuando entre 0 e 1 e que quando o mesmo não estiver pressionado, o pino se mantenha em nível alto (HIGH ou 1) e quando pressionado cause uma queda no pino e o coloque em nível baixo (LOW ou 0). É importante ressaltar que: se você pressionar e mantiver o interruptor pulsador pressionado, o módulo relé vai ficar ligando e desligando.
Para esta prática foi utilizado o controle virtual através do monitor serial da IDE do Arduino, contudo você pode substituí-lo por uma página web ou um aplicativo para Android ou iOS.
Após finalizado esta prática, é possível definir pelo menos uma vantagem e uma desvantagem em se utilizar interruptor do tipo pulsador.
Vantagem: possibilita que cenas pré-definidas no código sejam executadas de acordo com os cliques no pulsador. Exemplo: se pressionar o interruptor pulsador duas vezes seguidas um conjunto de lâmpadas é aceso ou se pressionar 3 vezes acende uma lâmpada por 30 segundos. Além disso, o mesmo não exige um componente auxiliar para verificar o estado atual da lâmpada, visto que o interruptor fica conectado diretamente ao NodeMCU.
Desvantagem: quando se utiliza interruptor pulsador o controle fica todo em cima da plataforma microcontrolada / embarcada, logo, se o NodeMCU desligar ou travar, você perde o controle sobre a lâmpada, pois depende que o NodeMCU interprete o pressionamento do interruptor para em seguida executar a ação.
A AURESIDE (Associação Brasileira de Automação Residencial) orienta seus integradores (pessoas capacitadas para fazer instalação de sistemas de automação residencial profissional) a utilizar interruptores do tipo pulsador na implantação de um sistema de automação em residências. Contudo, para um projeto pessoal não é obrigatório o uso deste tipo de interruptor para controle de uma lâmpada.
Agora que você já sabe utilizar os dois tipos de interruptores (three way e pulsador) e conhece as vantagens e desvantagens, cabe a você definir qual dos dois métodos é melhor para sua automação residencial.
Gostou desta prática? Então deixa seu comentário, dúvida ou sugestão aí embaixo!
Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop
Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.
Obrigado e até a próxima!
Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.
Postagem anterior: Arduino – Utilizando o Módulo Expansor de Saídas Digitais
Próxima postagem: Utilizando o Controle Remoto RF e Receptor RF
Ótima aula top100%
Tem como no pulsante coloca no monitor serial digita (a ) mais o tempo que digita ao in vez de fica fixo no (delay(200))
Euler, poderia disponibilizar um sketch de exemplo de cenas com Pulsador?
Possibilita que cenas pré-definidas no código sejam executadas de acordo com os cliques no pulsador. Exemplo: se pressionar o interruptor pulsador duas vezes seguidas um conjunto de lâmpadas é aceso.
Olá Elias.
No momento eu não tenho nenhum código pronto para demonstrar esse tipo de aplicação.
Ah ok, fiz uma busca como ESP8266 cenas para pulsadores mas não encontrei nada na internet, mesmo assim agradeço.
Boa tarde, tudo bem?
Estou utilizando um NodeMcu para criar a automação de algumas lâmpadas, como plataforma, utilizo o Home Assistant, com o ESPHOME para comunicação e controle do Nodemcu, e até agora índigo controlar o relé via Home Assistant normalmente, porém, ao integrar o pulsador, não tenho êxito no controle do relé, quando ele está desligado e aperto o pulsador, a luz indicadora do relé até acende, mas não aciona o relé. Eu estou utilizando uma fonte externa de 5v para alimentar o módulo relé, e desta mesma fonte conectei o Gnd no mesmo do Nodemcu. Quando implemento o botão, já fiz conforme seu sketch, ligando um Gnd e um determinado pino, já coloquei também nos 3,3v do Nodemcu, enfim, já montei de diversas formas, mas nunca aciona o relé. Verifiquei na sua explicação que é necessário efetuar uma modificação no esquema do Nodemcu para acionar um resistor interno, mas não entendi muito bem está parte.
Olá Leandro Pereira.
Agradeço pelo comentário!
É comum os usuários terem este tipo de problema com alguns modelos de relé 5V.
Em casos como este, recomendamos usar o Módulo Relé de 3.3V, pois é garantido de funcionar com plataformas de nível lógico 3.3V, que é o caso de todos os produtos baseados no ESP8266:
https://www.masterwalkershop.com.br/buscar?q=M%C3%B3dulo+Rel%C3%A9+3V+%2F+3.3V
amigo tive o mesmo problema, tenta isolar o nodemcu com um fotoacoplador, o resistor interno citado, é para nao deixar a porta que esta conectado o botao flutuando, quando nao tiver acionado(pullup)
Bom dia, muito interessante… já comprei varias coisas de vocês até o sensor de tensão …
esse parece ser melhor …
Vocês poderiam fazer um esquema para ascender e apagar a lampada pelo blink utilizando essa tecnica … pq nunca sei se a lampada em casa ta ligada ou desligada, após uma queda de força or exemplo
Olá Paulo.
Dá pra fazer sim com o Blynk.
Tenho um artigo em andamento relacionado a isto e algumas semanas já será publicado.
Acabei de comprar um Esp32 + módulos relés 8 canais optoacoplados e gostaria de fazer a automação da minha casa utilizando interruptores pulsadores e o app Blynk, como faria pra utilizar esse código junto com o código do Blynk ?
Desde já agradeço a atenção dispensada.