Desconexiones y conexiones de esp 32

hola buenos dias. Estoy haciendo un proyecto de llamada de mantenimimento al un puesto determinado y necesito que sea sin cables y para eso tengo un router y dos esp 32 mas la aplicacion de Blynk 2.0 .Los instale en una fabrica con bastante ruido electromagnetico el caso es que cuando lo ejecuto fuera de fabrica se conecta como a 100m del router pero en fabrica lo pongo a 15m y tiene muchas desconexiones cada 2 mint aprox cuando lo instale de nuevas no tenia problemas fue a la semana mas o menos.
Bueno al grano y la pregunta es. ¿el problema es del canal que uso o puede ser del codigo (que no se si por codigo el esp se desconecta)? me han comentado que tengo que eliminar los delay y limpiar el loop pero como no hay mucha información sobre blynk 2.0 en la web en el foro no me dan muchas opciones. y yo estoy estancado he cambiado de esp8266 a esp 32 y sigue igual les he puesto antena externa. tambien queria cambiar el puerto de recepcion pero no se como hacerlo en la aplicacion de blynk os dejo el codigo por si me dais algunas opciones. gracias por lo que me podais aportar un saludo.

//14 aceite bajo
//35 analogica entrada temperatura 10k a ,masa y potenciometro de 100k puesto a 21k
//4 baliza roja
//12 llamada operario
//32 conteo caja
//33 final de averia
//pantalla lcd 128x64 st 7920---------------
//BLK-GND
//BLA-3,3v
//RST-22
//PBS-GND
//E  -18
//R/W-23
//RS -5
//VCC-5v
//GND-GND 
#define BLYNK_TEMPLATE_ID ""
#define BLYNK_DEVICE_NAME ""
#define BLYNK_FIRMWARE_VERSION        "0.1.0"
#define BLYNK_PRINT Serial
//#define BLYNK_DEBUG
#define APP_DEBUG
#define USE_WROVER_BOARD
#include "BlynkEdgent.h"
#include <Arduino.h>
#include <U8g2lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
unsigned long h;
int i = 0;
int j = 0;
int l = 0;
int n = 0;
int r = 0;
int k = 0;
int o = 0;
int q = 0;
int w = 0;
int x = 0;
int z = 0;
U8G2_ST7920_128X64_F_SW_SPI u8g2(U8G2_R0, /* clock=*/ 18, /* data=*/ 23, /* CS=*/ 5, /* reset=*/ 22); // ESP32 ACTUAL
int luzboton = 21;
int aceitedepo = 14;

unsigned long tiempo_guardado = 0 ;
unsigned long tiempo_guardado1 = 0 ;

int ma = 0;
float temp = 35; //etiqueta para lectura anal�gica PARA SENSOR DE TEMPERAURA
int y = 0;
//---------------------------------pines virtuales para la placa hacia la aplicacion
BLYNK_WRITE(V5) { //luz de botonera
  int pinValue = param.asInt();
  digitalWrite(luzboton, pinValue);
}
BLYNK_WRITE(V6) { //SENSOR MINIMO ACEITE DEL DEPOSITO esta asociada a la aplicacion atraves de V0 y V0 es correo
  int pinValue = param.asInt();//asocia pinValue a un entero en este caso es V0 que es pin 5 de wemos que D1
  digitalWrite(aceitedepo, pinValue);//V0 es correo
}
//-------------------------------------boleanos para los leds de la aplicacion.

BlynkTimer timer;
WidgetLED led3(V2);//ESTE ES EL LED DE LA BALIZA ROJA ES UN BOLEANO QUE VIGILA LA SEÑAL PARA CAMBIAR DE ESSTADO

boolean btnState = false;
void ledblynk()
{

  boolean isPressed = (digitalRead(4) == HIGH);

  if (isPressed != btnState) {
    if (isPressed) {
      led3.on();
      r = 1;
    } else {
      led3.off();
      r = 0;
    }
    btnState = isPressed;
  }
}
WidgetLED led4(V3);//ESTE ES EL LED DE LLAMADA DE OPERARIO ES UN BOLEANO QUE VIGILA LA SEÑAL PARA CAMBIAR DE ESSTADO

