Sunteți pe pagina 1din 37

24/2/2018 Arduino y ESP8266 como cliente web

Contacte con nosotros Iniciar sesión

Buscar 

0
 S/. 0,00

CATEGORÍAS 
 All Blog News Arduino y ESP8266 como cliente web

ARTÍCULOS POPULARES

Tutorial sensor de ujo de agua abr 13, 2016

Tutorial trasmisor de celda de carga HX711, Balanza Digital ago 23, 2015

Con guración del módulo bluetooth HC-05 usando comandos AT ago 08, 2015

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 1/37
24/2/2018 Arduino y ESP8266 como cliente web

ARTÍCULOS RECIENTES

Usando ESP8266 con el IDE de Arduino oct 21, 2016

Tutorial Sensor de Distancia SHARP sep 28, 2016

Arduino y ESP8266 como cliente web ago 24, 2016

PROMOCIONES ESPECIALES 
Sensor de Temperatura Digital DS18B20
Sensor digital de Temperatura, con...

S/. 11,00 S/. 12,00

Todas los promociones especiales 

ETIQUETAS 

sensor cnc LED regulador robot driver LCD infrarrojo Servo rele

NOVEDADES 
http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 2/37
24/2/2018 Arduino y ESP8266 como cliente web

Raspberry Pi Zero W
El Raspberry Pi más pequeño y más económico pero con la misma utilidad...

S/. 105,00

Raspberry Pi Zero
El Raspberry Pi más pequeño y más económico pero con la misma utilidad...

S/. 70,00

Pulsioxímetro MAX30102
Construye tu propio pulsioxímetro con la ayuda de este magnífico sensor.

S/. 34,00

WAGO 222-414 Conector Rápido


Haz conexiones seguras y rápidas al instante con este conector de cuatro...

S/. 2,00

WAGO 222-412 Conector Rápido


Haz conexiones seguras y rápidas al instante con este conector de dos...

S/. 1,00

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 3/37
24/2/2018 Arduino y ESP8266 como cliente web
Antena IPEX GSM
Antena para frecuencias celulares con conector IPEX.

S/. 3,00

Case transparente para Raspberry Pi 3


Proteje a tu Raspberri Pi con este económico case.

S/. 10,00

Teclado matricial de botones plásticos


Teclado matricial con botones plásticos te permite ingresar datos...

S/. 25,00

Todas los nuevos productos 

Arduino y ESP8266 como cliente web


Posted by  Tutoriales  48 Comments

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 4/37
24/2/2018 Arduino y ESP8266 como cliente web

Después de trabajar el ESP8266 como servidor (Tutorial ESP8266: Parte I), usaremos el ESP8266 como cliente, de esta forma
podremos conectarnos a un servidor y poder enviar o pedir información.

Este tutorial está más orientado a un programador o desarrollador web, que a través de internet desea controlar o recibir datos de
un hardware, en este caso Arduino, pero antes de continuar con este tutorial deben de revisa el Tutorial ESP8266 Parte I , en donde
se explica sobre el Modulo ESP8266, los comandos AT y se implementa un ejemplo trabajando al ESP8266 como servidor.

Usar el ESP8266 como cliente significa que nuestro Arduino a través del ESP8266 debe de conectarse a un servidor por ejemplo
www.google.com o www.naylamp.com , existen varias formas de comunicarse entre cliente servidor, nosotros nos comunicaremos
por HTTP, que es la misma forma en la que se comunican los navegadores web (Chrome, mozilla, etc) con los servidores.

Envió de parámetro en un Dialogo HTTP


http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 5/37
24/2/2018 Arduino y ESP8266 como cliente web

Cuando un navegador web (El cliente) quiere acceder a una página web (servidor) , envía una petición http (HTTP request) el
servidor recibe la petición y le responde con la página web (HTTP response), El encargado de enviar e interpretar esto es el
navegador web, el usuario solo escribe la URL y espera a que cargue la página, pero cuando trabajemos con Arduino tenemos
que comunicarnos a través de peticiones http.

Existen dos formas fáciles de enviar datos junto con una petición HTTP, estas son el método GET y POST, La diferencia principal
entre estos dos métodos es que en el método GET se envían los datos en la URL, quedando visible para el usuario, mientras que
en el método POST los datos quedan ocultos para el usuario. Ambos métodos son muy usados y casi siempre están
implementados en las páginas webs que navegamos, en el siguiente enlace se explica de forma resumida la diferencia de estos:
http://www.miguelmanchego.com/2010/diferencias-entre-envio-get-y-post/

