Arduino Mega 2560 + Ethernet Shield + Server EasyPHP

Boa noite galera,

Estou no desenvolvimento do meu projeto, porem estou com duvidas de como fazer com que o server do easyPHP que esta localizado no ip 127.0.0.1 envie dados para o arduino que esta no ip 169.254.74.100.

Eu criei uma pagina na internet com 2 botões que estão em html rodando no arduino, isto esta funcionando perfeitamente.

Como sou novato em programação, estou com bastante dificuldade.

Segue abaixo a programação do arduino.

#include <Stepper.h> // Incluir Biblioteca 'Stepper'
#include <SPI.h>
#include <Ethernet.h>
  
byte mac[] = { 0xAB, 0xCD, 0x12, 0x34, 0xFF, 0xCA };
//byte ip[] = { 10, 1, 1, 105 };

IPAddress ip(169,254,74,100);         //Define o endereço IP
IPAddress gateway(192,168,15,1);    //Define o gateway
IPAddress subnet(255, 255, 0, 0);   //Define a mascara de subrede
     
EthernetServer server(80);

String readString;
  
int passos = 200; // Número de passos dados motori reduçao 1/64
const int passosPorVolta = 50;
 
Stepper myStepper(passosPorVolta, 4, 5, 6, 7);  //IN1-4   IN2-6    IN3-5    IN4-7

int ldr1 = 0;
int vari = 0;
int AbreGaragem=0, FechaGaragem=0;
// Primeiro argumento refere-se ao número de passos de rotação
// Os próximos argumentos são os pinos conectados ao Arduino
 
void setup()
{
  Serial.begin (9600);
  myStepper.setSpeed(200); // velocidade do motor em 60;
  
  Ethernet.begin(mac, ip);
  server.begin();
}
 
void loop()
{   
  EthernetClient client = server.available();
   if (client) {
    String vars;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        vars.concat(c);
  
        if (vars.endsWith("/abregaragem")) AbreGaragem=1;
        if (vars.endsWith("/fechagaragem")) FechaGaragem=1;
         
        if (c == '\n') {
         client.println("HTTP/1.1 200 OK");
         client.println("Content-Type: text/html");
         client.println("Refresh: 2");                   //Recarrega a pagina a cada 2seg
         client.println();
           
         client.println("<HTML>");
         client.println("<BODY>");
         client.println("<H1>AUTOMACAO RESIDENCIAL</H1>");
         client.println("<hr />");
         client.println("
");
           
	 client.println("<input type=button value=AbreGaragem");
	 client.println(" onclick=\"document.location='/abregaragem'\" />");
	 client.println("<input type=button value=FechaGaragem");
	 client.println(" onclick=\"document.location='/fechagaragem'\" />");
	 client.println("<input type=button value=LiberaPorta");
	 client.println(" onclick=\"document.location='/porta'\" />");	
         client.println("
");
         client.println("
");
         client.println("</BODY>");
         client.println("<meta http-equiv=refresh content=1;URL='//169.254.74.100/'>");
         client.println("</HTML>");
          
          delay(1);
          client.stop();
 
          readString="";     
        }
      }
    }
  }  
  
  //---------------------------------------------------
  
    vari = analogRead(ldr1);
    Serial.println(vari);
    //cortina();
    garagem();
    
  
}

void cortina(){
    if(vari>750){
      myStepper.step(passos); // sentido horário
      delay(500); // Delay de 0,5seg 
    }
    if(vari<750){
      myStepper.step(-passos); // sentido anti-horário
      delay(500); // Delay de 0,5seg
    }
}

void garagem(){
    if(AbreGaragem==1){
      myStepper.step(passos); // sentido horário
      delay(500); // Delay de 0,5seg 
    }
    if(FechaGaragem==1){
      myStepper.step(-passos); // sentido anti-horário
      delay(500); // Delay de 0,5seg
    }
    AbreGaragem=0;
    FechaGaragem=0;
}

que esta localizado no ip 127.0.0.1 envie dados para o arduino que esta no ip 169.254.74.100.

o ip 127.0.0.1 é um ip de localhost e apenas válido na maquina local, quer isto dizer que o ip 127.0.0.1 nunca vai comunicar com o 169 ... Uma maquina normalmente tem dois Ips atribuidos, o localhost(o teu 127.0.0.1) e um ip normalmente fornecido pelo teu router de classe C ( os vulgares 192.168.X.X normalmente) Para que o teu arduino comunique com o teu PHP tens de colocar o teu apache visivel do exterior(à escuta tanto na interface de localhost como tambem na interface 192.168.X.X) e ambos estarem na mesma rede, ou entao o teu router ter rota para a outra gama de ips. Nao mencionas onde tens a correr o teu php, mas podes procurar dentro do php.ini ou dentro do httpd.config para o pores a "escutar" de fora. Talvez isto te de uma ajuda: http://stackoverflow.com/questions/19132059/how-to-allow-remote-access-to-my-wamp-server-for-mobileandroid

A minha sugestao e para ja esquece o arduino e tenta ver esse php em outro computador da mesma rede,quando tiveres sucesso entao vira-te para o arduino.

IPAddress ip(169,254,74,100);         //Define o endereço IP
IPAddress gateway(192,168,15,1);    //Define o gateway
IPAddress subnet(255, 255, 0, 0);   //Define a mascara de subrede

Isto nao me parece correcto Se o teu gateway é o 192.168.15.1 o teu endereço de IP deve tambem respeitar esta rede, o que quer dizer que deveria ter um ip algo 192.168.15.X não o 169 que é um ip normalmente atribuido quando o pc nao contacta com nenhum servidor de DHCP

Bons estudos