boolean btnState1 = false;
void ledblynk1()
{

  boolean isPressed = (digitalRead(12) == HIGH);

  if (isPressed != btnState1) {
    if (isPressed) {
      led4.on();
      k = 1;
    }
    btnState1 = isPressed;
  }
}
WidgetLED led5(V6);//ESTE ES EL LED DE NIVEL MINIMO DE DEPOSITO ES UN BOLEANO QUE VIGILA LA SEÑAL PARA CAMBIAR DE ESSTADO

boolean btnState2 = false;
void ledblynk2()
{

  boolean isPressed = (digitalRead(14) == HIGH);

  if (isPressed != btnState2) {
    if (isPressed) {
      led5.off();
      unsigned long tiempo = millis();
      tiempo_guardado = tiempo;
    } else {
      led5.on();
      q = 0;
    }
    btnState2 = isPressed;
  }
}

WidgetLED led6(V5);//ESTE ES EL LED de conteo de las cajas rodadas

boolean btnState3 = false;
void ledblynk3()
{
unsigned long tiempo = millis();
  boolean isPressed = (digitalRead(32) == LOW);

  if (isPressed != btnState3) {
    if (isPressed) {
      led6.off();    
    } else {
      led6.on();     
      tiempo_guardado1 = tiempo;
      x = 1;
      delay(100);
    }
    btnState3 = isPressed;
  }
}


void setup()
{
   Serial.begin(115200);
  u8g2.begin();
  //-----------------------------------------LOGO DE JOHN DEERE Y SERVEO
  logo();
  delay(1000);
  timer.setInterval(1000L, ledblynk);
  timer.setInterval(1000L, ledblynk1);
  timer.setInterval(1000L, ledblynk2);
  timer.setInterval(1000L, ledblynk3);


  BlynkEdgent.begin();
  pinMode(luzboton, OUTPUT);
  pinMode(4, INPUT_PULLDOWN);
  pinMode(12, INPUT_PULLDOWN);
  pinMode(32, INPUT_PULLDOWN);
  pinMode(33, INPUT_PULLDOWN);
  
}

