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.

