Esto es posible? Ethernet shield

Buenas a todos! Tengo funcionando un acuario controlado por un arduino (temperatura, luz, niveles agua, etc...)

El siguiente paso que quiero dar es conectarle un ethernet shield para poder ver los parametros del acuario desde cualquier ordenador con internet.

Alguien está con algun proyecto parecido??? El problema que veo es que si al entrar en la Web de arduino este se pudiera quedar parado dentro de esta funcion no me serviria, es decir, el web server debería funcionar paralelamente con el "loop" actual.... ;)

Aunque mi nivel es más bien bajo, se me ocurre lo siguiente:

Conectar un nuevo arduino, con la ethernet shield, que atienda la interface web y solicite los datos de los sensores al arduino encargado del acuario...

De esta forma, introducirías en el loop solo una verificación, por ejemplo de un pin digital, que indicaría que debe enviar por el puerto serie un array de datos que interpretaría el arduino web.

Saludos, Pakoff.

Jorge,

puedes gestionar la recogida de datos de los sensores con interrupciones, así aseguras que se ejecutan a intervalos regulares aunque se pare el Loop.

http://www.zigbe.net/

Yo estaba con un termostato para casa y no es complicado. Si no tienes demasiados delays en las lecturas la web estara disponible.

Lo pongo en hora via NTP (no pondo el codigo) y miro la temperatura cada 5 segundos.
De servidor web uso el webduino

#include <Ethernet.h>
#include “WebServer.h”
#include <NTP.h>
#include <Time.h>

#define PREFIX “” // WWW

byte mac = {0x00, 0x0D, 0xB1, 0x1F, 0xF2, 0x3D}; // mac
byte ip = {192, 168, 0, 201}; // ip
byte gateway = {192, 168, 0, 251}; // gateway
byte subnet = {255, 255, 255, 0}; // mascara
byte ntpserver = {213, 97, 131, 125}; // servidor NTP

void setup()
{
Ethernet.begin(mac, ip, gateway, subnet); // Inicia la red
setTime(978310861); // Pone la hora a 1:1:1 del 1/1/2001
webserver.setDefaultCommand(&index); // http://“ip”

delay(1000); // Pausa para dar tiempo a activar al red

}

//-------------- funcion para leer la temperatua con un LM35
void lm35()
{
int lm35r[8];
int i;

temp = 0;
for(i=0; i <= 7; i++) // Mira 8 veces la temperatura para que sea mas preciso
{
lm35r = ( 4.8 * analogRead(lm35pin) * 100.0) / 1024.0; // Lee la temperatura
_ temp = temp + lm35r*; // Suma la temperatura anterior*_
* delay(100);*
}
temp = temp/8; // Divide por 8 porque lo suma 8 veces
delay(300);
}
//----------------------------------------------
void loop()
{
webserver.processConnection();
if ((second()%5)==0) lm35(); // Mira la temperatura cada 5 segundos
}
Falta la web, variables y poco mas