void loop() {
  BlynkEdgent.run();
   timer.run();
  unsigned long tiempo = millis();
    //--------------------------------pines virtuales a aplicacion.

  int llamadaoperario = 0;
  llamadaoperario = digitalRead(12);//  12 LLAMADA OPERARIO ES U positivo LA SEÑAL ES DE ENTRADA
  if ( (llamadaoperario == HIGH) && ( k == 1) && (o == 0))
  {
    digitalWrite(luzboton, HIGH);
    Serial.println("se ha pulsado boton de llamada");
    Blynk.logEvent("llamaope");
    ledblynk1();
    o = 1;
    Serial.print("estado k llamada    ");
    Serial.println(k);
    Serial.print("estado o llamada    ");
    Serial.println(o);
    delay(5000);

  }
  //--------------------------------------parpadeo del boton cuando esta activa la averia
  int lb = 0;
  lb = digitalRead(21);//parpadeo del la luz de la botonera
  if (lb == HIGH) {
    digitalWrite(luzboton, LOW);
    delay(300);
    digitalWrite(luzboton, HIGH);
    delay(300);
  }
  //--------------------------------------cuenta caja cada vez que se rueda 5 minutos seguidos para llevar preventivos en cuenta


  int cuenta = digitalRead(32);//conteo cajas
  if ((cuenta == 1) && (tiempo - tiempo_guardado1 >= 300000) && (btnState3 == LOW) && (x == 1)) {
    w++;
    z++;
    x = 0;
    delay(200);
    Serial.print("caja rodada ");
    
  }
  Blynk.virtualWrite(V1, w);
  Blynk.virtualWrite(V8, z);
  //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  Blynk.virtualWrite(V7, 33);//  final averia ES positivo LA SEÑAL DE ENTRADA
  int finalaveria = 0;
  finalaveria = digitalRead(33);
  if  ((finalaveria == HIGH) && (o == 1))
  {

    led4.off();

    Serial.println("se ha terminado la averia");
    Blynk.logEvent("finalaveria");
    o = 0;
    digitalWrite(luzboton, LOW);
    delay(5000);
    Serial.print("estado k terminada   ");
    Serial.println(k);
    Serial.print("estado o terminada   ");
    Serial.println(o);

  }
  //++++++++++++++++++++++++++++++++++resear contador dos botones pulsados a la vez pulsado 10 segundos
  if ((finalaveria == HIGH) && (llamadaoperario == HIGH))
  {
    w = 0;
    digitalWrite(luzboton, HIGH);
    delay(200);
    digitalWrite(luzboton, LOW);
    delay(200);
    digitalWrite(luzboton, HIGH);
    delay(200);
    digitalWrite(luzboton, LOW);
  }

  //++++++++++++++++++++++++++++++++++analogica de temperatura
  int pot = 0;
  pot = analogRead(temp);
  y = map(pot, 0, 4095, 0, 100); //funci�n map para escalado
  //delay(1000);
  Blynk.virtualWrite(V0, y);
  //Serial.println(y);
  if ( y >= 80)
  {
    Serial.println("temperatura alta");
    Blynk.logEvent("tempalta");
    delay(100);
  }
  //A ACTVAR CUANDO EL PROTOTIPO ESTE CORRECTO
  /* int ram=0;
    ram=digitalRead(luzboton);
     if ( (ram==HIGH)&&(y<=80))
    {
     digitalWrite(5,HIGH);
      Serial.println("resistencias apagadas manualmante");
      Blynk.logEvent("aparesis");
       delay(2000);
    }
  */


  if ((tiempo - tiempo_guardado >= 10000) && (btnState2 == 1) && (q == 0)) //envia a los 10 segundos de falta de aceite
  { //para evitar parpadeos del sensor
    q = 1;
    Serial.println("bajo  nivel de aceite");
    Blynk.logEvent("minimoaceite");
    delay(100);
    ledblynk2();
    delay(2000);
    Serial.print("estado q llamada    ");
    Serial.println(q);

  }
  int bl = 0;//  D2 BALIZA ROJA ACTIVA  LA SEÑAL DE ENTRADA ES positivo
  bl = digitalRead(4);
  if ( (bl == HIGH) && (r == 0))
  {
    Serial.println("baliza roja encendida");
    Blynk.logEvent("balizaroja");
    ledblynk();
    delay(2000);
    Serial.print("estado r baliza roja ");
    Serial.println(r);
  }
  h = digitalRead(14); // SENSOR DE ACEITE ES POSITIVO LA SEÑAL DE ENTRADA
  i = digitalRead(26); //  CONTEO DE PRUEBAS REALIZADAS
  j = digitalRead(12); //  LLAMADA OPERARIO ES un positivo LA SEÑAL ES DE ENTRADA
  l = digitalRead(4); //   BALIZA ROJA ACTIVA  LA SEÑAL DE ENTRADA ES positivo
  n = digitalRead(33); // final averia ES positivo LA SEÑAL DE ENTRADA
  //-----------------------------------DIBIJO DE CUADROS Y SEÑALES DE ENTRADA Y SALIDA
  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 0, 128, 10, 0);
  u8g2.setFont(u8g2_font_u8glib_4_hr);
  u8g2.drawStr(4, 7, "ENTRADAS Y SALIDAS ");
  u8g2.drawStr(92, 7, "ESTADO");
  u8g2.drawStr(4, 17, "SENSOR DE ACEITE.......");
  u8g2.drawStr(4, 25, "NUMERO DE RODAJES....");
  u8g2.drawStr(4, 33, "LLAMADA OPERARIO.....");
  u8g2.drawStr(4, 41, "BALIZA ROJA........");
  u8g2.drawStr(4, 49, "FINAL AVERIA.............");
  u8g2.drawStr(4, 59, "TEMPERATURA ACEITE");
  u8g2.drawRFrame(0, 9, 90, 55, 0);
  u8g2.drawRFrame(89, 0, 39, 64, 0);
  if (h == 0) {
    u8g2.setCursor(93, 17);
    u8g2.print("LLENO");
  }
  if (h != 0) {
    u8g2.setCursor(93, 17);
    u8g2.print("FALTA");
  }

  u8g2.setCursor(93, 25);
  u8g2.print(w);

  if (j == 0) {
    u8g2.setCursor(93, 33);
    u8g2.print("NO PULS");
  }
  if (j != 0) {
    u8g2.setCursor(93, 33);
    u8g2.print("PULSADO");
  }
  if (l != 0) {
    u8g2.setCursor(93, 41);
    u8g2.print("ACTIVA");
  }
  if (l == 0) {
    u8g2.setCursor(93, 41);
    u8g2.print("NO ACTV");
  }
  if (n != 0) {
    u8g2.setCursor(93, 49);
    u8g2.print("PULSADO");
  }
  if (n == 0) {
    u8g2.setCursor(93, 49);
    u8g2.print("NO PULS");
  }

  u8g2.setFont(u8g2_font_courB10_tf);
  u8g2.setCursor(100, 61);
  u8g2.print(y);
  u8g2.sendBuffer();
  //Serial.print("estado k final  ");
  //Serial.println(k);
  //Serial.print("estado o final  ");
  //Serial.println(o);
  //Serial.print("estado r final  ");
  //Serial.println(r);
  //Serial.print("estado q final    ");
  //Serial.println(q);
  //Serial.print("estado w final    ");
  //Serial.println(w);
}

