Aprenda a controlar o módulo relé com ESP8266
Fala galera, tudo beleza?
O post de hoje, veio com intuito de exemplificar uma aplicação básica e simplória da IoT, partindo de um principio para automatizar sua casa, empresa, laboratório ou apenas por diversão mesmo.
Caso a seu modem, roteador apresente algum problema( travamento), o que nos garantiria que ele voltaria a funcionar sem aquele reset fundamental?
Com isso, através de componentes simples e baratos, que todo maker deve ter, automatizar o reset de seu modem/roteador para resolver aquele velho problema de travamento.
Vamos aos trabalhos!
Materiais Utilizados:
Montagem:
- Não podemos esquecer que, para o roteador iniciar ligado devemos conectar o pino NC(Normally Closed) – Normalmente Fechado , em tradução livre.
Para saber mais sobre o módulo relé, dê uma olhadinha nesse post aqui.
Código Comentado:
#include <ESP8266WiFi.h> float id = 1; // Declaração de uma variavel de identificação const char* ssid = "sua-rede"; // Nome e senha da sua rede wifi const char* password = "sua-senha"; WiFiServer server(80); IPAddress ip(192,168,x,x); //Configuração de IPFixo no seu dispositivo ESP8266 IPAddress gw(192,168,x,x); IPAddress sub(255,255,xxx,x); //IPAddress dns(123,456,xxx,x); int rele = 2; //GPI02 // Declaração da porta digital do relé void setup() { Serial.begin(9600); pinMode(rele, OUTPUT); // Declara o relé como uma saída delay(10); Serial.println(); Serial.println(); Serial.print("Conectando à "); Serial.println(ssid); WiFi.begin(ssid, password); WiFi.mode(WIFI_STA); // torna o ESP8266 apenas um ponto "Station"(Sem acesso à conexões) WiFi.config(ip,gw,sub); Serial.println(WiFi.localIP()); while (WiFi.status() != WL_CONNECTED) { for(int i = 0 ; i<=20 ; i++); delay(500); Serial.println("."); if(i>=20){ digitalWrite(rele, !digitalRead(rele)); // caso o laço, ultrapasse o limite de 20, entra na condição de resetar, através do "desarme" do relé(desligando o roteador) delay(30000); digitalWrite(rele, !digitalRead(rele)); // Aguarda 30s, e "arma" o relé, ligando o modem/roteador } } Serial.println(""); Serial.println("WiFi conectado"); server.begin(); Serial.println("Server iniciou"); Serial.println(WiFi.localIP()); } void loop() { if (!client) { return; } Serial.println("NOVO CLIENTE"); while(!client.available()){ for(int i = 0 ; i<10 ; i++); delay(1500); Serial.println("."); if(i>=10){ digitalWrite(rele, !digitalRead(rele)); delay(30000); digitalWrite(rele, !digitalRead(rele)); } } String req = client.readStringUntil('\r'); Serial.println(req); //client.flush(); String buf = ""; buf += id; // envia o menor caracter possivel, para um webserver para fins de verificação de conexão. client.print(buf); //client.flush(); Serial.println("Cliente desconectado"); delay(10000); //Espera 10s para que todo o ciclo se repita. }
Conclusão:
Uma introdução básica à IoT, facilitando para quem deseja reiniciar o roteador, sem ter que colocar a mão rs.
É interessante sua aplicação, à modem WiFi/3G que necessitam ser reinciados, praticamente todos os modelos, à cada 24h.
O que acharam? Legal? Divertido? Um tédio?
Deixe seu comentário ai embaixo, seu joinha no nosso Facebook – e não perca o nosso próximo post.
CYA :D.
Resolvi colocando um resistor de 1K entre emissor e gnd, assim dando estabilidade no amplificador(2n222).
Boa noite, Jhomas! Ainda bem que deu certo, obrigda por compartilhar sua experiência conosco.
Qual webserver que o exemplo vai enviar o caracter de verificação?
Olá meu nome é Rubens sou engenheiro de sistemas e computação pela UERJ e amo robótica, infelizmente devido a outras prioridades no momento só tenho tempo de praticar como hobby aos finais de semana.
Obrigado por compartilhar seu projeto estava procurando algo como isto para resolver o infindável problema de reiniciar o roteador rsrsrs. Vou testar sua solução aqui.
Continue com o excelente trabalho Iago.