Go Down

Topic: Capacidades del cliente ethernet arduino (Read 126 times) previous topic - next topic

mariocl

Aug 28, 2018, 08:34 pm Last Edit: Aug 28, 2018, 08:46 pm by mariocl Reason: Normas del foro no se puso el código en su sección correcta
Después de encontrar una forma muy eficiente de escribir valores de sensores con hardware a una base de datos MySQL a través de scripts de PHP.

En las pruebas de tensión mas duras, me encuentro con una serie de fallas de capacidad del Arduino. Pero aun no determino como superar esta falla.

El problema es que el arduino deja de responder los ping por ethernet y deja de almacenar los valores de los sensores inalambricos en la base de datos MySQL.  :'(

En mi caso para las pruebas puse 3 transmisores con una frecuencia de envío aproximada cada 8 segundos, con una escritura de 17 registros en el MySQL por minuto.

Pero al cabo de una hora o un poco mas el arduino deja de responder los ping. Lo curioso es que luego se restablece solo en un periodo de tiempo erratico pero vuelve a fallar como al principio.

Como el receptor lo quiero implementar para un sistema de alarmas no me sirve como esta actualmente porque no pueden existir intervalos sin que este operando.

Si alguien tiene experiencia con sistemas arduino operando 24x7 eficientemente le agradecería mucho su apoyo o sugerencias.  :D

El servidor MySQL esta en la misma LAN con una ip fija.

El hardware es el siguiente:

- Arduino Pro mini Atmega328 5V 16 Mhz
- w5500 Ethernet SPI 5V
- Módulo receptor superheterodino 2.1-5.2 V |-112dBm 315 MHz ASK OOK

El código en el loop para esta función del script PHP es el siguiente:

Code: [Select]

//Lee datos en receptor virtualwire
uint8_t buf[VW_MAX_MESSAGE_LEN];
 uint8_t buflen = VW_MAX_MESSAGE_LEN;
 if (vw_get_message(buf, &buflen)) // Non-blocking
 { if(buflen==14) //Previene el sobreflujo si es igual 14  
   {
     readNum=byte(buf[0]);
     readNum<<=8;
     readNum+=byte(buf[1]);
     if(readNum==IDEmp) //Emp = Emp del Receptor
     { readNum=byte(buf[4]);
       readNum<<=8;
       readNum+=byte(buf[5]);
       if(readNum==IDSitio) //Gateway = Sitio  
       {  if (client2.connect(mysvr, 80)) //Si esta conectado
          {client2.print("GET /php/idsitiost.php?id=");
            client2.print(IDSitio);
            client2.print("&ido=");
            readNum=byte(buf[2]);
            readNum<<=8;
            readNum+=byte(buf[3]);
            client2.print(readNum);
            client2.print("&temp=");
            readNum=byte(buf[6]);
            client2.print(readNum);
            client2.print("&volt=");
            readNum=byte(buf[8]);
            readNum<<=8;
            readNum+=byte(buf[9]);
            client2.print(readNum);
            client2.print("&water=");
            readNum=byte(buf[10]);
            readNum<<=8;
            readNum+=byte(buf[11]);
            client2.print(readNum);
            client2.println(" HTTP/1.0");
            //client2.print("Host: ");
            //client2.println(mysql);
            //client2.println("User-Agent: Arduino-Ethernet");
            client2.println("Connection: close"); // Connection: close
            client2.println();
          } else Serial.println("Error de conexion a MySQL");
        delay(1500);
        client2.flush();
        client2.stop();
        delay(1500);
       } //Sitio valido
     } //Emp valida  
   } //Long valida
 } //Msg VW  


Gracias

Go Up