Nosotros Trabajaremos con el Método GET y tomaremos como ejemplo el ejercicio que se explica en la siguiente link:
http://aprende-web.net/php/php4_2.php , con la diferencia que no pasaremos variables de una página a otra, sino de nuestro
Arduino a una pagina web.

Para enviar datos por el método GET si lo realizamos desde el navegador es simple, solo hay que escribir en la URL los datos que
queremos enviar, seria de esta forma:

http://aprende-web.net/php/ejemplos/ej10destino.php?a=125&b=26
Como se observa al link se le agrega al final “?a=125&b=26” de esta forma indicamos que queremos enviar esos parámetros.
Cuando al servidor le llega esta consulta, lee los dos datos (a=125 y b=26), y le responde con una página web que muestra los
datos que ha recibido

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 6/37
24/2/2018 Arduino y ESP8266 como cliente web

Lo que hace la página es mostrarnos los datos que ha recibido.


El código de la página web es el siguiente:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>página de destino</title>
</head>
<body>
<h1>Al abrir esta página se han pasado las siguientes variables:</h1>
<?php
$a=$_GET['a'];
$b=$_GET['b'];
echo "<p>variable $a : $a";
echo "<p>variable $b : $b";

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 7/37
24/2/2018 Arduino y ESP8266 como cliente web
?>
</body>
</html>

Este código esta subido en un servidor, y es el servidor el que ejecuta el código PHP y realiza las acciones programadas que en
este caso es una simple respuesta HTML en donde podemos ver los datos que ha recibidos.

En el código de la página que está subida en el servidor se puede programar para que se conecte a una base de datos y subir
las variables, descargar información o haga cualquier otra acción, pero esto dependerá de su necesidad y de sus habilidades
como desarrollador web.

Pueden usar esta misma página para desarrollar el tutorial o programar y subir su propia página a un servidor.

Ahora nosotros aremos lo mismo pero en lugar de hacerlo desde el navegador lo trabajaremos desde nuestro ESP8266.

1. Conexiones entre ESP8266 y Arduino:


Para conectar nuestro ESP8266 usaremos un protoboard para ayudarnos con el cableado, los nombres de los pines no están
impresos en la PCB pero pueden revisarlos en la siguientes imagen: Pinout módulo ESP8266

ESP8266 Arduino

TX D10

CH_PD 3V3

RST No conectado

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 8/37
24/2/2018 Arduino y ESP8266 como cliente web

ESP8266 Arduino

3.3V 3V3

GND GND

GPIO2 No conectado

GPIO0 No conectado

RX D11 (Usando resistencias)

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 9/37
24/2/2018 Arduino y ESP8266 como cliente web

El ESP8266 funciona con 3.3V, por eso en el pin TX del Arduino se recomienda usar resistencias para generar una caída de
voltaje, el valor de las resistencias no necesariamente tienen que ser 1K y 2K, pueden usar las resistencias que tengan a la mano
pero estas deben tener una relación de 1:2, al usar esas resistencias se forma una divisor de voltaje y el nivel de 5V del TX del
Arduino se convierte en un nivel 3.3V. En el caso del RX no es necesario, puesto que el ESP8266 envía a ese pin niveles de 3.3V
niveles que el Arduino los considera 1 lógicos.

2. Realizando consultas al servidor usando comandos AT:


Antes de implementar en nuestro Arduino el cliente web, primero revisaremos la secuencia de comandos AT que debemos
ejecutar para realizar dicha acción.

Para poder enviar los comandos AT cargamos en nuestro Arduino el siguiente programa:

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 10/37
24/2/2018 Arduino y ESP8266 como cliente web

#include <SoftwareSerial.h>

SoftwareSerial SerialESP8266(10, 11); // RX, TX

void setup() {
Serial.begin(9600);
SerialESP8266.begin(9600);
//SerialESP8266.begin(115200); //
}

void loop() {
if (SerialESP8266.available()) {
Serial.write(SerialESP8266.read());
}
if (Serial.available()) {
SerialESP8266.write(Serial.read());
}
}

Este programa solo es un repetidor serial todos los datos que envía el ESP8266 se transmiten a la PC y los que se envían desde
la PC se envían al ESP8266
Después de cargar el programa, abrimos el monitor serial y verificamos que nuestro monitor serial esté a la velocidad de 9600 y
tenga seleccionado la opción “ambos NL & CR”, seguidamente empezamos a enviar los comandos AT:
Test de comando AT
Enviamos:

