Como acender lâmpadas via Wifi?

Neste projeto você vai aprender como ligar e desligar lâmpadas via Wifi de forma bem fácil, vamos utilizar uma placa NodeMCU, uma fonte para protoboard  e um módulo relé  5v com 4 saídas.

1-Ligações

As ligações sem as lâmpadas ficam assim.

As lâmpadas devem ser ligadas igual o nosso projeto de acionamento via Bluetooth.

Se você ainda não configurou seu Arduino IDE para trabalhar com o NodeMCU veja nosso post “Como configurar o Arduino IDE para trabalhar com o NodeMCU

3 – Definindo o algorítimo de comando.

O algorítimo usado pra o acionamento está logo abaixo.

//—————————————————————–início———————————————————————————————-

#include <Servo.h>
#include <ESP8266WiFi.h>

Servo myservo;// criar o dispositivo servo

//Nome da sua rede Wifi
const char* ssid = “nome da sua rede wifi”;

//Senha da rede
const char* password = “senha da rede”;

//IP do ESP (para voce acessar pelo browser)
IPAddress ip(192,168,100,200); // este ip deve ser parecido ao ip do seu computador mudando somente o final da numeração

//IP do roteador da sua rede wifi
IPAddress gateway(192,168,100,1);

//Mascara de rede da sua rede wifi
IPAddress subnet(255, 255, 255, 0);

//Criando o servidor web na porta 80
WiFiServer server(80);

//Funcao que sera executada apenas ao ligar o ESP8266
void setup() {

Serial.begin(115200);
delay(10);
//Preparando o GPIO2 onde estão ligadas as lâmpadas
pinMode(D1, OUTPUT);
pinMode(D2, OUTPUT);
pinMode(D3, OUTPUT);
pinMode(D4, OUTPUT);
//Garantindo que as portas estejam desligadas ao iniciar o sistema, quando recebe 1 a porta desliga
digitalWrite(D1, 1);
digitalWrite(D2, 1);
digitalWrite(D3, 1);
digitalWrite(D4, 1);

// resposta na serial sobre o status da conexão wifi
Serial.println();
Serial.println();
Serial.print(“Connecting to “);
Serial.println(ssid);

//Conectando a rede Wifi
WiFi.config(ip, gateway, subnet);
WiFi.begin(ssid, password);

//Verificando se esta conectado,
//caso contrario, espera um pouco e verifica novamente.
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“.”);// durante a tentativa de conexão será gerado um ponto final a cada tentativa
}
Serial.println(“”);
Serial.println(“WiFi connected”);

//Iniciando o servidor Web
server.begin();
Serial.println(“Server started”);

// Print the IP address
Serial.println(WiFi.localIP());
}

//Função que sera executada indefinidamente enquanto o ESP8266 estiver ligado.
void loop() {

//Verificando se o servidor esta pronto.
WiFiClient client = server.available();
if (!client) {
return;
}

//Verificando se o servidor recebeu alguma requisicao
Serial.println(“new client”);
//while (!client.available()) {
//delay(1);
//}

//Obtendo a requisição vinda do browser
String req = client.readStringUntil(‘\r’);
client.flush();

//Iniciando o buffer que ira conter a pagina HTML que será enviada para o browser.
String buf = “”;

buf += “HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\n”;
buf += “<h3>ESP8266 Servidor Web</h3>”;
buf += “<p>L1 <a href=\”?function=L1_on\”><button>LIGA</button></a><a href=\”?function=L1_off\”><button>DESLIGA</button></a></p>”;
buf += “<p>L2 <a href=\”?function=L2_on\”><button>LIGA</button></a><a href=\”?function=L2_off\”><button>DESLIGA</button></a></p>”;
buf += “<p>L3 <a href=\”?function=L3_on\”><button>LIGA</button></a><a href=\”?function=L3_off\”><button>DESLIGA</button></a></p>”;
buf += “<p>L4 <a href=\”?function=L4_on\”><button>LIGA</button></a><a href=\”?function=L4_off\”><button>DESLIGA</button></a></p>”;
buf += “<h1>www.eletronicaeprogramacao.com</h1>”;
buf += “</html>\n”;

//Enviando para o browser a ‘pagina’ criada.
client.print(buf);
client.flush();

//Analisando a requisicao recebida para decidir se liga ou desliga
/////////////////////////////////////////////////////////////////////
if (req.indexOf(“L1_on”) != -1)
{
digitalWrite(D1, 0);
}
else if (req.indexOf(“L1_off”) != -1)
{
digitalWrite(D1, 1);
}

//////////////////////////////////////////////////////////////////////

if (req.indexOf(“L2_on”) != -1)
{
digitalWrite(D2, 0);
}
else if (req.indexOf(“L2_off”) != -1)
{
digitalWrite(D2, 1);
}

//////////////////////////////////////////////////////////////////////

if (req.indexOf(“L3_on”) != -1)
{
digitalWrite(D3, 0);
}
else if (req.indexOf(“L3_off”) != -1)
{
digitalWrite(D3, 1);
}

//////////////////////////////////////////////////////////////////////

if (req.indexOf(“L4_on”) != -1)
{
digitalWrite(D4, 0);
}
else if (req.indexOf(“L4_off”) != -1)
{
digitalWrite(D4, 1);
}

//////////////////////////////////////////////////////////////////////

else
{
//Requisicao invalida!
client.stop();
}

}

//—————————————————————————–fim——————————————————————————

Copie este algorítimo e modifique se achar necessário, está bem comentado para facilitar o entendimento, ele cria uma página dentro do NodeMCU e você pode acessar de qualquer computado ou celular dentro da mesma rede digitando o IP que você configurou no algorítimo.

4- Recomendações

É altamente recomendável o uso da fonte externa pois o consumo do módulo relé pode chegar a 220 mA, que para a saída USB do computador já é muito, o não uso pode levar a queima da saída USB.

É necessário conectar os negativos da fonte e do NodeMCU para funcionar corretamente.

Caso queira usar a placa desconectada do PC é só desligar o cabo USB e conectar o positivo 5v da fonte ao pino VIN do NodeMCU.

Dependendo do modelo de sua placa do NodeMCU você precisará instalar o drive CH340 e identificar a porta  correta utilizada.

Clique no link e instale o driver, em alguns casos o programa identifica a porta correta e conecta automaticamente, mas se isso não ocorre vá no gerenciador de dispositivos identifique o drive instalado e veja a porta correta.

5 thoughts on “Como acender lâmpadas via Wifi?”

    1. Olá, obrigado por entrar em contato!
      Esta placa que usei é um pouco superior ao Arduino e facilita muito por ter wifi integrado, além de ficar mais em conta.
      Tenho alguns projetos em Arduino também, logo vou posta-los.

    1. Boa tarde José Luiz, está tudo na postagem, é só clicar nos textos em azul e baixar, todos os códigos estão disponíveis, assim como o aplicativo e o projeto do aplicativo para edição.

Os comentários estão fechados.