You are on page 1of 22

16/7/2017 Arduino y ESP8266 como cliente web

Contacte con nosotros Iniciar sesin

Buscar

0
S/. 0,00

CATEGORAS
All Blog News Arduino y ESP8266 como cliente web

ARTCULOS POPULARES

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

Con guracin del mdulo bluetooth HC-05 usando comandos AT ago 08, 2015

Tutorial Mdulo GPS con Arduino jun 25, 2015

ARTCULOS 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

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 1/22
16/7/2017 Arduino y ESP8266 como cliente web

PROMOCIONES ESPECIALES
Mdulo PIR HC-SR501
Con este mdulo podrs detectar...

S/. 8,00 S/. 10,00

Todas los promociones especiales

ETIQUETAS

sensor robot cnc Servo infrarrojo LED LCD driver Fuente cable

NOVEDADES
Piezo Buzzer activo 12mm
Agrega alertas o efectos de sonido a tus proyectos

S/. 1,00

Piezo Buzzer activo 22mm


Agrega alertas o efectos de sonido a tus proyectos

S/. 7,00

Shield Display LCD TFT 3.5"


Pantalla de 3.5", colores vvidos, incluye lector de tarjetas microSD.

S/. 70,00

Mdulo expansor IO PCF8574


El PCF8574 es un expansor de E/S compatible con la mayora de...

S/. 12,00

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 2/22
16/7/2017 Arduino y ESP8266 como cliente web
Sensor de presin BMP280
Sensor de presin baromtrica BMP280 de alta precisin y de bajo consumo...

S/. 15,00

Sensor de Presin, Temperatura y Humedad BME280


Sensor de monitoreo ambiental ideal para aplicaciones de Drones e...

S/. 28,00

Mdulo GY-91 MPU9250 + BMP280 : Acelermetro, Giroscopio, Magnetmetro, Altmetro I2C


Sensor ultra compacto de 10 grados de libertad (DoF)

S/. 50,00

Shield Relay v2
La manera ms sencilla y rpida de controlar cargas de alta corriente...

S/. 45,00

Todas los nuevos productos

Arduino y ESP8266 como cliente web


Posted by Tutoriales 29 Comments

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 3/22
16/7/2017 Arduino y ESP8266 como cliente web

Despus 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 informacin.

Este tutorial est ms orientado a un programador o desarrollador web, que a travs 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 travs 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 parmetro en un Dialogo HTTP


Cuando un navegador web (El cliente) quiere acceder a una pgina web (servidor) , enva
una peticin http (HTTP request) el servidor recibe la peticin y le responde con la pgina
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 pgina, pero cuando trabajemos con
Arduino tenemos que comunicarnos a travs de peticiones http.

Existen dos formas fciles de enviar datos junto con una peticin HTTP, estas son el
mtodo GET y POST, La diferencia principal entre estos dos mtodos es que en el mtodo
GET se envan los datos en la URL, quedando visible para el usuario, mientras que en el
mtodo POST los datos quedan ocultos para el usuario. Ambos mtodos son muy usados
y casi siempre estn implementados en las pginas 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 Mtodo 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 pgina a otra, sino de nuestro Arduino a una pagina web.

Para enviar datos por el mtodo 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 parmetros. Cuando al servidor le llega esta consulta, lee los dos
datos (a=125 y b=26), y le responde con una pgina web que muestra los datos que ha
recibido

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 4/22
16/7/2017 Arduino y ESP8266 como cliente web

Lo que hace la pgina es mostrarnos los datos que ha recibido.


El cdigo de la pgina 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>pgina de destino</title>
</head>
<body>
<h1>Al abrir esta pgina se han pasado las siguientes variables:</h1>
<?php
$a=$_GET['a'];
$b=$_GET['b'];
echo "<p>variable $a : $a";
echo "<p>variable $b : $b";
?>
</body>
</html>

Este cdigo esta subido en un servidor, y es el servidor el que ejecuta el cdigo 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 cdigo de la pgina que est subida en el servidor se puede programar para que se
conecte a una base de datos y subir las variables, descargar informacin o haga cualquier
otra accin, pero esto depender de su necesidad y de sus habilidades como
desarrollador web.