AT

Recibimos:

OK

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 11/37
24/2/2018 Arduino y ESP8266 como cliente web

Si no recibimos una respuesta, puede ser que nuestro ESP8266 está configurado a una velocidad diferente a la programada:
para esto debemos cambiar la siguiente línea de código y volver a cargar:

SerialESP8266.begin(115200);

Ahora nuevamente repetimos el comando y debemos de obtener la respuesta:

Cambiar la velocidad de transmisión serial


Si la velocidad de transmisión de su ESP8266 es de 115200 tenemos que cambiarla a una velocidad de 9600, esto porque en
nuestro arduino trabajamos con SoftwareSerial, y con 115200 estaríamos en el límite de velocidad que soporta el SoftwareSerial y
podrían perderse algunos caracteres.

Si su ESP8266 trabaja a la velocidad de 9600 ya no realizar este paso.


Para cambiar de velocidad usamos el siguiente comando AT:

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 12/37
24/2/2018 Arduino y ESP8266 como cliente web

Enviamos:

AT+UART_DEF=9600,8,1,0,0

Recibimos:

AT+UART_DEF=9600,8,1,0,0
OK

Donde 9600 es la velocidad, los demás datos son otras configuraciones de la comunicación.
Seguidamente de hacer esto no podremos enviar más comandos puesto que se ha cambiado a la nueva velocidad, tendremos que
reprogramar nuestro arduino con la velocidad de 9600, para esto nuevamente cambiar la velocidad en la siguiente línea de
código:

SerialESP8266.begin(9600);

Después, de cargar ahora con la nueva velocidad, debemos de enviar AT y esperar a que nos responda con un OK, de esta
forma confirmamos que la velocidad ha sido cambiada correctamente.
Todo el proceso que hemos hecho solo se hace una solo vez, posteriormente así se apague nuestro ESP8266 la velocidad
configurada se mantendrá.

Configurado el Modo del Wifi:


Trabajaremos en modo estación, es decir nos conectaremos a una red ya existente:

Enviamos:

AT+CWMODE=1

Recibimos:
http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 13/37
24/2/2018 Arduino y ESP8266 como cliente web

AT+CWMODE=1
OK

Conectarse a una red Wifi


Nos conectaremos a la red cuyo nombre es: Naylamp , y su respectivo password es: hail_hydra
Enviamos:

AT+CWJAP="Naylamp","hail_hydra"

Recibimos:

AV+CWJAP="Naylamp","hail_hydra"
WIFI CONNDCTED
WIFI GOT IP

OK

La respuesta nos confirma que ya estamos conectados a la red wifi


Deshabilitamos las conexiones múltiples:
Debido a que vamos a trabajar como cliente web, deshabilitamos las conexiones múltiples, que generalmente se utilizan cunado
trabajamos como servidor:
Enviamos:

AT+CIPMUX=0

Recibimos:
http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 14/37
24/2/2018 Arduino y ESP8266 como cliente web

AT+CIPMUX=0
OK

Conectarnos con el servidor:


Enviamos:

AT+CIPSTART="TCP","www.aprende-web.net",80

Recibimos:

CONNECT

Al hacer esto iniciamos la conexión como cliente, y se especifica el tipo de conexión (TCP), el servidor (www.aprende-web.net) y
el puerto (80),
Enviar el tamaño de la petición HTTP
Antes de enviar la petición HTTP, es necesario especiar el tamaño en caracteres de la petición:
Enviamos:

AT+CIPSEND=83

Recibimos:

AT+CIPSEND=83
OK
>

Cuando recibimos “>” significa que ya podemos enviar la petición HTTP.

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 15/37
24/2/2018 Arduino y ESP8266 como cliente web

Enviar petición HTTP

Después de recibir “>” el ESP espera la petición del tamaño indicado para que posteriormente lo envié, para esto enviamos línea
por línea la siguiente petición
Enviamos

GET /php/ejemplos/ej10destino.php?a=23&b=56 HTTP/1.1(Enter o Enviar)


Host: www.aprende-web.net(Enter o Enviar)
(Enter o Enviar)

Recibimos:

Recv 83 bytes

SEND OK

+IPD,463:HTTP/1.1 200 OK
Date: Tue, 23 Aug 2016 19:22:56 GMT
Server: Apache
X-Powered-By: PHP/5.3.29
Content-Length: 319
Content-Type: text/html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 16/37
24/2/2018 Arduino y ESP8266 como cliente web

