Servidor web independiente > Todo bien hasta que se queda solo

Buenos días,
He creado este proyecto básico, que es el típico ejemplo sin modificar, salvo la IP.
Compilo y cargo el programa en la placa y todo funciona perfectamente, desde cualquier equipo de la red se ve la página.
El problema empieza cuando lo desconecto del PC, y sólo le dejo el cable de alimentación a 5V y el de red RJ45.
He probado a reiniciarlo, a desconectarle luz, la tarjeta de red, e incluso pulsar el RESET, pero nada ha funcionado.
Si le vuelvo a conectar el USB al PC, funciona, pero claro, la idea es que sea un servidor independiente.
No entiendo que puede estar pasando, ¿podrían ayudarme?, por favor.

Este es el código fuente:

#include <SPI.h>
#include <Ethernet.h>

 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 140, 222);
EthernetServer server(80);

void setup()
{
  Serial.begin(9600);
  Ethernet.begin(mac, ip);
  
  // start the server
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP()); 
  server.begin();
}
 
void loop()
{
  EthernetClient client = server.available(); 
  
  if (client) {
    Serial.println("new client");
    bool currentLineIsBlank = true;
    String cadena = "";
    while (client.connected()) 
    {
      if (client.available()) 
      {
        char c = client.read();
        Serial.write(c);
        // Al recibir linea en blanco, servir página a cliente
        if (c == '\n' && currentLineIsBlank)
        {
          client.println(F("HTTP/1.1 200 OK\nContent-Type: text/html"));
          client.println();
          client.println(F("<html>\n<head>\n<meta http-equiv=\"refresh\" content=\"5\">\n<title>DEC13</title>\n</head>\n<body>"));
          client.println(F("<div style='text-align:center;'>"));
          client.println(F("<h2>Entradas digitales</h2>"));
          for (int i = 0; i < 13; i++)
          {
            client.print("D");
            client.print(i);
            client.print(" = ");
            client.print(digitalRead(i));
            client.println(F("<br />"));
          }
          client.println("<br /><br />");

          client.println(F("<h2>Entradas analogicas</h2>"));
          for (int i = 0; i < 7; i++)
          {
            client.println("A");
            client.println(i);
            client.println(" = ");
            client.println(analogRead(i));
            client.println(F("<br />"));
          }
      
          client.println(F("<a href='http://192.168.140.222'>Refrescar</a>"));
          client.println(F("</div>\n</body></html>"));
          break;
        }
         if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disconnected");
  }
}

¿Tipo de Arduino? ¿Que pin estas utilizando para alimentarlo con 5V?

Buenos días,
Era fuente de alimentación, está defectuosa y no da bastante intensidad de corriente, la hemos reemplazado y todo perfecto.

Saludos y gracias por tu ayuda.