Pueden usar esta misma pgina para desarrollar el tutorial o programar y subir su propia
pgina a un servidor.
http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 5/22
16/7/2017 Arduino y ESP8266 como cliente web

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 estn impresos en la PCB pero pueden revisarlos en la
siguientes imagen: Pinout mdulo ESP8266

ESP8266 Arduino

TX D10

CH_PD 3V3

RST No conectado

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 6/22
16/7/2017 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 cada 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 relacin 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 enva a ese pin niveles de 3.3V
niveles que el Arduino los considera 1 lgicos.

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 accin.

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

#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());
}

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 7/22
16/7/2017 Arduino y ESP8266 como cliente web

Este programa solo es un repetidor serial todos los datos que enva el ESP8266 se
transmiten a la PC y los que se envan desde la PC se envan al ESP8266
Despus de cargar el programa, abrimos el monitor serial y verificamos que nuestro
monitor serial est a la velocidad de 9600 y tenga seleccionado la opcin ambos NL &
CR, seguidamente empezamos a enviar los comandos AT:
Test de comando AT
Enviamos:

AT

Recibimos:

OK

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 lnea de
cdigo y volver a cargar:

SerialESP8266.begin(115200);

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

Cambiar la velocidad de transmisin serial

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 8/22
16/7/2017 Arduino y ESP8266 como cliente web

Si la velocidad de transmisin 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 estaramos en el lmite de velocidad que soporta el SoftwareSerial y podran
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:
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 dems datos son otras configuraciones de la


comunicacin.
Seguidamente de hacer esto no podremos enviar ms 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 lnea de
cdigo:

SerialESP8266.begin(9600);

Despus, 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 estacin, es decir nos conectaremos a una red ya existente:

Enviamos:

AT+CWMODE=1

Recibimos:

AT+CWMODE=1
OK
http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 9/22
16/7/2017 Arduino y ESP8266 como cliente web

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 mltiples:
Debido a que vamos a trabajar como cliente web, deshabilitamos las conexiones mltiples,
que generalmente se utilizan cunado trabajamos como servidor:
Enviamos:

AT+CIPMUX=0

Recibimos:

AT+CIPMUX=0
OK

Conectarnos con el servidor:


Enviamos:

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

Recibimos:

CONNECT

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 10/22
16/7/2017 Arduino y ESP8266 como cliente web

Al hacer esto iniciamos la conexin como cliente, y se especifica el tipo de conexin


(TCP), el servidor (www.aprende-web.net) y el puerto (80),
Enviar el tamao de la peticin HTTP
Antes de enviar la peticin HTTP, es necesario especiar el tamao en caracteres de la
peticin:
Enviamos:

AT+CIPSEND=83

Recibimos:

AT+CIPSEND=83
OK
>

Cuando recibimos > significa que ya podemos enviar la peticin HTTP.


Enviar peticin HTTP

Despus de recibir > el ESP espera la peticin del tamao indicado para que
posteriormente lo envi, para esto enviamos lnea por lnea la siguiente peticin
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
http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 11/22
16/7/2017 Arduino y ESP8266 como cliente web

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


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>pgina de destino</title>
</head>
<body>
<h1>Al abrir esta pgina 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 pgina web de respuesta.
Notar que al final recibimos un CLOSED esto indica que se ha cerrado la conexin con el
servidor.

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 12/22
16/7/2017 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 cdigo es el siguiente:

#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);

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 13/22
16/7/2017 Arduino y ESP8266 como cliente web

//Verificamos si el ESP8266 responde


SerialESP8266.println("AT");
if(SerialESP8266.find("OK"))
Serial.println("Respuesta AT correcto");
else
Serial.println("Error en ESP8266");

//-----Configuracin de red-------//Podemos comentar si el ESP ya est configurado

//ESP8266 en modo estacin (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\",\"contrasea\"");
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");
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";

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 14/22
16/7/2017 Arduino y ESP8266 como cliente web

peticionHTTP=peticionHTTP+"Host: www.aprende-web.net\r\n\r\n";