<html>
<head>
<title>página de destino</title>
</head>
<body>
<h1>Al abrir esta página se han pasado las siguientes variables:</h1>
<p>variable $a : 23<p>variable $b : 56</body>
</html>
CLOSED

Lo que recibimos es la respuesta del servidor, en donde se observa el encabezado http y el HTML de la página web de respuesta.
Notar que al final recibimos un CLOSED esto indica que se ha cerrado la conexión con el servidor.

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 17/37
24/2/2018 Arduino y ESP8266 como cliente web

3. Arduino como cliente web usando ESP8266:


Ahora vamos programar en un sketch que enviará los comandos AT los cuales se enviaron manualmente en el ejemplo anterior:

El código es el siguiente:

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 18/37
24/2/2018 Arduino y ESP8266 como cliente web

#include <SoftwareSerial.h>
SoftwareSerial SerialESP8266(10,11); // RX, TX

String server = "www.aprende-web.net";

//variables para enviar al servidor


int variable1=364;
float variable2=3.14;

String cadena="";

void setup() {

SerialESP8266.begin(9600);
Serial.begin(9600);
SerialESP8266.setTimeout(2000);

//Verificamos si el ESP8266 responde


SerialESP8266.println("AT");
if(SerialESP8266.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)


SerialESP8266.println("AT+CWMODE=1");
if(SerialESP8266.find("OK"))
Serial.println("ESP8266 en modo Estacion");

//Nos conectamos a una red wifi


SerialESP8266.println("AT+CWJAP=\"nombre_red\",\"contraseña\"");
Serial.println("Conectandose a la red ...");
SerialESP8266.setTimeout(10000); //Aumentar si demora la conexion
if(SerialESP8266.find("OK"))
Serial.println("WIFI conectado");
else
Serial.println("Error al conectarse en la red");
SerialESP8266.setTimeout(2000);
//Desabilitamos las conexiones multiples
SerialESP8266.println("AT+CIPMUX=0");

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 19/37
24/2/2018 Arduino y ESP8266 como cliente web
if(SerialESP8266.find("OK"))
Serial.println("Multiconexiones deshabilitadas");

//------fin de configuracion-------------------

delay(1000);

void loop() {

//--- programa----------------------

variable1=analogRead(A0);
variable2=3.14;
//otras operaciones
// . . .

//---------enviamos las variables al servidor---------------------

//Nos conectamos con el servidor:

SerialESP8266.println("AT+CIPSTART=\"TCP\",\"" + server + "\",80");


if( SerialESP8266.find("OK"))
{
Serial.println();
Serial.println();
Serial.println();
Serial.println("ESP8266 conectado con el servidor...");

//Armamos el encabezado de la peticion http


String peticionHTTP= "GET /php/ejemplos/ej10destino.php?a=";
peticionHTTP=peticionHTTP+String(variable1)+"&b="+String(variable2)+" HTTP/1.1\r\n";
peticionHTTP=peticionHTTP+"Host: www.aprende-web.net\r\n\r\n";

//Enviamos el tamaño en caracteres de la peticion http:


SerialESP8266.print("AT+CIPSEND=");
SerialESP8266.println(peticionHTTP.length());

//esperamos a ">" para enviar la petcion http


if(SerialESP8266.find(">")) // ">" indica que podemos enviar la peticion http

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 20/37
24/2/2018 Arduino y ESP8266 como cliente web
{
Serial.println("Enviando HTTP . . .");
SerialESP8266.println(peticionHTTP);
if( SerialESP8266.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(SerialESP8266.available()>0)
{
char c=SerialESP8266.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()>500) //Pueden aumentar si tenen suficiente espacio en la memoria
{
Serial.println("La respuesta a excedido el tamaño maximo");

SerialESP8266.println("AT+CIPCLOSE");
if( SerialESP8266.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");
SerialESP8266.println("AT+CIPCLOSE");
if( SerialESP8266.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();

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 21/37
24/2/2018 Arduino y ESP8266 como cliente web
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 conectarse con el servidor");
}

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

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


}

Como se observa son la misma secuencia de comandos que se enviaron manualmente. Trabajamos con dos comunicaciones
serial, una (por software) para comunicarnos con el ESP826 y otra (por hardware) para comunicarse con la PC y monitorear el
ejemplo.

A continuación mostramos la salida del monitor serial, datos que deben recibir si todo les va bien:

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 22/37
24/2/2018 Arduino y ESP8266 como cliente web

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 23/37
24/2/2018 Arduino y ESP8266 como cliente web

Tags: Wi ESP8266 iot

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 24/37
24/2/2018 Arduino y ESP8266 como cliente web

14 ? 0 0 0 Compartir 1

48 Comments

Marlo Edgar Delgado Bazan


oct 12, 2016

hola, estado probando el tutorial de cliente web y me a salido todo bien con el ejemplo que ponen en dicho tutorial, pero al querer replicar en mi
dominio me sale error en la utima parte (no me devuelve nada), nose si tendría que configurar algo en la parte del servidor si me pudieran ayudar
les agradeseria muchísimo. gracias de antemano.

Reply

Naylamp
oct 14, 2016

Hola marlo, hasta que paso logra comunicarse con tu servidor, en nuestro ejemplo primero se conecta al servidor (verifica que
pase esto) después envía la petición (verifica también que logre enviar la petición) y finalmente espera la respuesta, Si no tienes
ninguna respuesta aumenta el tiempo de espera, puede ser que el servidor demore en responder.

Reply

Luis Gerardo
oct 24, 2016

Hola buenos dias, gracias por el tutorial muy bueno, despues de una semana de estar probando por fin pude mandar datos al servidor. Me a
sido de gran utilidad.

Reply

Sergiotas
dic 11, 2016

Saludos, estoy realizando los montajes y quisiera saber si es posible programar simultáneamente un webserver para controlar unos leds y
acceder a información de sensores en una web local y a la vez que envíe datos de los sensores y estados de los leds en una pagina del tipo

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 25/37
24/2/2018 Arduino y ESP8266 como cliente web

Thingspeak. Me gustaría alguna pista o algún enlace para ver si puedo usar mi arduino uno con esp8266 con las dos Funcionalidades. Gracias y
saludos.

Reply

Naylamp
dic 14, 2016

Hola, podrías programar que en un momento trabaje como servidor por ejemplo para hacer configuración y ver información y
después trabajar como como cliente. Pero si lo usas como clientes mejor que el usuario acceda al servidor externo que es en
donde ya están tus datos.

Reply

Liliam
jul 16, 2017

hola, Sergiotas pudiste solucionar tu duda me pasa lo mismo con un sensor de temperatura

Reply

jorge
ene 2, 2017

Comparto un adaptador DIP para el ESP12E (ideal para pruebas en


protoboard)https://mega.nz/#!9UkAyBRa!Jyji4riXKnQK3LbNtU03Zv7CqWEkQQkiyFXeOJjicNc
http://www.mediafire.com/file/7l7t7l48fx6hnd3/esp12E-adap.brd

Reply

jorge
ene 2, 2017

el pcb está en Eagle

Reply

Gonzalo Bravo

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 26/37
24/2/2018 Arduino y ESP8266 como cliente web
feb 14, 2017

Estimado: Una consulta con respecto a la ultima parte (3. Arduino como cliente web usando ESP8266) ¿Sabes si existe alguna complicación
en el caso de que el hosting de la pagina web sea gratis? Saludos de antemano!

Reply

Naylamp
feb 18, 2017

Hola Gonzalo, No debería haber problemas con usar un servidor gratuito, en caso sea lento y demore la respuesta debes de
aumentar el tiempo de espera.

Reply

ricardo
feb 19, 2017

Hola manualmente me sale todo muy bien pero en el codigo programado para q todo sea automatico no me devuelve la peticion pero entra al
bucle de send

Reply

Gonzalo Bravo
feb 20, 2017

Entonces sabes por qué se puede producir este error al hacer la prueba usando los comandos AT? Esta es la respuesta del servidor:

+IPD,391:HTTP/1.1 408 Request Timeout


Date: Mon, 20 Feb 2017 17:29:00 GMT
Server: Apache
Content-Length: 221
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head>


<title>408 Request Timeout</title>

Reply

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 27/37
24/2/2018 Arduino y ESP8266 como cliente web

Hernan
feb 23, 2017

Eso me estaba pasando a mi, el error que yo encontré y como lo solucione, es que en el comando AT+CIPSEND="bytes" estaba
poniendo el numero errado, no se por que, pero conté otra vez carácter por carácter y el resultado le sume 1 y con ese numero
me funciono. Todo eso para el envió manual, ahora tengo problemas cuando intento que el arduino lo haga solo, y se que el error
esta en el rn que se le pone despues del HTTP /1.1 y des host.

Reply

Gonzalo Bravo
feb 20, 2017

Hola, haciendo las pruebas para hacer consultas al servidor usando los comandos AT tengo el siguiente problema al intentar conectar al
servidor: Envío AT+CIPSTART="TCP","www.aprende-web.net",80y recibo como respuesta: DNS Fail Gracias de antemano. ERROR

Reply

Naylamp
mar 25, 2017

Hola Gonzalo, posiblemente no se haya conectado correctamente al wifi o la red no tenga acceso a internet, para descartar,
prueba en otra red o en una generada con el AP de tu celular.

Reply

juandavid8a
mar 10, 2017

Compañeros tengo un problema con el ESP8266 .. al llevar un aproximado de 5 horas en linea .. la ip se vuelve inaccesible .. alguna idea de
porque pasa esto o como corregirlo ??

Reply

Naylamp
mar 25, 2017

Posiblemente sea por ruido en la fuente o desbordamiento de variables, un reseteo debería solucionar esto, podrías implementar
también un reset desde programa cada cierto tiempo. Podría ser también problemas con la conexión, intenta probar en otra red, o
http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 28/37
24/2/2018 Arduino y ESP8266 como cliente web

acercarte más para recibir una mejor señal.

Reply

Iñaki
mar 27, 2017

Hola buenas! al recibir los datos de la variable son una String, cuando intento guardarlos en la variable int me sale siempre el valor 4 le dejo el
ejemplo de lo que comento,

int id;
String GETID = client.readStringUntil('r');
Serial.println (GETID);
client.flush();
idmlg = GETID.indexOf("/idmlg=");
Serial.print (id);
delay(10);

Reply

Naylamp
abr 9, 2017

Hola, estás usando la variable idmlg en lugar de la variable id, también estás interpretando mal la función indexOf(), ésta no te
devuelve el numero en la cadena sino te devuelve la posición a partir de donde está la cadena que le ingresas como parámetro,
para obtener la poción del número tendrías que sumarle 7 (tamaño de "/idmlg="), una vez conocido la posición a partir de donde
está el número, puedes usar substring() para extraer el número, pero este aun seguirá siendo un string, tendrás que usar toInt()
para convertirlo en un número.

Reply

Sergio
abr 3, 2017

Hola, gracias por los dos tutoriales, están muy bien. He logrado ambas partes, crear un server y recibir datos ok y por otro lado también trabajar
como cliente y enviar datos a un servidor. Los he adaptado un poco a mis necesidades y todo ok. El caso, es que lo que necesito es funcionar
de ambas maneras, a veces necesito recibir datos de un servidor y otras veces soy yo el que tengo que enviarlos, pues bien, es en este punto
donde no soy capaz. Ya que en un punto si lo configuro como estación me va, pero para el otro no y como estación me pasa lo mismo. De un
modo rudimentario pensé que podría encapsular ambas configuraciones por separado y en función de una variable de control acceder a una u
http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 29/37
24/2/2018 Arduino y ESP8266 como cliente web

otra, el caso es que dentro del loop() no me conecta a la red wifi, responde AT correcto pero cuando trato de conectar a la red wifi falla...Alguna
idea???? Gracias de antemano.

Reply

Naylamp
abr 9, 2017

Hola Sergio, en ambos tutoriales se usa el ESP8266 como estación (AT+CWMODE=1) de esta forma el ESP8266 es el que
se conecta a una red wifi, de lo contrario seria AP (AT+CWMODE=2) y tendríamos que configurar un clave y psw para que
otros dispositivos se conecten a la red wifi que el ESP8266 ha creado.
Si te vas a comunicar con un servidor, entonces tienes que usar el tutorial actual, de esta forma puedes tanto enviar como
recibir datos del servidor, para enviar datos es tal cual se explica en el tutorial, para recibir datos es de igual forma, tienes que
enviar una consulta al servidor y el servidor te debe enviar los datos como respuesta en este caso tu tendrías que procesar la
respuesta para obtener los datos.

Reply

Alex
may 9, 2017

Hola. He conseguido que el programa del arduino me funcione y la respuesta del monitor serial coincide. El problema es que en la página web
no se me actualizan los valores que he enviado. Alguien conoce alguna solución? Gracias de antemano.

Reply

miquel
may 20, 2017

SerialESP8266.println("AT+CWJAP="Naylamp","hail_hydra""); no me compila cuando llega a esta lineainconsistent user-defined literal suffixes


'Naylamp' and 'hail_hydra' in string literalalguna solución?

Reply

mig

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 30/37
24/2/2018 Arduino y ESP8266 como cliente web
may 21, 2017

prueba la siguiente línea: SerialESP8266.println("AT+CWJAP="nombre_de_red","contraseña"");

Reply

Naylamp
may 31, 2017

Ya fue corregido, la línea escrita correctamente es:


SerialESP8266.println("AT+CWJAP=\"nombre_de_red\"\,"contraseña\"");

Reply

Jorge
may 21, 2017

Aquí tenéis mas ejemplos para el ESP8266

Reply

Alvaro
jun 12, 2017

hola, Esta muy bine el tutorial.Quisiera, si puedes que me orientaras, tengo una bd mysql con las temperaturas de unas habitaciones
almacenadada, con ESP8266 consigo cambiar esas temperaturas en la base de datos a traves de un php. Pro la pregunta es, si yo cambio los
datos en la tabla mysql desde el servidor web, ¿como puedo mandar una notificación al ESP8266, para que cambie la temperatura, cada vez
que yo cambien un dato?Gracias

Reply

Naylamp
jun 30, 2017

Hola Alvaro, el caso que mencionas es una de las limitaciones al usar http, EL ESP8266 tendría que estar consultando cada
cierto tiempo al servidor para ver si hay algún cambio.

Reply

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 31/37
24/2/2018 Arduino y ESP8266 como cliente web

Annie
jul 22, 2017

Hola, tengo un problema al hacer la petición http, aparece que se envió de manera correcta pero me muestra esto:
+IPD,391:HTTP/1.1 408 Request Timeout
Date: Sun, 23 Jul 2017 02:48:11 GMT
Server: Apache
Content-Length: 221
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">


<html><head>
<title>408 Request Timeout</title>

Reply

Naylamp
jul 30, 2017

Hola Annie esa respuesta del servidor es porque la petición a superado el tiempo de espera del servidor, una razón es porque el
servidor esta demasiado ocupado, para descartar escribe el link en el navegador si obtienes la misma respuesta es un problema
del servidor. La segunda causa y la más común es porque la petición no se ha enviado completamente, esto porque no se ha
calculado el tamaño correcto de la cadena de la petición o no se ha enviado los dos saltos de línea al final.

Reply

Lus Fernando
ago 14, 2017

Hola, he estado siguiendo tus blogs pero al llegar a este blog me manda un error en el paso de AT+CIPSEND=83 me dice link is not valid, me
imagino que el servidor (www.aprende-web.net) ya no está disponible

Reply

Naylamp
ago 29, 2017

Hola, el comando AT+CIPSEND=83 es para indicar el tamaño de la petición, en el comando anterior te tenía que haberte
respondido con CONNECT sino es un error que ha arrastrado del comando anterior.

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 32/37
24/2/2018 Arduino y ESP8266 como cliente web

Reply

Rene
ago 21, 2017

Hola, cómo se le hace para que esta operación trabaje asincronamente,? porque quiero hacer otras operaciones además de la conexión pero se
limita a que tiene que terminar la conexión para avanzar con mi siguiente método.

Reply

Naylamp
ago 29, 2017

Hola, Lamentablemente es uno de los problemas cuando se trabaja con microcontroladores, si tus otros métodos o tareas son
pequeñas o rápidas, lo puedes incluir en funciones y llamarlas durante la conexión, o usar Interrupciones. Existen varios trabajos
para realizar multitarea, revisa ArduinoThread y RTOS para arduino.

Reply

MAURICIO
sep 12, 2017

Hola que tal? tengo este problema me aparece este mensaje de enviado "OK" pero no llega nada. ademas del error 400Unknown Version.
necesito su ayuda.graciasESTE ES EL CODIGO:busy s... Recv 83 bytesSEND OK+IPD,102:HTTP/1.1 400 Unknown Version Content-Length: 0
Connection: close Server: Jetty(9.0.3.v20130506)

Reply

jonathan
sep 28, 2017

hola tengo una inquietud realice el cambio de la velocidad, por error ingrese un parámetro mal, ya no me reconoce los comando, como puedo
realizar un reset de la velocidad de transmisión.muchas gracias.

Reply

CARLOS

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 33/37
24/2/2018 Arduino y ESP8266 como cliente web
oct 14, 2017

hola disculpa hice un servidor local con xampp y al llegar a la parte de configurar mi esp8266 cuando ejecuto el comando
AT+CIPSTART="TCP","127.0.0.2",80 me aparece ERROR CLOSE me podrias ayudar on esto te lo agradeceria

Reply

CARMAR
oct 22, 2017

Hola. Tengo un problema con el tiempo de refresco de la página web del servidor ESP8266. He montado un proyecto con un Arduino Mega
conectado a un ESP8266 con el que puedo encender/apagar varios Leds con unos botones, y ver la temperatura y humedad de los sensores
mediante una página web que lanza el ESP8266. Todo funciona perfectamente cuando estoy comunicando dentro de mi red local, pero cuando
lo hago desde "fuera" con mi teléfono móvil, la página web tarda hasta 4 minutos en aparecer. Lo curioso es que, una vez que aparece la página
web, el encendido y apagado de los leds es instantáneo, pero la lectura de temperatura y humedad (y toda la página web) tarda varios minutos
en refrescarse.He utilizado el puerto 80 del router como se indica en los tutoriales y varias configuraciones diferentes del módulo ESP8266, pero
no encuentro solución a dicho problema. Alguien ha tenido este problema o parecido? Alguna idea? Gracias de antemano por los tutoriales y las
explicaciones...

Reply

eleazar de la luz
nov 20, 2017

disculpa mi duda es sobre otro proyecto pero creo que me podrias ayudar, estoy tratando de enviar un mensaje con ethernet y arduino y ya
tengo el servidor pero me aparece el siguiente error.Parse error: syntax error, unexpected '@' in C:xampphtdocscorreoenviar.php on line 2y el
codigo que use en el php es este:

Reply

eleazar de la luz
nov 20, 2017

yo tengo un problema con algo parecido es otro proyecto, ya tengo listo el codigo de arduino es un correo que se envia con ethernet y arduino
uso un servidor y un archivo php y me sale este error en el navegadorParse error: syntax error, unexpected '@' in
C:xampphtdocscorreoenviar.php on line 2y el codigo que use en el php es este:

Reply

jose
http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 34/37
24/2/2018 Arduino y ESP8266 como cliente web
dic 5, 2017

hola duda se envia la primera vez bien pero ya despues de una vez no se vuelve a mandar alguna idea'?

Reply

Miguel Angel
dic 12, 2017

Artículo muy instructivo. Es justo la información que andaba buscando. Explicado de manera muy clara. Muchas gracias por el trabajo y
tiempos dedicados.

Reply

Renato
dic 19, 2017

Muy buena la info... Este es mi resultado: Peticion HTTP enviada:GET /eclipse-workspace/SerTesis/php/newfile.php?a=10&b=3.14 HTTP/1.0
Host: 192.168.1.5 Connection: closeEsperando respuesta...+IPD,433:HTTP)rŠ’‚‚z-5 Bate: Zue, 09 Dec 9017 06:33:0; GMTiempo de espera
agotadono lo entiendo ya probé todas las velocidades en baudios, en lo mismo. Ayuda..

Reply

Leo
ene 9, 2018

HOLA. Sale error en el monitor:Error en ESP8266 Conectandose a la red ... Error al conectarse en la red No se ha podido conectarse con el
servidor No se ha podido conectarse con el servidor No se ha podido conectarse con el servidor

Reply

Ely
ene 23, 2018

Hola! Disculpen al colocar el comando AT no recibo ninguna respuesta, que puedo hacer?

Reply

Daniel Montero
feb 19, 2018

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 35/37
24/2/2018 Arduino y ESP8266 como cliente web

Muchas gracias, me ha funcionado perfectamente. He probado con otras direcciones HTTP y funcionan perfecto. Necesito que me funcione para
HTTPS que debo modificar?

Reply

Leave a Reply
* Name:

* E-mail:
(Not Published)

Website:
(Site url withhttp://)

* Comment:

Submit

Boletín Introduzca su dirección de correo electróni 

  

Información 

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 36/37
24/2/2018 Arduino y ESP8266 como cliente web

Contacte con nosotros

Entrega

Condiciones de uso

Nosotros

Tutoriales y Proyectos con Arduino

Mapa del sitio

Mi cuenta 
Mis compras

Mis vales descuento

Mis direcciones

Mis datos personales

Mis vales

Información sobre la tienda 

 Naylamp Mechatronics SAC., Almacén: Mz. E Lote 31 Urb. Ingeniería, Trujillo - Perú //// Horario de atención: Lun. a Sab. de 9am. a 7pm.
 Llámanos ahora: 997646858
 Email: naylamp.mechatronics@gmail.com

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 37/37

S-ar putea să vă placă și