Aviso

El foro está en modo de sólo lectura.

Web server arduino

Más
5 años 3 meses antes #1742 por Mr.Reivax2
Hola a todos/as soy Mr.reivax2 y soy nuevo en este foro
el motivo de este es el siguiente...
en el video del 9 de junio del 2017 con titulo " ESP8266 #3 : Web server con arduino, encendiendo led´s por wifi . "
hace tiempo que realice el proyecto y no me funciono a la primera, ni a la segunda por errores en el código, lo deje aparcado un tiempo, luego volví y lo volví a dejar hasta hoy en día que logré que compilara el código modificado pero el problema que tengo es que al conectarme a la IP que me entrega no me devuelve la página web
a ver si alguien me puede ayudar en las dudas que tengo en el código y en el proyecto que son...

en código- porque en el video pone ESP8266 y no me compila y poniendo modulo si me compila ?
porque en el código del servidor se abre <head> y no se cierra con un </head> ?

en el software del ESP8266 - que versión se utiliza, yo actualmente tengo cargado el ai-thinker v0.9.5.2.bin , me responde bien a todo con el monitor serie
y programado con el terminal v9 igual que en el video

Resultado final tras muchos prueba y error.... se conecta bien a la red wifi de y al acceder con el navegador a la IP me dice que no se puede mostrar página
en el monitor serie lo hace todo correcto y me muestra petición recibida
y la página web creada en el código no aparece, porque motivo ???
lo curioso es que si vuelvo a cargar la página (sin aparecer la web creada) se enciende el led del pin 13
y si vuelvo a cargar la página, el led del pin 13 se apaga, porque ??

curiosidad en el vídeo- porque en la 1era conexión se conecta con la ip ........, 37 y en la demostración final con la ip ........, 39 ?
se ha realizado alguna modificación porque tampoco funcionaba bien ?

aquí os dejo el código, que me compila y lo puedo subir

#include <SoftwareSerial.h>
int x1=0;
SoftwareSerial modulo(2, 3); // RX | TX
#define DEBUG true

void setup()
{ Serial.begin(9600);
modulo.begin(9600);
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
//EnvioDeDatos("AT+RST\r\n",2000,DEBUG); // resetea el modulo
/* EnvioDeDatos("AT\r\n",1500,DEBUG);*/
EnvioDeDatos("AT+CWMODE=1\r\n",2000,DEBUG); // Cconfigura el modulo en Estación
EnvioDeDatos("AT+CWJAP='Emagina 2.4G','XXXXXX'\r\n",8000,DEBUG); // datos de tu red.
EnvioDeDatos("AT+CIFSR\r\n",2000,DEBUG); // Nos muestra nuestra Ip asignada.
EnvioDeDatos("AT+CIPMUX=1\r\n",1500,DEBUG); // Configura multiples coneciones
EnvioDeDatos("AT+CIPSERVER=1,80\r\n",1500,DEBUG); // Inicializa el servidor web
}
void loop()
{
while (modulo.available()>0 ) // se recibieron datos.
{char c = modulo.read(); // lee los datos.
Serial.print(c); // Los reenvia por el puerto hardware para que veamos que estamos recibiendo.
if (c == 71) // Si recibe un GET al ver la primera letra incia la transmision de datos.
{Serial.println("PETICION RECIVIDA"); // No dice que ha recibido una peticion.
delay(1000);
codigoServidor();
}
}
while(x1==1){
if(modulo.find("+IPD,")){
delay(500);
int connectionId = modulo.read()-48;
modulo.find("pin=");
int pinNumber = (modulo.read()-48)*10;
pinNumber += (modulo.read()-48);
digitalWrite(pinNumber, !digitalRead(pinNumber));
Serial.print("INVIRTIENDO PIN ");
Serial.println(pinNumber);
}
}
}
void codigoServidor()
{ escribir("<!DOCTYPE HTML>");
escribir("<html>");
escribir("<head><title>BOTONES ARDUINO ESP8266</title> "); //nombre de la pestaña que llevara la pagina
escribir("<body><h1> <FONT SIZE='5' COLOR='red'> BOTONS </h1>"); //titulo del inicio de la pagina
escribir("<body bgcolor='black'> ");
escribir("<input type='button' onclick='location.href='http://192.168.100.18/pin=13' ' value='invertir pin 13' name='BOTON1' style='width:100px; height:50px'/>");
escribir("<input type='button' onclick='location.href='http://192.168.100.18/pin=12' ' value='invertir pin 12' name='BOTON2' style='width:100px; height:50px'/>");
escribir("<input type='button' onclick='location.href='http://192.168.100.18/pin=11' ' value='invertir pin 11' name='BOTON3' style='width:100px; height:50px'/>");
escribir("<input type='button' onclick='location.href='http://192.168.100.18/pin=10' ' value='invertir pin 10' name='BOTON4' style='width:100px; height:50px'/>");

escribir("</body></html>"); //una pagina web necesita esto <HTML> y </HTML> es el inicio y fin del documento
x1=1;
}
void escribir(String text)
{modulo.println("AT+CIPSEND=0,");
modulo.println(text.length());
if (modulo.find(">")) // Si se recibe el mensaje
{Serial.println(text);
modulo.println(text); //mandamos el mensaje por el wifi

delay(10);
while ( modulo.available()>0 )
{if ( modulo.find("") ) //buscamos "ok" y luego salimos

break;
}
}
}
String EnvioDeDatos(String command, const int timeout, boolean debug)
{
String cadena="";
modulo.print(command); // enviar el carácter leído al modulo
long int time = millis();
while( (time+timeout) > millis())
{
while(modulo.available())
{
// Muestra los Datos de salida del modulo por el seguimiento de la serie
char c = modulo.read(); //Lee el proximo caracter
cadena+=c;
}
}

if(debug)
{
Serial.print(cadena);
}

return cadena;
}
Más
5 años 3 meses antes #1743 por Jose Luis
Respuesta de Jose Luis sobre el tema Web server arduino
Como los codigos que se suben con los videos se prueban, fui a ese video a ver que paso. En el primer comentario esta el codigo. Lo he copiado segun esta y lo he compilado, en un compilador de arduino recien instalado. Dio dos errores, el primero por que la copiar el codigo, despus de la llave final, copio un simbolo html que el compilador interpreto como parte del codigo. Lo suprimi. y la tercera linea y la cuarta del codigo las junto. Le di a intro y las separe. Y el programa ya compilo perfectamente. No son fallos del codigo, son fallo de copoiarlos y pegarlos en el editor.