void logo()
{
  //-----------------------------------------LOGO DE JOHN DEERE Y SERVEO
  u8g2.setFont(u8g2_font_lucasarts_scumm_subtitle_r_tf);
  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 46, 128, 64, 7);
  u8g2.drawStr(4, 60, "SERVEO    ");
  u8g2.drawStr(0, 80, "in association ");
  u8g2.drawStr(0, 100, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();

  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 44, 128, 64, 7);
  u8g2.drawStr(4, 58, "SERVEO     ");
  u8g2.drawStr(0, 78, "in association ");
  u8g2.drawStr(0, 98, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();

  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 42, 128, 64, 7);
  u8g2.drawStr(4, 56, "SERVEO    ");
  u8g2.drawStr(0, 76, "in association ");
  u8g2.drawStr(0, 96, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();


  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 40, 128, 64, 7);
  u8g2.drawStr(4, 54, "SERVEO    ");
  u8g2.drawStr(0, 74, "in association ");
  u8g2.drawStr(0, 94, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();

  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 38, 128, 64, 7);
  u8g2.drawStr(4, 52, "SERVEO    ");
  u8g2.drawStr(0, 72, "in association ");
  u8g2.drawStr(0, 92, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();

  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 36, 128, 64, 7);
  u8g2.drawStr(4, 50, "SERVEO    ");
  u8g2.drawStr(0, 70, "in association ");
  u8g2.drawStr(0, 90, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();

  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 34, 128, 64, 7);
  u8g2.drawStr(4, 48, "SERVEO     ");
  u8g2.drawStr(0, 68, "in association ");
  u8g2.drawStr(0, 88, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();

  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 32, 128, 64, 7);
  u8g2.drawStr(4, 46, "SERVEO   ");
  u8g2.drawStr(0, 66, "in association ");
  u8g2.drawStr(0, 86, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();

  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 30, 128, 64, 7);
  u8g2.drawStr(4, 44, "SERVEO    ");
  u8g2.drawStr(0, 64, "in association ");
  u8g2.drawStr(0, 84, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();

  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 28, 128, 64, 7);
  u8g2.drawStr(4, 42, "SERVEO    ");
  u8g2.drawStr(0, 62, "in association ");
  u8g2.drawStr(0, 82, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();

  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 26, 128, 64, 7);
  u8g2.drawStr(4, 40, "SERVEO   ");
  u8g2.drawStr(0, 60, "in association ");
  u8g2.drawStr(0, 80, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();

  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 24, 128, 64, 7);
  u8g2.drawStr(4, 38, "SERVEO   ");
  u8g2.drawStr(0, 58, "in association ");
  u8g2.drawStr(0, 78, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();

  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 22, 128, 64, 7);
  u8g2.drawStr(4, 36, "SERVEO    ");
  u8g2.drawStr(0, 56, "in association ");
  u8g2.drawStr(0, 76, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();


  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 20, 128, 64, 7);
  u8g2.drawStr(4, 34, "SERVEO    ");
  u8g2.drawStr(0, 54, "in association ");
  u8g2.drawStr(0, 74, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();

  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 18, 128, 64, 7);
  u8g2.drawStr(4, 32, "SERVEO    ");
  u8g2.drawStr(0, 52, "in association ");
  u8g2.drawStr(0, 72, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();

  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 16, 128, 64, 7);
  u8g2.drawStr(4, 30, "SERVEO    ");
  u8g2.drawStr(0, 50, "in association ");
  u8g2.drawStr(0, 70, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();

  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 14, 128, 64, 7);
  u8g2.drawStr(4, 28, "SERVEO    ");
  u8g2.drawStr(0, 48, "in association ");
  u8g2.drawStr(0, 68, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();


  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 12, 128, 64, 7);
  u8g2.drawStr(4, 26, "SERVEO     ");
  u8g2.drawStr(0, 46, "in association ");
  u8g2.drawStr(0, 66, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();
  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 10, 128, 64, 7);
  u8g2.drawStr(4, 24, "SERVEO    ");
  u8g2.drawStr(0, 44, "in association ");
  u8g2.drawStr(0, 64, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();

  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 8, 128, 64, 7);
  u8g2.drawStr(4, 22, "SERVEO     ");
  u8g2.drawStr(0, 42, "in association ");
  u8g2.drawStr(0, 62, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();
  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 6, 128, 64, 7);
  u8g2.drawStr(4, 20, "SERVEO    ");
  u8g2.drawStr(0, 40, "in association ");
  u8g2.drawStr(0, 60, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();

  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 4, 128, 64, 7);
  u8g2.drawStr(4, 18, "SERVEO    ");
  u8g2.drawStr(0, 38, "in association ");
  u8g2.drawStr(0, 58, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();
  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 2, 128, 64, 7);
  u8g2.drawStr(4, 16, "SERVEO     ");
  u8g2.drawStr(0, 36, "in association ");
  u8g2.drawStr(0, 56, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(20);
  u8g2.clearBuffer();
  u8g2.sendBuffer();
  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 0, 128, 64, 7);
  u8g2.drawStr(4, 14, "SERVEO    ");
  u8g2.drawStr(0, 34, "in association ");
  u8g2.drawStr(0, 54, "  JOHN DEERE  ");
  u8g2.sendBuffer();
  delay(2000);

  u8g2.setFont(u8g2_font_squeezed_b6_tr );
  u8g2.clearBuffer();
  u8g2.drawRFrame(0, 0, 128, 64, 7);
  u8g2.drawStr(0, 14, " ANGEL PALACIOS");
  u8g2.drawStr(0, 34, " PATRICK KOLBUSZOWSKI ");
  u8g2.sendBuffer();


}```
lo ejecuto fuera de fabrica se conecta como a 100m del router pero en fabrica lo pongo a 15m y tiene muchas desconexiones cada 2 mint aprox cuando lo instale de nuevas no tenia problemas fue a la semana mas o menos.

No soy un experto en esp32 ni en esp8266, puesto que no he programado mucho en ello, así que es solo una observación a tu problema.

Por un lado, tenemos un entorno ruidoso: supongo que las entradas tendrán algo de separación galvánica, es decir, no estarán los 3.3v del esp rondado por la fabrica desde el sensor a la entrada, si es así malo. A las entradas digitales deberías aislarlas o protegerlas de los posibles ruidos. La entrada analógica lo mismo que lo mismo. La fuente de alimentación con la que alimentes al ESP que sea de calidad y bastante inmune a los ruidos.

Por otro lado el software: veo que abusas de delay en bastantes sitios y también abusas de la escritura en pantalla. La st7920 es lenta de naturaleza así que tendrás un retraso con ella también. Si esos retrasos se juntan mucho, me temo que la función yield() no se ejecuta cuando debe y salta el perro guardian, al menos en el esp8266 es así.

En ambos casos, parece como si se reiniciará por algún motivo y por eso pierde la conexión y tiene que volver a conectarse.

La solución al software es usar mas millis y estructurar el código bien. En cuanto a lo de la pantalla te puedo recomendar una librería que es un poco más rápida en el dibujado: cbm80amiga/st7920. En el hardware deberías decirnos como lo tienes montado para poder ayudarte mejor.

Si algún compañero a trabajado con blink2 y puede añadir algo mas, bienvenido será el aporte.

Hola Victor buenas noches muchas gracias por contestar ante todo.
He estado mirando e problema y resulta que provenía de la tarjeta sim que tenia el router
No tenía datos suficientes como para mantener los datos actualizados y por eso caia la conexion, pero todavía no doy crédito que caiga la placa con el wifi correcto.
Pero bueno cosas de la programación. ya te digo que el problema era por falta de datos en la sim, de todas maneras gracias por la aportación de la librería de la pantalla me vendrá muy bien un saludo y muchas gracias de nuevo por tu ayuda.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.