NODEMCU Wifi

Before creating the topic

  1. Search forum for similar topics
  2. Check http://docs.blynk.cc and http://help.blynk.cc/
  3. Add details :
    • Hardware model + communication type. For example: Arduino UNO with Ethernet Shield
    • Smartphone OS (iOS or Android) + version
    • Blynk server or local server
    • Blynk Library version
    • Add your sketch code. :point_up:Code should be formatted as example below.

Simply paste your code between ``` If you don’t format your code, your topic can be deleted by moderators.


Bom dia!!!

Estou montando um projeto para minha casa, onde quero usar o Blynk, ota e ip fixo para comandar pelo jarvis.
O problema é que quando coloco o Blynk no sketch após em média 1 hora os reles desligam sozinhos.
Alguém pode me ajudar? Desde já agradeço!!

Segue abaixo Sketch....
//////////////////////////////////////BLYNK//OTA//IPFIXO///////////////////////////////////////////////////////
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include <BlynkSimpleEsp8266.h>
char auth[] = ".......................................";
const char* ssid = "..............";
const char* password = ".................";

/////////////////////////////////INICIO - DEFINE IP FIXO///////////////////////////////////////////
//DEFINIÇÂO DE IP FIXO PARA NODEMCU                                                              //
IPAddress ip(192,168,0,...);    // COLOQUE UMA FAIXA DE IP DISPONIVEL DA SUA REDE                //
IPAddress gateway(192,168,0,...); // GATEWAY DE CONEXÂO (ALTERE PARA O GATEWAY DO SEU ROTEADOR     //
IPAddress subnet(255,255,255,0);    // MASCARA DE REDE                                           //
WiFiServer server(80);                                                                           //
/////////////////////////////////FIM - DEFINE IP FIXO//////////////////////////////////////////////

/////////////////////////////////////BLYNK//OTA////////////////////////////////////////////////////////////
#define Lampada 4     // D2
#define Ventilador 16  // D1

//////////////////////////////////////////////////////////////// INICIO DO SETUP //////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
/////////////////////////////////////////////////////////////// INICIO DO OTA /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  Serial.begin(115200);
  Serial.println("Booting");
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Connection Failed! Rebooting...");
    delay(5000);
    ESP.restart();
  }
  // Port defaults to 8266
  // ArduinoOTA.setPort(8266);
  // Hostname defaults to esp8266-[ChipID]
   ArduinoOTA.setHostname("myesp8266");//////// DEFINI O NOME DO MICROCONTROLADOR A SER USADO PELO OTA ////////////
  // No authentication by default
   ArduinoOTA.setPassword(".........");////////////// DEFINE UMA SENHA PARA ENVIO DO CÓDIGO VIA OTA ////////////////////
  // Password can be set with it's md5 value as well
  // MD5(admin) = 21232f297a57a5a743894a0e4a801fc3
   ArduinoOTA.setPasswordHash("21232f297a57a5a743894a0e4a801fc3");////////// CRIPTOGRAFIA DA SENHA ///////////////////

  ArduinoOTA.onStart([]() {
    String type;
    if (ArduinoOTA.getCommand() == U_FLASH)
      type = "sketch";
    else // U_SPIFFS
      type = "filesystem";
      
    // NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()
    Serial.println("Start updating " + type);
  });
  ArduinoOTA.onEnd([]() {
    Serial.println("\nEnd");
  });
  ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
    Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
  });
  ArduinoOTA.onError([](ota_error_t error) {
    Serial.printf("Error[%u]: ", error);
    if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
    else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
    else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
    else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
    else if (error == OTA_END_ERROR) Serial.println("End Failed");
  });
  ArduinoOTA.begin();
  Serial.println("Ready");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
///////////////////////////////////////////////////////////////////////// FIM DO OTA //////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////// BLYNK ////////////////////////////
  // Debug console                                                     //
  //Serial.begin(9600);                                                //
  Blynk.begin(auth, ssid, password);                                   //
  // You can also specify server:                                      //
  //Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 80);              //
  //Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080);     //
/////////////////////////////////////BLYNK///////////////////////////////

//////////////////////////////////////////////////////////////////////// INICIO -SETUP INICIALIÇÂO DA CONEXÃO COM IP FIXO /////////////////////////////////////////////////////////////////
     // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Conectando com ");
  Serial.println(ssid);
  
  WiFi.begin(ssid, password);
  WiFi.config(ip, gateway, subnet);
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi conectado");
  
  // Start the server
  server.begin();
  Serial.println("Servidor iniciado em: ");

  // Print the IP address
  Serial.println(WiFi.localIP());
/////////////////////////////////////////////////// FIM -SETUP INICIALIÇÂO DA CONEXÃO COM IP FIXO//////////////////////////////////////////////////////////////////////////////////////////

 // prepare GPIO
  pinMode(Lampada, OUTPUT); // D2
  pinMode(Ventilador, OUTPUT); // D1

///////////////////////////////////INICIO - INICIALIZA PINOS LIGADOS OU DESLIGADOS/////////////////////////////////////////////////////////////////////////////////////////////////////////
  digitalWrite(Lampada, HIGH);
  digitalWrite(Ventilador, HIGH);
///////////////////////////////////FIM - INICIALIZA PINOS LIGADOS OU DESLIGADOS///////////////////////////////////////////////////////////////////////////////////////////////////////////
  
}
//////////////////////////////////////////////////////////////// FIM DO SETUP //////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////// INICIO DO VOID LOOP //////////////////////////////////////////////////////////////////////////////////////////////////////////////
void loop() {
////////////OTA//////////////////
  ArduinoOTA.handle();
  delay(2000);                  //
////////////OTA//////////////////
///////////////BLYNK/////////////
  Blynk.run();
  delay(2000);                  //
//////////////BLYNK//////////////

// Verifique se um cliente se conectou
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
  
// Aguarde até que o cliente envie alguns dados
  Serial.println("Cliente encontrado");
  while(!client.available()){
    delay(1);
  }
  
// Leia a primeira linha da solicitação
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();
  
////////////////////////////////////////INICIO -LOOP PROGRAMAÇÂO PARA NAVEGADOR E JARVIS///////////////////////////////////////////////////////////////////////////////////////////////////
   
   if(request.indexOf("Ventilador") != -1) {
     digitalWrite(Ventilador, ! digitalRead(Ventilador));
  }

  if(request.indexOf("Lampada") != -1) {
     digitalWrite(Lampada, ! digitalRead(Lampada));
  }
  
///// /////////////////////////////////////INICIO -LOOP PROGRAMAÇÂO PARA NAVEGADOR E JARVIS////////////////////////////////////////////////////////////////////////////////////////////////

  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); 
  delay(1);
}
//////////////////////////////////////////////////////// FIM DO VOID LOOP //////////////////////////////////////////////////////////////////////////////////////////////////////////////

Não vejo nada no seu código que use alguma função do Blynk, botão, ou display, etc… Para que você está usando?

O que o terminal mostra?

Por último, Blynk provavelmente está desconectando devido aos múltiplos delay() usados, fazendo sua placa reiniciar. Também pode ser algo com a sua fonte de alimentação.

1 Like

That way I can control the ports with Blynk and also with Jarvis, the only problem is the reboot.

Well… you can start taking the delay(2000); from your code and checking power supply.

You can add some Serial.print in order to find out where your code is rebooting.

1 Like