Hola buen dia,
Estoy haciendo pruebas con el modulo esp8266 y no logro obtener los resultados que necesito, que por el momento es lo siguiente:
-escribir en el navegador: http://ip/temperatura1, y recibir los datos correspondientes a temperatura1,
por ahora solo estoy colocando un 38 que es la temperatura ambiente actual.
Bueno, cuando escribo por primera vez http://ip/temperatura1 en el navegador, todo funciona muy bien, el problema viene cuando lo intento de nuevo, y el resultado que obtengo es una notificacion diciendo que la conexion ha sido rechazada...
Se reinicio el modulo, puedo de nuevo ver los datos...
El codigo es el siguiente: (tomando como base ejemplos de la web de jopapa)
#define DEBUG true
#define SSID "test"
#define PASS "test"
void setup()
{
Serial.begin(115200);
Serial3.begin(115200);
sendData("AT+RST\r\n",3000,DEBUG);
sendData("AT+CWMODE=1\r\n",3000,DEBUG);
boolean connected=false;
for(int i=0;i<5;i++){
if(connectWiFi()){
connected = true;
break;
}
}
sendData("AT+CIFSR\r\n",3000,DEBUG); // Verificar direccion IP
sendData("AT+CIPMUX=1\r\n",3000,DEBUG); // Habilitar conecxiones multiples
sendData("AT+CIPSERVER=1,80\r\n",3000,DEBUG); // Iniciar el servidor en el puerto 80
delay(500);
Serial3.println("AT+CIFSR");
}
void loop()
{
if (Serial3.available())
{
//Prueba de concepto aun no se tiene la variable temperatura
if(Serial3.find("temperatura1")){
Serial.println("Se solicito temperatura ambiente");
Serial.println("Temperatura Ambiente: 38");
http("<!DOCTYPE HTML>");
http("<html>");
http("<body>");
http("38");
http("</body>");
http("</html>");
delay(200);
Serial3.println("AT+CIPCLOSE=0");//Cerrar sesion TCP
}
}
}
String sendData(String command, const int timeout, boolean debug)
{
String response = "";
Serial3.print(command); //Enviar la cadena leida al modulo
long int time = millis();
while( (time+timeout) > millis())
{
while(Serial3.available())
{
char c = Serial3.read(); //Leer el siguiete caracter
response+=c;
}
}
if(debug)
{
Serial.print(response);
}
return response;
}
boolean connectWiFi(){
//Serial3.println("AT+CWMODE=1");
String cmd="AT+CWJAP=\"";
cmd+=SSID;
cmd+="\",\"";
cmd+=PASS;
cmd+="\"";
Serial.println(cmd);
Serial3.println(cmd);
delay(2000);
if(Serial3.find("OK")){
Serial.println("Conectado a WiFi");
return true;
}
else{
Serial.println("No puede conectar a WiFi");
return false;
}
}
void http(String output)
{
Serial3.print("AT+CIPSEND=0,"); // AT+CIPSEND=0, num, iniciar sesion tcp
Serial3.println(output.length());
if (Serial3.find(">")) // Si recibimos la peticion del mensaje
{
Serial.println(output);
Serial3.println(output); //Aqui va el string hacia el WIFI
delay(10);
while ( Serial3.available() > 0 )
{
if ( Serial3.find("SEND OK") ) // Busca el OK en la respuesta del wifi
break;
}
}
}
Adjunto capturas de pantalla de los resultados que obtengo tanto en la consola serie, como en el navegador
¿Que podria ser?
estoy cerrando la conexion con la linea
Serial3.println("AT+CIPCLOSE=0");//Cerrar sesion TCP
¿Esta aqui el problema?
Saludos