//Enviamos el tamao 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
{
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 tamao 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();
Serial.println("Cadena recibida correctamente, conexion finalizada");
fin_respuesta=true;
}
}

}
else
{

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 15/22
16/7/2017 Arduino y ESP8266 como cliente web

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 continuacin 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 16/22
16/7/2017 Arduino y ESP8266 como cliente web

Tags: Wi ESP8266 iot

5 ? ? 0 ? Compartir

29 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 tendra que configurar algo en la parte del servidor si me pudieran ayudar
les agradeseria muchsimo. gracias de antemano.

Reply

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 17/22
16/7/2017 Arduino y ESP8266 como cliente web

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) despus enva la peticin
(verifica tambin que logre enviar la peticin) 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 simultneamente
un webserver para controlar unos leds y acceder a informacin de sensores en una web local y a
la vez que enve datos de los sensores y estados de los leds en una pagina del tipo Thingspeak.
Me gustara alguna pista o algn enlace para ver si puedo usar mi arduino uno con esp8266 con
las dos Funcionalidades. Gracias y saludos.

Reply

Naylamp
dic 14, 2016

Hola, podras programar que en un momento trabaje como servidor por ejemplo
para hacer configuracin y ver informacin y despus trabajar como como cliente.
Pero si lo usas como clientes mejor que el usuario acceda al servidor externo que
es en donde ya estn tus datos.

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

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 18/22
16/7/2017 Arduino y ESP8266 como cliente web

Gonzalo Bravo
feb 14, 2017

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

Reply

Naylamp
feb 18, 2017

Hola Gonzalo, No debera 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

Request Timeout
Server timeout waiting for the HTTP request from the client.

CLOSED

Reply

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 carcter por carcter 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
http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 19/22
16/7/2017 Arduino y ESP8266 como cliente web

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: Envo 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

Compaeros 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


debera solucionar esto, podras implementar tambin un reset desde programa
cada cierto tiempo. Podra ser tambin problemas con la conexin, intenta probar
en otra red, o acercarte ms para recibir una mejor seal.

Reply

Iaki
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, ests usando la variable idmlg en lugar de la variable id, tambin ests
interpretando mal la funcin indexOf(), sta no te devuelve el numero en la cadena
sino te devuelve la posicin a partir de donde est la cadena que le ingresas como
http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 20/22
16/7/2017 Arduino y ESP8266 como cliente web

parmetro, para obtener la pocin del nmero tendras que sumarle 7 (tamao de
"/idmlg="), una vez conocido la posicin a partir de donde est el nmero, puedes
usar substring() para extraer el nmero, pero este aun seguir siendo un string,
tendrs que usar toInt() para convertirlo en un nmero.

Reply

Sergio
abr 3, 2017

Hola, gracias por los dos tutoriales, estn muy bien. He logrado ambas partes, crear un server y
recibir datos ok y por otro lado tambin 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 estacin me va, pero para el otro no y como estacin me pasa lo mismo. De un modo
rudimentario pens que podra encapsular ambas configuraciones por separado y en funcin de
una variable de control acceder a una u 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 estacin


(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 tendramos 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 tendras 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 pgina web no se me actualizan los valores que he enviado.
Alguien conoce alguna solucin? 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
solucin?

http://www.naylampmechatronics.com/blog/54_arduino-y-esp8266-como-cliente-web.html 21/22
16/7/2017 Arduino y ESP8266 como cliente web

Reply

mig
may 21, 2017

prueba la siguiente lnea:


SerialESP8266.println("AT+CWJAP="nombre_de_red","contrasea"");

Reply

Naylamp
may 31, 2017

Ya fue corregido, la lnea escrita correctamente es:


SerialESP8266.println("AT+CWJAP=\"nombre_de_red\"\,"contrasea\"");

Reply

Jorge
may 21, 2017

Aqu tenis 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 notificacin 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 tendra que estar consultando cada cierto tiempo al servidor para ver si
hay algn cambio.

Reply

Leave a Reply
* Name:

* E-mail:
(Not Published)

Website:
(Site url withhttp://)

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

You might also like