Problemas Arduino WIFI shield

Hola

Hace poco adquiri una wifi shield de arduino que tengo conectado a un arduino mega, pero me he encontrado con los siguiente fallos que no entiendo por que.

1 Cuando conecto la shield el SDA y el SCL quedan inservibles por lo que no puedo realizar conexiones i2c con un rtc que tengo, como solucion llamo a la funcion WiFi.disconnect(); y durante unos segundos me permite acceder al rtc.

2 La funcion WiFi.disconnect(); no desconecta el wifi nada mas que durante unos segundos (los que utilizo para leer el rtc) y luego se restablece la conexion

3 Cuando lleva 5 horas aproximadamente funcionando deja de conectar con el servidor. y hasta que no reseteo no vuelve a comunicar datos

4 EL rtc se para solo despues de unas horas funcionando y devuelve continuamente la misma hora.

¿Alguien ha lidiado con estos problemas?

Yo también estoy teniendo problemas con la wifi shield original de arduino. También tengo un RTC pero no estoy teniendo problemas con el relog.

Sin embargo cuando lleva un par de horas funcionando la wifi shield con el sketch de ejemplo de servidor web, la wifi shield se bloquea aunque arduino continúa funcionando.

He actualizado el firmware, he utilizado cientos de codigos de ejemplo y la placa funciona como servidor web, pero cuando lleva un par de horas funcionando se bloquea y ni recibe ni envía datos.

He usado el ide 1.0.4, el 1.0.3, el 1.0.5 y todo es inutil. La placa funciona bien, pero se bloquea al cabo de un par de horas.

Me he pateado la red buscando y he encontrado varias personas con el mismo problema, pero ninguno ha encontrado la solución.

Me parece una tomadura de pelo. Puede que se trate de hardware libre y puede que esté destinada a usuarios "frikis" a los que les gusta trastear en las tripas de estos cacharros, pero si cobras 80 euracos por un puñado de silicio y cobre .... por lo menos debería funcionar.

A estas alturas ya he desistido de hacerla funcionar bien y me voy a centrar en idear algún circuito que la desconecte y la vuelva a conectar cada hora para resetearla automáticamente.

¿alguna sugerencia?

Saludos desde Granada

Hola, he encontrado una posible solución, que aunque no es más que un parche, puede ayudar hasta que quienes nos han vendido una placa por 80 euros consigan hacer que esta por lo menos funcione.

Gracias a un mensaje posteado por Jukar (muchisimas gracias) he descubierto que hay una manera de resetear arduino mediante software y con el mínimo de cableado. Este es el mensaje que ha colgado Jukar Reseteo "automático" de Ethernet Shield W5100 - Software - Arduino Forum

Esta es la página original a la que hace referencia en su mensaje http://weblog.jos.ph/development/arduino-reset-hack/

Y este es el montaje y el código que lo hace funcionar

Something I’ve been meaning to share with the world is this nifty hack I discovered while prototyping the Weather Tunnel sensor modules.

If you’ve ever needed to, you’ve discovered that there is in fact no way to RESET an Arduino board through code. If you truly want your Arduino to RESET entirely you have two options: pull the RESET to LOW using a physical connection, or remove the power supply and then connect it again (turn it on and off).

For the Weather Tunnel modules, I used the Arduino Ethernet Shield. It’s very well designed, and has worked perfectly for our needs. However, when it’s on and connecting perfectly to the internet, it tends to timeout after 2 or 3 days. Our sensor modules need to be plugged in and connecting for months on end (they were deployed in April, will be running through August minimum). When this timeout occurs, there is no cure other than to reset the board. I couldn’t ask our partner institutions to constantly monitor the module and disconnect/reconnect the box every 3 days, so I needed to find a way to RESET the board through code (ie one of the digital pins).

I’m sure you’re thinking to yourself — well fine, let’s use a little transistor and have a digital pin toggle GND to the RESET pin when we want. Yes, this definitely works, and is absolutely a better solution than my hack. However, this board is already crowded as it is, and I wanted to use minimal wiring. So i found a way to do it with a single wire connected to the RESET pin.

Check it out. By connecting any digital pin directly to the RESET pin on the Arduino will not work because upon start up, the Arduino automatically pulls those pins low when they are declared OUTPUT in the setup() loop. The hack here is extremely simple: Pull that digitalPin HIGH before ANYTHING ELSE.

//digitalPin 7 is connected to the RESET pin on Arduino
//NOTE: you CANNOT program the board while they are connected
//by default digitalPin 13 will blink upon reset, so stick an LED in there

int interval = 5000;
long int time = 0;

void setup(){
digitalWrite(7, HIGH); //We need to set it HIGH immediately on boot
pinMode(7,OUTPUT); //We can declare it an output ONLY AFTER it's HIGH
// (( HACKHACKHACKHACK ))
Serial.begin(9600); //So you can watch the time printed
}

Esta tarde intento montarlo y lo probaré durante un par de días. Postearé los resultados.

Gracias