Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<ESP8266WiFi.h>
- #include<WiFiClient.h>
- WiFiServer server(80);
- void setup() {
- // put your setup code here, to run once:
- //Inicializa a Serial apenas para efeito de log
- Serial.begin(115200);
- //Configura o GPIO0 e GPIO2 como output, ou seja, como
- //saída para podermos alterar o seu valor
- pinMode(5, OUTPUT);
- pinMode(4, OUTPUT);
- //Deixa o GPIO0 e o GPIO2 com saída LOW
- digitalWrite(5, 0);
- digitalWrite(4, 0);
- Serial.print("Conectando");
- //Faz o ESP se conectar à rede WiFi. Ssid é Wifi e a senha é 12345678
- WiFi.begin("Wifi", "12345678");
- 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, 2, 8);
- IPAddress gateway(192, 168, 2, 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);
- //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());
- }
- 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;
- }
- Serial.println("Novo cliente conectou");
- //Esperamos até que o cliente nos envie a requisição
- while (!client.available())
- {
- delay(100);
- }
- //Fazemos a leitura da requisição
- String req = client.readStringUntil('\r');
- Serial.print("Requisição: ");
- Serial.println(req);
- //Este é o html que iremos retornar para o cliente
- //É composto basicamente de dois botões (ON e OFF) para os pinos e dois botões (ON e OFF) para o GPIO2
- //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>ESP8266</title>"
- "<style>"
- "body{"
- "text-align: center;"
- "font-family: sans-serif;"
- "font-size:14px;"
- "padding: 25px;"
- "}"
- "p{"
- "color:#444;"
- "}"
- "button{"
- "outline: none;"
- "border: 2px solid #1fa3ec;"
- "border-radius:18px;"
- "background-color:#FFF;"
- "color: #1fa3ec;"
- "padding: 10px 50px;"
- "}"
- "button:active{"
- "color: #fff;"
- "background-color:#1fa3ec;"
- "}"
- "</style>"
- "</head>"
- "<body>"
- "<p>D1</p>"
- "<p><a href='?acao=D1On'><button>ON</button></a></p>"
- "<p><a href='?acao=D1Off'><button>OFF</button></a></p>"
- "<p>D2</p>"
- "<p><a href='?acao=D2On'><button>ON</button></a></p>"
- "<p><a href='?acao=D2Off'><button>OFF</button></a></p>"
- "</body>"
- "</html>";
- //Escreve o html no buffer que será enviado para o cliente
- client.print(html);
- //Envia os dados do buffer para o cliente
- client.flush();
- //Verifica se a requisição possui a ação gpio0On
- if (req.indexOf("acao=D1On") != -1)
- {
- //Se possui a ação D1On colocamos a saída do D1 como alta
- digitalWrite(5,1);
- }
- //Senão, verifica se a requisição possui a ação D1Off
- else if (req.indexOf("acao=D1Off") != -1)
- {
- //Se possui a ação D1Off colocamos a saída do D1 como baixa
- digitalWrite(5,0); //problema nessa linha
- }
- //Senão, verifica se a requisição possui a ação D2On
- if(req.indexOf("acao=D2On") != -1)
- {
- //Se possui a ação D2On colocamos a saída do D2 como alta
- digitalWrite(4,1);
- }
- //Senão, verifica se a requisição possui a ação gpio2Off
- else if (req.indexOf("acao=D2Off") != -1)
- {
- //Se possui a ação gpio0Off colocamos a saída do GPIO2 como baixa
- digitalWrite(4,0);
- //Fecha a conexão com o cliente
- client.stop();
- Serial.println("Cliente desconectado");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement