Vamos falar hoje de um
componente não tão conhecido, mas que é indispensável para aqueles que gostam
de automação industrial, comercial ou residencial: o relé de estado sólido. Do
inglês Solid State relays (SSR), podemos dizer que são dispositivos eletrônicos
usados no chaveamento de cargas resistivas ou indutivas com inúmeras vantagens
sobre os relés eletromecânicos convencionais. Resumindo, hoje vamos disponibilizar
uma opção rápida e flexível para controle de cargas e estender as aplicações de
relés eletromecânicos aos SSR’s.
·
ESP8266 Devkit1.0
·
Módulo SSR’s de oito canais
·
Jumper’s para conexão
·
Rede WiFi disponível
·
Fonte de 5V
·
Lâmpada 127V
·
Soquete para lâmpada.
·
Fio paralelo
Demonstração
No vídeo de hoje você pode ver uma demonstração do circuito funcionando. Na nossa montagem, temos os relés de estado sólido. O oitavo relé está ligado a uma lâmpada a 127 volts. Os outros sete relés estão com Leds indicadores. Temos, ainda, o ESP8266, cujas saídas estão ligadas diretamente aos módulos de relés.
Módulo Sainsmart 8 canais SSR
·
Ativação das portas:
o Estado
baixo: 0V à 0,5V
o Estado
indeterminado: 0,5V à 2,5V
o Estado
alto: 2,5V à 20V
o Alimentação
5V
·
Carga em cada canal:
o Tensão:
75 à 264VAC (50/60Hz)
o Corrente:
0,1 à 2A
Componente principal – relé de estado sólido (Solid State Relay – SSR)
Algumas vantagens:
· Não possuem partes mecânicas, aumentando a vida útil.
· Respondem melhor a chaveamentos de frequências maiores.
· Possuem detecção de cruzamento de zero, ligando ou desligando cargas nos pontos de tensão zero da onda senoidal, o que reduz interferências eletromagnéticas.
· São menores, mais silenciosos, resistem mais a vibrações mecânicas.
· Maior compatibilidade com circuitos digitais e baixas correntes de acionamento.
Pessoal, preciso dizer a vocês
que existem alguns momentos para utilizar o relé tradicional e outros para usar
o relé de estado sólido. Por isso, é importante analisar sempre as vantagens,
que você já viu, bem como as desvantagens, que vou lhe expor agora.
Algumas desvantagens:
·
Precisam ter um dimensionamento correto para a
dissipação de calor.
·
São mais sensíveis a surtos elétricos e podem
requerer o uso de varistores como forma de proteção.
·
É aconselhável a utilização de fusíveis rápidos
em série com os SSR’s, porque, em caso de curto e eventual dano, o SSR’s tendem
a manter-se fechados mantendo a carga energizada.
Aqui temos um diagrama do que
tem dentro do relé de estado sólido.
Pinos do Esp8266
Circuito
Confira a tabela de conexão.
Veja aqui os detalhes da nossa montagem.
Código fonte – Includes, defines e webserver
Como mencionado, no vídeo “Automação com ESP8266 usando relés”, eu aumentei de dois para oito relés. Então, aqui,
seguimos o mesmo procedimento. Incluímos a biblioteca WiFi do ESP8266,
definimos a representação dos pinos usados para cada um dos relés e criamos um
server na porta 80.
#include <ESP8266WiFi.h>//Inclui biblioteca Wifi do ESP8266 //Define representação dos pinos usados para cada relé #define Rele_01 16 //mesmo que D0 #define Rele_02 5 //mesmo que D1 #define Rele_03 4 //mesmo que D2 #define Rele_04 0 //mesmo que D3 #define Rele_05 2 //mesmo que D4 #define Rele_06 14 //mesmo que D5 #define Rele_07 12 //mesmo que D6 #define Rele_08 13 //mesmo que D7 //Cria um server na porta 80 //(porta padrão para onde os navegadores enviam as requisições http) WiFiServer server(80);
Código fonte – Setup() – Serial e ajuste dos pinos
Inicializamos a serial para
efeito de log e ajustamos o modo, bem como o estado, de todos os pinos.
void setup() { //Inicializa a Serial apenas para efeito de log Serial.begin(115200); //Ajusta o modo de todos os pinos pinMode(Rele_01, OUTPUT); pinMode(Rele_02, OUTPUT); pinMode(Rele_03, OUTPUT); pinMode(Rele_04, OUTPUT); pinMode(Rele_05, OUTPUT); pinMode(Rele_06, OUTPUT); pinMode(Rele_07, OUTPUT); pinMode(Rele_08, OUTPUT); //Ajusta o estado de todos os pinos digitalWrite(Rele_01, LOW); digitalWrite(Rele_02, LOW); digitalWrite(Rele_03, LOW); digitalWrite(Rele_04, LOW); digitalWrite(Rele_05, LOW); digitalWrite(Rele_06, LOW); digitalWrite(Rele_07, LOW); digitalWrite(Rele_08, LOW);
Código fonte – Setup() – Conectando ao WiFi e ajustando endereço
Nesta etapa, informamos o
estado atual do ESP, o qual vamos conectar a rede WiFi disponível no local de
uso. Novo estado será, então, mostrado no monitor serial. Configuramos o IP
fixo conforme a rede e enviamos tais configurações.
Serial.print("Conectando");//informando estado atual (debug) //Faz o ESP se conectar à rede WiFi disponível no local de uso. //No nosso exemplo o ssid da rede é redeWiFi e a senha é senhateste WiFi.begin("redeWiFi", "senhateste"); //Enquanto o ESP não se conectar à rede while (WiFi.status() != WL_CONNECTED) { //Esperamos 100 milisegundos delay(100); Serial.print("."); } //Se chegou aqui é porque conectou à rede, //então mostramos no monitor serial para termos um feedback Serial.println(""); Serial.println("Conectou"); //Configurações do IP fixo. Você pode alterar conforme a sua rede IPAddress ip(192, 168, 43, 205); IPAddress gateway(192, 168, 43, 1); IPAddress subnet(255, 255, 255, 0); Serial.print("Configurando IP fixo para : "); Serial.println(ip); //Envia a configuração WiFi.config(ip, gateway, subnet);
Código fonte – Setup() – Iniciando o servidor
Inicializamos o server que
criamos na porta 80 e mostramos no monitor serial o IP que o ESP possui para
verificarmos se é o mesmo que configuramos.
//Inicializa o server que criamos na porta 80 server.begin(); //Mostramos no monitor serial o IP que o ESP possui //para verificarmos se é o mesmo que configuramos Serial.print("Server em: "); Serial.println(WiFi.localIP()); }
Código fonte – Loop() – aguardando conexão
Nesta fase do Loop, verificamos
se algum cliente está tentando se conectar. Em caso negativo, podemos retornar.
void loop() { //Verifica se algum cliente está tentando se conectar WiFiClient client = server.available(); if (!client) { //Se não houver nenhum cliente podemos retornar pois não há nada a fazer return; }
Código fonte – Loop() – cliente conectado, obtendo requisição
Aqui executamos a leitura da
requisição.
Serial.println("Novo cliente conectou"); //Fazemos a leitura da requisição String req = client.readStringUntil('\r'); Serial.print("Requisição: "); Serial.println(req);
Código fonte – Montando o HTML que será enviado
Mostro aqui o html que iremos
retornar para o cliente, o qual é formado por dois botões (ON e OFF) para cada
relé. Vamos fazer com que a ação vinculada a cada botão chegue ao ESP, para que
este verifique qual ação deverá executar.
//Este é o html que iremos retornar para o cliente //É composto basicamente de dois botões (ON e OFF) para cada relé //A parte que nos interessa é o <a href=' com a ação vinculada a cada botão //Quando clicamos em um destes botões essa informação chegará até o ESP para //que ele verifique qual ação deve executar //A parte dentro de '<style>' é apenas para modificarmos o visual da página //que será exibida, você pode alterá-la como queira String html = "<html>" "<head>" "<meta name='viewport' content='width=device-width, initial-scale=1, user-scalable=no'/>" "<title>Controle Esp8266</title>" "<style>" "body{" "text-align: center;" "font-family: sans-serif;" "font-size:25px;" "padding: 25px;" "}" "p{" "color:#444;" "}" "button{" "outline: none;" "border: 2px solid #1fa3ec;" "border-radius:18px;" "background-color:#FFF;" "color: #1fa3ec;" "padding: 5px 25px;" "}" "button:active{" "color: #fff;" "background-color:#1fa3ec;" "}" "button:hover{" "border-color:#0000ff;" "}" "</style>" "</head>" "<body>" "<p>01 - " "<a href='?acao=Rele_01On'><button>ON</button></a>" "<a href='?acao=Rele_01Off'><button>OFF</button></a></p>" "<p>02 - " "<a href='?acao=Rele_02On'><button>ON</button></a>" "<a href='?acao=Rele_02Off'><button>OFF</button></></p>" "<p>03 - " "<a href='?acao=Rele_03On'><button>ON</button></a>" "<a href='?acao=Rele_03Off'><button>OFF</button></a></p>" "<p>04 - " "<a href='?acao=Rele_04On'><button>ON</button></a>" "<a href='?acao=Rele_04Off'><button>OFF</button></a></p>" "<p>05 - " "<a href='?acao=Rele_05On'><button>ON</button></a>" "<a href='?acao=Rele_05Off'><button>OFF</button></a></p>" "<p>06 - " "<a href='?acao=Rele_06On'><button>ON</button></a>" "<a href='?acao=Rele_06Off'><button>OFF</button></a></p>" "<p>07 - " "<a href='?acao=Rele_07On'><button>ON</button></a>" "<a href='?acao=Rele_07Off'><button>OFF</button></a></p>" "<p>08 - " "<a href='?acao=Rele_08On'><button>ON</button></a>" "<a href='?acao=Rele_08Off'><button>OFF</button></a></p>" "</body>" "</html>";
Código fonte – Mais detalhes do html...
Aqui eu mostro o código que peguei
do Browser.
Código fonte – Respondendo à requisição e alterando o estado das portas
Escrevemos o html no buffer
que será enviado ao cliente e enviamos os dados deste buffer para este cliente.
Verificamos se a requisição possui algum comando de atuação sobre os relés.
//Escreve o html no buffer que será enviado para o cliente client.print(html); //Envia os dados do buffer para o cliente client.flush(); //A partir daqui, verificamos se a requisição possui algum comando de //atuação sobre os relés if (req.indexOf("acao=Rele_01On") != -1) { digitalWrite(Rele_01, HIGH); } else if (req.indexOf("acao=Rele_01Off") != -1) { digitalWrite(Rele_01, LOW); }
if (req.indexOf("acao=Rele_08On") != -1) { digitalWrite(Rele_08, HIGH); } else if (req.indexOf("acao=Rele_08Off") != -1) { digitalWrite(Rele_08, LOW); }
Código fonte – Fechando a conexão
Por fim, aguardamos o tráfego
das informações ser concluído e fechamos a conexão com o cliente.
delay(200);//aguarda para que o trafego das informações seja concluído //Fecha a conexão com o cliente client.stop(); Serial.println("Cliente desconectado"); }
7 Comentários
Obrigado Fernando pelos seus videos
ResponderExcluirpode ajudar em como fazer um repetidor wifi com esp32
Não é possível ainda ate onde sei, da pra ampliar o sinal do esp mais usá-lo como repetidor de internet ainda não consegui rsrs
ExcluirOlá fernando,Amigo ! Vc é O KARA ! Apaixonado pelo que faz, e não nego, CONTAGIANTE!!
ResponderExcluirSeguinte, tenho muita noção de lógica, tenho formação técnica em comandos elétricos, e sou apaixonado por automação, agora ainda mais.
Socorro !! PRECISO DE UM CURSO PRESENCIAL URGENTE !! Meu cérebro já nao sabe mais se o status é higth ou low...
Depende do pino, tem pinos que ligam com LOW, isso vai depender muito do transistor que faz o acionamento, mas a regra é se não ligou com HIGH, vai ligar com LOW.
ExcluirÓtimo esse vídeo, muito bom
ResponderExcluirSeria muito massa um upgrade desse projeto, com parâmetros para acionamento do rele alem do On Off, só para não ficar um interruptor caro.
ResponderExcluirMas parabéns pelos videos, muito bem explicado.
Parabéns pela aula. Como colocar o watch dog no programa?
ResponderExcluir