Ethernet Shield con Relè si spegne improvvisamente

Salve a tutti. Ho da poco finito di assemblare un piccolo progettino così composto: Scheda Arduino UNO, Ethernet shield e modulo da due relè al quale ho collegato una lampadina. Il mio scopo è di poter accendere e spegnare a mio piacimento, collegandomi alla pagina web creata da arduino e cliccando sul bottone presente. Fin qui nulla di strano. Il problema è che, dopo aver acceso la prima volta, la lampadina è rimasta accesa per circa un'ora e poi si è spenta. L'ho riaccesa ed è rimasta accesa per 8 minuti. L'ho riaccesa e si è rispenta dopo 6 minuti. Al momento che vi sto scrivendo è accesa da circa 15 minuti. Insomma, per non farla troppo lunga, non riesco a capire questo funzionamento discontinuo.
Avete qualche idea in merito?
Grazie per la vostra attenzione. allego codice sketch e foto del modulo relè.

/**
Questo programma mostra come sia possibile inserire del codice HTML all'interno della
pagina web del webserver di Arduino*/
 
#include <SPI.h>
#include <Ethernet.h>
 
int pinLED = 9; // pin a cui è connesso il Relay1
int pinLED1 = 8; // pin a cui è connesso il Relay2

boolean acceso = false; 
// Mac Address di Arduino
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 18);
 
// Viene inizializzata la libreria Ethernet di Arduino e il webserver gira sulla porta 81
EthernetServer server(81);
 
void setup() {
  pinMode(pinLED,OUTPUT);
  pinMode(pinLED1,OUTPUT);
  digitalWrite(pinLED,LOW);
  digitalWrite(pinLED1,LOW);
    Serial.begin(9600);
  // Viene inizializzato il webserver e la connessione di rete
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}
 
void loop() {
  // Vengono ascoltati nuovi client
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // Finisce una richiesta HTTP
    boolean currentLineIsBlank = true;
    String postText ="";
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        if(postText.length()<10){
          postText +=c;
        }
        // Se viene completato l'invio della richiesta HTTP, allora il server invia la risposta
        if (c == '\n' && currentLineIsBlank) {
          // Viene fatta una risposta HTTP, in pratica viene creata una pagina WEB in HTML
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // Dopo la risposta la connessione si interrompe
          client.println();
          client.println("<meta charset=UTF-8>"); // serve per inserire i caretteri speciali
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println("<head> <TITLE>Attilio</TITLE> </head>"); // Viene creato il Titolo
          client.println("<body> <center><h1> Benvenuto nel Webserver Arduino </h1></center>"); // Viene inserito del testo
          client.println("<center><h3> Attraverso questa pagina è possibile accendere e spegnere le luci del vialetto </h3></center>");
          client.println("</body>");
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    // Se l'utente ha premuto l'icona per accendere il LED
    if(postText.indexOf("?on") >0){
          digitalWrite(pinLED,HIGH);
          digitalWrite(pinLED1,HIGH);
                    Serial.println("Accendi le luci");
          acceso = true;
        }
     // Se l'utente ha premuto l'icona per spegnere il LED
     if(postText.indexOf("?off") >0 ){
       digitalWrite(pinLED,LOW);
       digitalWrite(pinLED1,LOW);
               Serial.println("Spegni le luci");
        acceso = false;
       }
      // Viene cambiata la pagina WEB a seconda che il LED sia spento, oppure acceso
      if(acceso){
          client.println("<center><a href=\"./?off\"> <img src = \"http://ismanettoneblog.altervista.org/blog/wp-content/uploads/2014/03/led-red.png\"alt = \"Spegni\" ></a></center>");
          client.println("<center><h3> Le luci sono accese </h3></center>");
        }else{
          client.println("<center><a href=\"./?on\"> <img src = \"http://ismanettoneblog.altervista.org/blog/wp-content/uploads/2014/03/led-green.png\"alt = \"Accendi\" ></a></center>");
          client.println("<center><h3> Le luci sono spente </h3></center>");
          }   
    delay(1);
    // Viene chiusta la connessione
    client.stop();
    Serial.println("client disconnected");
  }
}

modulo relè.jpg

La cosa più importante, come alimenti il tutto ?
(ed anche come ha collegato Arduino con la schedina)

Allora. Il tutto è alimentato da un alimentatore 12v 200ma. Il collegamento tra arduino e la scheda relè avviene tramite i pin della scheda ethernet. Ti allego una foto.
Grazie

Allora. Il tutto è alimentato da un alimentatore 12v 200ma. Il collegamento tra arduino e la scheda relè avviene tramite i pin della scheda ethernet. Ti allego una foto.
Grazie

IMG_20150524_130654.jpg

Credo che il motivo sia legato all'alimentatore che eroga una corrente insufficiente.

Il W5100 assorbe circa 150mA, mentre ogni relè assorbe circa 100mA.

Prova ad usare un alimentatore da 9V 1A o più.

cyberhs:
Credo che il motivo sia legato all'alimentatore che eroga una corrente insufficiente.

Il W5100 assorbe circa 150mA, mentre ogni relè assorbe circa 100mA.

Prova ad usare un alimentatore da 9V 1A o più.

Ciao. Sto effettuando una prova di durata dell'accensione delle luci tramite porta USB2.0 che dovrebbe erogare almeno 500mA. Nel frattempo ho preso un alimentatore regolabile da 1A. Vedo come va a finire la prova con la USB e al limite cambio. Ti tengo aggiornato.
Grazie.
Saluti. Attilio

200 mA sono troppo pochi. Solo Arduino Uno ne consumerà 50mA, aggiungi la shield e il resto...

nid69ita:
200 mA sono troppo pochi. Solo Arduino Uno ne consumerà 50mA, aggiungi la shield e il resto...
http://www.mauroalfieri.it/elettronica/quanto-assorbe-arduino.html

La prova con la USB 2.0 è andata bene, nel senso che la luce della lampadina non si è spenta per ben 6 ore. Ora passerò a collegare l'impianto vero e proprio.
Grazie a tutti

newlife60:
Ciao. Sto effettuando una prova di durata dell'accensione delle luci tramite porta USB2.0 che dovrebbe erogare almeno 500mA. Nel frattempo ho preso un alimentatore regolabile da 1A. Vedo come va a finire la prova con la USB e al limite cambio. Ti tengo aggiornato.
Grazie.
Saluti. Attilio

La prova con la USB 2.0 è andata bene, nel senso che la luce della lampadina non si è spenta per ben 6 ore. Ora passerò a collegare l'impianto vero e proprio.
Grazie