ESP8266 AT ARDUINO MEGA (HTTP GET URL)

Buen día comunidad, éxitos en sus labores

El objetivo del proyecto es enviar datos de temperatura y humedad que captura el arduino mega vía WiFi (esp8266) a un servidor en una pc en mi caso utilice WAMP en el que hice un programa php para que recibiera mis variables de temp y hum y las muestre en una página en mi red local.

Quisiera que me apoyaran para detectar mi error o problema ya tengo casi todo listo pero en el código de arduino tengo el problema:

Cuando realizo el proceso de enviar mis variables con los comandos AT mecánicamente es decir que envío línea por linea todo lo hace correctamente, recibo las variables en mi servidor y todo correctamente.

AT+UART_DEF=9600,8,1,0,0
AT+CWMODE=1
AT+CWJAP="FAMGA","54555362"
AT+CIPMUX=0
AT+CIPSTART="TCP","192.168.1.9",80
AT+CIPSEND=50

GET /exe/esp.php?Temp=43&Hum=43
Host: 192.168.1.9


Pero cuando trato de acerlo todo automaticamente con el arduino mega me da error si conecta con el servidor pero no recibo nada, lo que no esta haciendo es enviar la linea del GET correctamente quisiera que me pudieran ayudar a salir de este problema ya e intentado todo lo que se me ocurre sin exito, adjunto el codigo que tiene el error.

String server = "192.168.1.9";

//variables para enviar al servidor
int Temp;
int Hum;

String cadena="";

void setup() {

  Serial3.begin(9600);
  Serial.begin(9600);
  Serial3.setTimeout(2000);
  
  //Verificamos si el ESP8266 responde
  Serial3.println("AT\r\n");
  if(Serial3.find("OK"))
    Serial.println("Respuesta AT correcto");
  else
    Serial.println("Error en ESP8266");

  //-----Configuración de red-------//Podemos comentar si el ESP ya está configurado

    //ESP8266 en modo estación (nos conectaremos a una red existente)
    Serial3.println("AT+CWMODE=1\r\n");
    if(Serial3.find("OK"))
      Serial.println("ESP8266 en modo Estacion");
      
    //Nos conectamos a una red wifi 
    Serial3.println("AT+CWJAP=\"FAMGA\",\"54555362\"\r\n");
    Serial.println("Conectandose a la red ...");
    Serial3.setTimeout(30000); //Aumentar si demora la conexion
    if(Serial3.find("OK"))
      Serial.println("WIFI conectado");
    else
      Serial.println("Error al conectarse en la red");
    Serial3.setTimeout(2000);
    //Desabilitamos las conexiones multiples
    Serial3.println("AT+CIPMUX=0\r\n");
    if(Serial3.find("OK"))
      Serial.println("Multiconexiones deshabilitadas");   
  //------fin de configuracion-------------------
  delay(1000); 
}


void loop() {
  
  //--- programa----------------------

    Temp=10;
    Hum=11;
    //otras operaciones
    // . . . 
  //---------enviamos las variables al servidor---------------------
  
      //Nos conectamos con el servidor:
      
      Serial3.println("AT+CIPSTART=\"TCP\",\"" + server + "\",80\r\n");
      if( Serial3.find("OK"))
      {  
          Serial.println();
          Serial.println("ESP8266 conectado con el servidor...");             
    
          //Armamos el encabezado de la peticion http
          String peticionHTTP= "GET exe/esp.php?Temp=";
          peticionHTTP +=String(Temp);
          peticionHTTP +="&Hum=";
          peticionHTTP +=String(Hum);
          //peticionHTTP +="\r\n";
          //peticionHTTP +="Host: 192.168.1.9";
          //peticionHTTP +="\r\n";
          //peticionHTTP +="\r\n";
          //Enviamos el tamaño en caracteres de la peticion http:  
          //Serial3.print("AT+CIPSEND=");
          //Serial3.println((peticionHTTP.length()-5)+ "\r\n");
          //Serial.print("AT+CIPSEND=");
          //Serial.println((peticionHTTP.length()-5)+ "\r\n");

          String cipSend = "AT+CIPSEND=";
          cipSend += peticionHTTP.length()+4;
          cipSend += "\r\n";
          Serial3.println(cipSend);
          Serial3.setTimeout(500);
          Serial.println(cipSend);

          //esperamos a ">" para enviar la petcion  http
          if(Serial3.find(">")) // ">" indica que podemos enviar la peticion http
          {
            Serial.println("Enviando HTTP . . .");
            Serial3.println(peticionHTTP);
            if( Serial3.find("SEND OK"))
            {  
              Serial.println("Peticion HTTP enviada:");
              Serial.println();
              Serial.println(peticionHTTP);
              Serial.println("Esperando respuesta...");
              
              boolean fin_respuesta=false; 
              long tiempo_inicio=millis(); 
              cadena="";
              
              while(fin_respuesta==false)
              {
                  while(Serial3.available()>0) 
                  {
                      char c=Serial3.read();
                      Serial.write(c);
                      cadena.concat(c);  //guardamos la respuesta en el string "cadena"
                  }
                  //finalizamos si la respuesta es mayor a 500 caracteres
                  if(cadena.length()>5000) //Pueden aumentar si tenen suficiente espacio en la memoria
                  {
                    Serial.println("La respuesta a excedido el tamaño maximo");
                    
                    Serial3.println("AT+CIPCLOSE");
                    if( Serial3.find("OK"))
                      Serial.println("Conexion finalizada");
                    fin_respuesta=true;
                  }
                  if((millis()-tiempo_inicio)>10000) //Finalizamos si ya han transcurrido 10 seg
                  {
                    Serial.println("Tiempo de espera agotado");
                    Serial3.println("AT+CIPCLOSE");
                    if( Serial3.find("OK"))
                      Serial.println("Conexion finalizada");
                    fin_respuesta=true;
                  }
                  if(cadena.indexOf("CLOSED")>0) //si recibimos un CLOSED significa que ha finalizado la respuesta
                  {
                    Serial.println();
                    Serial.println("Cadena recibida correctamente, conexion finalizada");         
                    fin_respuesta=true;
                  }
              }
    
              
            }
            else
            {
              Serial.println("No se ha podido enviar HTTP");
           }            
          }
      }
      else
      {
        Serial.println("No se ha podido conectar con el servidor");
      }

        
  //-------------------------------------------------------------------------------

  delay(5000); //pausa de 10seg antes de conectarse nuevamente al servidor (opcional)
}

Gracias.

Bueno te diré lo que le digo a muchos.
El manejo por comandos AT ha quedado en el pasado. Puedes controlar la operación del ESP8266 como si fuera un arduino aprovechando las librerías que lo hacen de modo fácil, muy facil y luego solo comunicarte via serial como ya lo haces con el MEGA.

Te recomiendo que sigas esta guia

que básicamente es ir al IDE
buscar preferencias en el menu Archivo y colocar

http://arduino.esp8266.com/stable/package_esp8266com_index.json

le das aceptar y luego vas a las placas, actualizas y tendras luego de que lo haga (actualice) el soporte para el ESP8266 en todas sus versiones.
Las librerias ESP8266Wifi tiene muchos ejemplos muy fáciles de entender con los que resolverás tu problema.

Se que no respondo tu consulta pero si vas por este camino encontrarás mas respuestas que te sirvan, en cambio con los comandos AT supongo que disminuyen las chances.

Ok, lo que te entiendo es que programe el esp8266 la parte de la conexión y él envió de los envío de datos al servidor y que el arduino mega solo le envié los datos de los sensores al esp via serial?

Exacto.