problema de arduino al conectarse a un servidor web

Hola, buenas tardes.
Somos el grupo de una escuela secundaria, en donde decidimos hacer un proyecto (lector de tarjetas y registro de usuario); en este proyecto utilizamos: un ArduinoUno + EthernetShield + RFID + PHP + mysql. Cuando uno ingresa la tarjeta se abre la puerta y manda los datos de la tarjeta a la base de datos de un servidor (WAMP).

Tenemos un proyecto (“controlpres”) que corre en el apache del WAMP (en otra pc de la LAN), y la idea es que el arduino, una vez que el usuario pasa la tarjeta, envíe la información de la misma para que esto se almacene en la base de datos, para ello queremos que el arduino “corra” un php que se encarga de la inserción en la base.

El problema es que cuando tenemos que enviar los datos, no se conecta al servidor (apache); Llega hasta la línea de la conexión y el if (client.connect(server, 5100)) se va por el “else”, o sea, que algo está pasando en la conexión (es decir, creemos que no se conecta).

NOTA:
modelo del Arduino: Arduino Uno R3
modelo del EthernetShield: W5100

Acá les dejo el código:

#include <SPI.h>
#include <MFRC522.h>
#include <EthernetClient.h>
#include <EthernetUdp.h>
#include <Dns.h>
#include <EthernetServer.h>
#include <Ethernet.h> 
 
#define SS_PIN 9
#define RST_PIN 8
#define LED_G 5 //define green LED pin
#define LED_R 4 //define red LED
#define RELAY 3 //relay pin
#define ACCESS_DELAY 2000
#define DENIED_DELAY 1000
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.

// Configuracion del Ethernet Shield
 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Direccion MAC
IPAddress ip(10, 0, 96, 12); // Direccion IP del Arduino
 IPAddress server (10,0,30,254); //     10,0,96,18           10,0,30,254          Direccion IP del servidor
EthernetClient client;
byte estado_conexion;
boolean anteriormente_conectado;
int analog_pin = 0;

void setup(void) {
 
  Serial.begin(9600);
  Ethernet.begin(mac, ip); // Inicializamos el Ethernet Shield
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
  Serial.begin(9600);   // Initiate a serial communication
  SPI.begin();          // Initiate  SPI bus
  mfrc522.PCD_Init();   // Initiate MFRC522
  pinMode(LED_G, OUTPUT);
  pinMode(LED_R, OUTPUT);
  pinMode(RELAY, OUTPUT);
  digitalWrite(RELAY, LOW);
  Serial.println("Coloque su tarjeta sobre el lector...");
  Serial.println();

Serial.println("conectando....");

  if (client.connect(server, 5100)) { 
  Serial.println("conectado");
    client.println("GET /controlpres/iot.php?valor=88 2C 89 A6&acc_val=1"); // Enviamos los datos por GET
    client.println();
  } else {
    Serial.println("Fallo de conexion");
  }
}

void loop(void) {
   // Look for new cards
  if ( ! mfrc522.PICC_IsNewCardPresent()) 
  {
    return;
  }
  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial()) 
  {
    return;
  }
  //Show UID on serial monitor
  Serial.print("UID tag :");
  String content= "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++) 
  {
     Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
     Serial.print(mfrc522.uid.uidByte[i], HEX);
     content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
     content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  Serial.println();
  Serial.print("Message : ");
  content.toUpperCase();
  if (content.substring(1) == "1A B9 92 B9") //change here the UID of the card/cards that you want to give access
  {
    Serial.println("Acceso autorizado");
    Serial.println();
    delay(500);
    digitalWrite(RELAY, HIGH);
    digitalWrite(LED_G, HIGH);
    delay(ACCESS_DELAY);
    digitalWrite(RELAY, LOW);
    digitalWrite(LED_G, LOW);
  }
 
 else   {
    Serial.println("Acceso denegado");
    Serial.println();
    digitalWrite(LED_R, HIGH);
    delay(DENIED_DELAY);
    digitalWrite(LED_R, LOW);
  }
  if (client.available()){
    char c= client.read();
    Serial.println(c);
  }
  if (!client.connected()){
    Serial.println();
    Serial.println("desconectando...");
    client.stop();
    for(;;)
    ;
  }
 }

Ambos elementos (Servidor + Arduino) debe estar en la misma red o no podrán comunicarse.

IPAddress ip(10,0,96,12);           //Direccion IP del Arduino
IPAddress server(10,0,30,254);   //Direccion IP del servidor

Ademas ambos elementos tienen que estar en la misma red que el DHCP que administrara la comunicacion.

PD: Se considera en la misma red cuando los 3 primeros campos son iguales.