Arduino + Ethernet Shield se bloquea después de algún tiempo

7

Estoy usando un arduino para recuperar algunos datos de una aplicación web. El problema es que después de un tiempo comienza a colgarse.

Para las pruebas, utilicé el esbozo EthernetClient predeterminado y lo modifiqué un poco para que, cada pocos segundos, envíe una solicitud al servidor para obtener la información. Para las pruebas no hago nada con los datos que obtengo, por lo que solo envía la solicitud y recupera los datos.

Para las pruebas utilizo un Arduino Mega 2560 + Ethernet Shield y una placa Arduino Ethernet, tengo el problema en ambos. Funciona desde 30 minutos hasta un día y luego toda la placa se congela. Las tablas no se calientan o cualquier otra cosa.

Al principio parece que funciona, pero después de un tiempo indefinido comienza a colgarse, ¿alguien tiene una idea de qué podría causar esto? ¿Hay algún error en el arduino o en el chip Ethernet W5100?

¿Intentarías solucionar este problema o cambiarte a una Raspberry Pi? Usar el temporizador de vigilancia no es una opción porque no funciona en el Mega sin cambiar el cargador de arranque.

ACTUALIZACIÓN (Agregué mi código de bucle, no hay problemas de memoria, he probado que antes):

void loop()
{
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    delay(2000);

    if (client.connect(server, 80)) {
      Serial.println("connected");
      client.println("GET / HTTP/1.0");
      client.println();
    }
  }
}

Esto es todo lo que hace, en la configuración está el código de inicialización predeterminado del bosquejo de demostración de Ethernet.

ACTUALIZACIÓN 2

Las pruebas con Arduino Mega + WiFi Shield también se cuelgan.

Las pruebas con EtherMega 2560 de freetronics se están ejecutando durante 2 días sin ningún problema. Continuaré con esto por un mínimo. una semana. Mi único problema con este bord es el precio. Es alrededor de 100 $.

    
pregunta tbraun89

1 respuesta

0

ACTUALIZAR

Aquí es un test de solución de trabajo con Mega (1.0.1) y Due (1.5.3)

Bien, parece que hay un error en las bibliotecas arduino 1.0.x que hace que el módulo Ethernet se cuelgue después de un tiempo, cuando tiene que consultar permanentemente un servidor.

Con el Arduino Due (arduino 1.5.2) ahora se está ejecutando y también mucho más rápido. Así que es maby la mejor opción para usar esto cuando tiene que lidiar con mucho tráfico de red y muchas operaciones. Me pondré en contacto con los desarrolladores de arduino sobre este problema y actualizaré esta respuesta cuando tenga más información sobre estos problemas.

    
respondido por el tbraun89

Lea otras preguntas en las etiquetas