Olá ja pesquisei e não consegui usar meu nodemcu Webserver sem que ele trave, e não execute mais os comandos.
Por ultimo estou testando este que só modifiquei o necessário pra testar.
#include <ESP8266WiFi.h> //INCLUSÃO DA BIBLIOTECA NECESSÁRIA PARA FUNCIONAMENTO DO CÓDIGO
#define Lampada 0 // D3
#define Ventilador 2 // D4
const char* ssid = "FFP0711"; //VARIÁVEL QUE ARMAZENA O NOME DA REDE SEM FIO EM QUE VAI CONECTAR
const char* password = "ffp071113814"; //VARIÁVEL QUE ARMAZENA A SENHA DA REDE SEM FIO EM QUE VAI CONECTAR
//DEFINIÇÃO DE IP FIXO PARA O NODEMCU
IPAddress ip(192,168,0,254); //COLOQUE UMA FAIXA DE IP DISPONÍVEL DO SEU ROTEADOR. EX: 192.168.1.110 **** ISSO VARIA, NO MEU CASO É: 192.168.0.175
IPAddress gateway(192,168,0,1); //GATEWAY DE CONEXÃO (ALTERE PARA O GATEWAY DO SEU ROTEADOR)
IPAddress subnet(255,255,255,0); //MASCARA DE REDE
WiFiServer server(80); //CASO OCORRA PROBLEMAS COM A PORTA 80, UTILIZE OUTRA (EX:8082,8089) E A CHAMADA DA URL FICARÁ IP:PORTA(EX: 192.168.0.15:8082)
void setup() {
Serial.begin(115200); //INICIALIZA A SERIAL
delay(10); //INTERVALO DE 10 MILISEGUNDOS
// prepare GPIO2
pinMode(Lampada, OUTPUT); // D3
pinMode(Ventilador, OUTPUT); // D4
Serial.println(""); //PULA UMA LINHA NA JANELA SERIAL
Serial.println(""); //PULA UMA LINHA NA JANELA SERIAL
Serial.print("Conectando a "); //ESCREVE O TEXTO NA SERIAL
Serial.print(ssid); //ESCREVE O NOME DA REDE NA SERIAL
WiFi.begin(ssid, password); //PASSA OS PARÂMETROS PARA A FUNÇÃO QUE VAI FAZER A CONEXÃO COM A REDE SEM FIO
WiFi.config(ip, gateway, subnet); //PASSA OS PARÂMETROS PARA A FUNÇÃO QUE VAI SETAR O IP FIXO NO NODEMCU
while (WiFi.status() != WL_CONNECTED) { //ENQUANTO STATUS FOR DIFERENTE DE CONECTADO
delay(500); //INTERVALO DE 500 MILISEGUNDOS
Serial.print("."); //ESCREVE O CARACTER NA SERIAL
}
Serial.println(""); //PULA UMA LINHA NA JANELA SERIAL
Serial.print("Conectado a rede sem fio "); //ESCREVE O TEXTO NA SERIAL
Serial.println(ssid); //ESCREVE O NOME DA REDE NA SERIAL
server.begin(); //INICIA O SERVIDOR PARA RECEBER DADOS NA PORTA DEFINIDA EM "WiFiServer server(porta);"
Serial.println("Servidor iniciado"); //ESCREVE O TEXTO NA SERIAL
Serial.print("IP para se conectar ao NodeMCU: "); //ESCREVE O TEXTO NA SERIAL
Serial.print("http://"); //ESCREVE O TEXTO NA SERIAL
Serial.println(WiFi.localIP()); //ESCREVE NA SERIAL O IP RECEBIDO DENTRO DA REDE SEM FIO (O IP NESSA PRÁTICA É RECEBIDO DE FORMA AUTOMÁTICA)
Serial.println("/");
}
void loop() {
WiFiClient client = server.available(); //VERIFICA SE ALGUM CLIENTE ESTÁ CONECTADO NO SERVIDOR
if (!client) { //SE NÃO EXISTIR CLIENTE CONECTADO, FAZ
return; //REEXECUTA O PROCESSO ATÉ QUE ALGUM CLIENTE SE CONECTE AO SERVIDOR
}
Serial.println("Novo cliente se conectou!"); //ESCREVE O TEXTO NA SERIAL
while(!client.available()){ //ENQUANTO CLIENTE ESTIVER CONECTADO
delay(1); //INTERVALO DE 1 MILISEGUNDO
}
String request = client.readStringUntil('\r'); //FAZ A LEITURA DA PRIMEIRA LINHA DA REQUISIÇÃO
Serial.println(request); //ESCREVE A REQUISIÇÃO NA SERIAL
client.flush(); //AGUARDA ATÉ QUE TODOS OS DADOS DE SAÍDA SEJAM ENVIADOS AO CLIENTE
client.println("HTTP/1.1 200 OK"); //ESCREVE PARA O CLIENTE A VERSÃO DO HTTP
client.println("Content-Type: text/html"); //ESCREVE PARA O CLIENTE O TIPO DE CONTEÚDO(texto/html)
client.println("");
client.println("<!DOCTYPE HTML>"); //INFORMA AO NAVEGADOR A ESPECIFICAÇÃO DO HTML
client.println("<html>"); //ABRE A TAG "html"
client.println("<h1><center>OLA FERNANDO!</center></h1>"); //ESCREVE "Ola cliente!" NA PÁGINA
client.println("<center><font size='5'>SEJA BEM VINDO!</center>"); //ESCREVE "Seja bem vindo!" NA PÁGINA
client.println("</html>"); //FECHA A TAG "html"
delay(1); //INTERVALO DE 1 MILISEGUNDO
Serial.println("Cliente desconectado"); //ESCREVE O TEXTO NA SERIAL
Serial.println(""); //PULA UMA LINHA NA JANELA SERIAL
if(request.indexOf("Lampada") != -1) {
digitalWrite(Lampada, ! digitalRead(Lampada));
}
if(request.indexOf("Ventilador") != -1) {
digitalWrite(Ventilador, ! digitalRead(Ventilador));
}
if(request.indexOf("todos") != -1) {
digitalWrite(Lampada, LOW);
digitalWrite(Ventilador, LOW);
}
//client.println("");
if(digitalRead(Lampada)){
client.print("<center><font '5'>Lampada.on</center>");
} else {
client.print("<center><font '5'>Lampada.off</center>");
client.println("");
}
//client.println("");
if(digitalRead(Ventilador)){
client.print("<center><font '5'>Ventilador.on</center>");
} else {
client.print("<center><font '5'>Ventilador.off</center>");
}
if(digitalRead(Lampada)){
client.print("<center><font '5'>todos</center>");
} else {
client.print("<center><font '5'>todos.off</center>");
}
delay(1);
Serial.println("Client disonnected");
Serial.println("");
}
Tags:
Olá,
Tenho muitas aplicações com ESP sem travamentos, mas todas usando linguagem MQTT e brokers e node-red, não html,
Um exemplo no meu canal é este AQUI último tutorial cuja documentação deixei disponível no meu Github. Link na descrição do vídeo.
Uma outra boa alternativa é usar a função,
{
ESP.wdtFeed();
}
No ESP32 já não é necessário.
Para receber uma ajuda melhor por favor trate de adequar sua postagens a estas regras do forum http://labdegaragem.com/forum/topics/sugest-o-de-como-postar
Abs.
CK
Muito obrigado, sou novo nessa parte vou pesquisar e tentar fazer com linguagem MQTT e brokers valeu abraços...
Por nada disponha.
Abs.
CK
amigo essa função e colocada no fim do sktech ??? fale mais sobre esse reset por favor
na hora de compilar ele não vai resetar no meio do processo não ???
Bom dia ,
Você sabe que esta provocando o travamento ? É por causa do Hardware ou do Software?
Uma alternativa para sobrepor esse travamento, seria usar um monitor cão de guarda (Watch-dog).
Com um outro Microcontrolador (ESP8266, Arduino, etc) você poderia conferir se o NodeMCU esta vivo.
Se o ModeMCU travar e não responder , o Monitor cão de guarda dá um reset nele ! Serveria ?
Olá, eu testei 3 NodeMCU no caso acho que poderia ser o software, eu sou novo nessa área não tenho nenhum estudo em relação a isto, estou pesquisando e tentando fazer.
Pra mim qualquer solução me ajudaria no momento.
Desde já muito obrigado!
Bom dia,
Informe como fez a montagem do seu NodeMCU. Qual fonte esta usando ? USB ?
Tem algum outro módulo conectado ?
Link, fotos,etc.
Boa noite!
Eu estou alimentando a placa via usb, minha intenção é motar ela com reles ligados em lampadas.
Bom dia ,
Tem algum módulo conectado ? Tem algum módulo de relé conectado? Qual ? (envie o link)
Boa noite!
Tem sim.
Boa noite , esse módulo de relé é para 5V. Use uma fonte de 5V .
Não use a USB. O ruido eletrico provocado pelo acionamento do relé pode travar até Arduino.
Como fez a montagem do circuito ?
No momento troquei os reles por leds, e mesmo assim trava, o NodeMcu ta ligado no note via usb e coloquei dois leds representando os reles.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por