Ahora tus dudas :

En el video pone ESP, por que necesitas el ESP como pasarela para conectarte a la wifi y por lo tanto a internet, pero el codigo esta creado para arduino uno y no para esp8266. De hecho lo primero que hace el condigo es mandar comando AT para configurar el esp8266.

Lo del head es un error sin importancia, efectivamente se deberia cerrar, el programa funciona igual.

Yo lo que miraria principalmente, es lo que te devuelve el esp8266 cuando le mandas los comandos AT, tiene que ir respondiendo a cada uno de ellos. Te tiene que decir si se conecta a la wifi de tu casa y te tiene que dar la ip con la que se conecta. Si hace todo eso y tu tienes configurado los botones con la ip que te dio ti wifi al enviar los comandos AT ( y que puedes ver en el monitor serial), el programa debia funcionar sin problema.
Más
5 años 3 meses antes #1744 por Mr.Reivax2
Respuesta de Mr.Reivax2 sobre el tema Web server arduino
Hola jose luis, primeramente agradecer la rapidez de la respuesta
le comento....
no es problema de copiar y pegar, eso ya sé por experiencia que da errores
he probado el IDE 1.6.9 el 1.8.5 y el 1.8.8 el ESP no se porque motivo me da error, pero si pongo "modulo" u otra palabra me funciona bien, lo puedo compilar y subir al arduino uno, no hay problema

ya sé que el código es para el arduino y no para el ESP, y así lo tengo

los comandos AT me los devuelve bien, no tengo problema ni en la conexión con wifi, ni tampoco que en la entrega de la IP ni tampoco en abrir el puerto
80
he probado con otros componentes ESP8266 y con todos me pasa lo mismo

el único problema que tengo, y no se porque lo hace, es que no me muestra la página web, todo lo demás funciona bien
he desactivado el cortafuegos y antivirus por si acaso y el resultado es el mismo

ahora mismo trabajo con windows 8, IDE 1.8.8, arduino R3 con chip atmega 1445 atmega 328P-PU
Más
5 años 3 meses antes - 5 años 3 meses antes #1745 por Jose Luis
Respuesta de Jose Luis sobre el tema Web server arduino
Pues como le decia, cogiendo el codigo sin variar nada, yo lo compilo y me compila sin ningun problema.

Esperemos que lo pruebe alguien mas a ver si le compila.
Última Edición: 5 años 3 meses antes por Jose Luis.
Tiempo de carga de la página: 0.383 segundos
Gracias a Foro Kunena