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("");
}

Exibições: 2796

Responder esta

Respostas a este tópico

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.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço