Vous êtes sur la page 1sur 16

Tutorial ESP8266 Parte I

1 de 16

http://www.naylampmechatronics.com/blog/21_Tutorial-ESP8266-Part...

Tutorial ESP8266 Parte I

Posted by

0 Comments

ago 23, 2015

feb 19, 2015

jun 04,
2015

ago 06,
2016

jun 15, 2016

EL ESP8266 es un chip que gracias a la comunidad, sus


caractersticas y un gran precio ha logrado convertirse en uno de los
adaptadores Wifi ms populares, y es que este chip alberga gran
potencia en un pequeo tamao.

-Soporta el protocolo 802.11 b/g/n


-Capacidad para Wi-Fi Direct (P2P), Soft-AP
-Tiene integrado el stack del protocolo TCP/IP
-Tiene un ncleo Diamond Standard Core (LX3) hecho por
Tensilica
-Su ncleo de arquitectura RISC 32bits corre a 80Mhz
-64KBytes de RAM de instrucciones
-96KBytes de RAM de datos
-Tiene GPIOs, I2C, ADC, SPI, PWM, y ms:
.
-Los mdulos cuentan con una memoria flash SPI Winbond
W25Q40BVNIG
-Los ESP8266 son fabricados por Espressif
-Los mdulos que usan este chip son de varios fabricantes y
vienen en diferentes formatos.

03/10/2016 18:41

Tutorial ESP8266 Parte I

http://www.naylampmechatronics.com/blog/21_Tutorial-ESP8266-Part...

El ESP8266 est incluido en una gran variedad de mdulos de


diferentes formas y formatos.
may 25, 2016

Un pequeo y muy
potente Arduino,...

En este tutorial bsico vamos a trabajar con el ESP-01, uno de los


ms conocidos, este mdulo cuenta con los componentes necesarios
para que solamente alimentes el mdulo y lo empieces a utilizar.

S/. 20,00 S/. 25,00

El ESP-01 viene inicialmente con el firmware AT, con el cual puedes


usarlo como un adaptador wifi-serial, usando un microcontrolador
externo como un Arduino para controlarlo y comunicarse con la red
inalmbrica.
Como cualquier microcontrolador se puede cambiar el firmware del
ESP8266 y usar cualquiera de los disponibles, entre los ms
destacables estn, uLUA, microPython, y hasta programas hechos en
Arduino.

La conexin es bien sencilla solamente se necesita alimentar el


mdulo, conectar el pin Rx y Tx serial, y conectar el pin CH_PD a 3.3
para activar el chip.

Pantalla Oficial LCD


Touch de 7 pulgadas
2 de 16

Tomar en cuenta lo siguiente al usar el mdulo:


03/10/2016 18:41

Tutorial ESP8266 Parte I

http://www.naylampmechatronics.com/blog/21_Tutorial-ESP8266-Part...

-El ESP8266 se alimenta con 3.3V, no usar 5V!


-El ESP8266 NO tiene entradas tolerantes a 5V, as que necesitas
convertir el nivel de las entradas si quieres comunicarte con
dispositivos de 5V
-Durante los periodos de comunicacin inalmbrica el ESP8266
puede necesitar hasta 250mA, por lo que sin una buena fuente de
alimentacin el ESP8266 se puede resetear. Si este es el caso
utilizar un capacitor en las entradas de alimentacin o una fuente
de mayor potencia.

S/. 470,00

Soporte para montaje


en superficies
paralelas a las guas
de 8mm dimetro

El firmware AT que viene por defecto en el ESP-01 es el ai-thinker


V0.9.2.4.

S/. 10,00

Tipo

Ejemplo

Descripcin

Prueba

AT+CMD=?

Retorna los posibles valores


que puede tomar

Consulta

AT+CMD?

Retorna el valor actual del


parametro

Establecer

AT+CMD=Parametro

Establece el valor del


parametro de usuario

Ejecutar

AT+CMD

Ejecuta comandos sin


parametros de usuario

S/. 30,00

Por defecto se utiliza un baud rate de 9600.


Rodamiento polimrico
para gua de 8mm de
dimetro
S/. 15,00

Despus de cada comando, el ESP8266 espera los caracteres


especiales de nueva linea <CR><LF> para ejecutar el comando.

Comando

Respuesta

Funcin

OK

Prueba si el
mdulo respo
correctament

OK

Reseta el
mdulo

+CWMODE:(1-3)
OK

Lista los mod


validos

AT - Probar iniciacin correcta

AT

AT+RST - Reinicia el mdulo


AT+RST
AT+CWMODE - Modo Wifi
AT+CWMODE=?

3 de 16

03/10/2016 18:41

Tutorial ESP8266 Parte I

4 de 16

http://www.naylampmechatronics.com/blog/21_Tutorial-ESP8266-Part...

Comando

AT+CWMODE?

Respuesta

Funcin

+CWMODE:modo
OK

Pregunta en q
modo AP esta
actualmente e
mdulo

OK

Establece el
mdulo en el
modo dado
1 = Modo
estacin (clie
2 = Modo AP
(husped)
3 = Modo AP
Estacin (mo
dual)

Cristal oscilador de
16 MHz de
frecuencia. Utilizado
en Arduino Uno,...
S/. 2,00

AT+CWMODE=modo

AT+CWLAP - Lista APs disponibles

AT+CWLAP:ecn,ssid,rssi,mac
OK

Lista los Aces


Points dispon
para conecta
ecn: codificac
puede ser:
0 = Abierto
1 = WEP
2 = WPA PSK
3 = WPA2 PS
4 = WPA WPA
PSK
ssid: String q
contiene el S
del AP
rssi: Fuerza d
seal
mac: String q
contiene la
direccin MA

+CWLAP:ecn,ssid,rssi,mac
OK

Busca Acess
Points dispon
para conecta
con las
condiciones
especificadas

Ideal para unir los


extremos de nuestra
correa GT2.
S/. 10,00

AT+CWLAP

El mdulo Relay te
permite controlar el
encendido/apagado
de equipos de...
S/. 6,00

AT+CWLAP=ssid,mac,ch

AT+CWJAP - Unirse a un Access Point


Sensor capacitivo te
permite detectar
objetos metlicos y
no metlicos...

AT+CWJAP?

+ CWJAP:ssid
OK

Imprime el SS
al que el md
esta conectad

03/10/2016 18:41

Tutorial ESP8266 Parte I

5 de 16

S/. 40,00

http://www.naylampmechatronics.com/blog/21_Tutorial-ESP8266-Part...

Comando

AT+CWJAP=ssid,pwd

Respuesta

Funcin

OK

El mdulo se
conecta al la
con el nombr
ssid indicado
contrasea p
suministrada

AT+CWQAP - Desconectarse de una Access Point

AT+CWQAP

OK

Se desconec
la red que es
actualmente
conectado

AT+CWSAP - Configurar el softAP del mdulo

AT+CWSAP?

AT+CWSAP=ssid,pwd,ch,ecn

+CWSAP:ssid,pwd,ch,ecn
OK

Pregunta la
configuracin
actual del sof

OK

Configura el
softAP con
ssid: String co
nombre de la
pwd: Contras
no mayor a 6
caracteres
ch: Canal
inalmbrico
ecn: Tipo de
codificacin
1 = Abierto
2 = WPA_PS
3 = WPA2_PS
4=
WPA_WPA2_

AT+CIPSTATUS - Informacin acerca de la conecin

AT+CIPSTATUS

status:
2 = Se obtuvo
3 = Conectad
4=
Desconectad
id: ID de la
STATUS:status
conexin en c
+CIPSTATUS:id,type,addr,port,tetype
de multiconex
OK
(1-4)
type: Tipo de
conexin, "TC
o "UDP"
addr: Direcci

03/10/2016 18:41

Tutorial ESP8266 Parte I

Comando

http://www.naylampmechatronics.com/blog/21_Tutorial-ESP8266-Part...

Respuesta

Funcin
de la conexin
port: Numero del
puerto
tetype:
0 = El mdulo
corre como
cliente
1 = El mdulo
corre como
servidor

AT+CIPMUX - Habilitar o deshabilitar multiples conexiones

AT+CIPMUX=mode

OK

mode:
0 = Conexin
unica
1 = Mltiples
conexiones, hasta
4

AT+CIPMUX?

+CIPMUX:mode
OK

Imprime el mode,
el modo de
conexin actual

AT+CIPSTART - Establece una conexin TCP o registra un puerto UDP e inicia la


conexin

AT+CIPSTART=type,addr,port

OK

AT+CIPSTART=id,type,addr,port OK

AT+CIPSTART=?

[+CIPSTART:(id)(type),(ip
address),(port)]
OK

Empieza una
conexin como
cliente (en modo
conexin nica)
type: puede ser
"TCP" o "UDP"
addr: String que
contenga la
direccin IP
remota
port: String que
contenga el
puerto remoto
Empieza una
conexin como
cliente (En modo
conexin mltiple)
id: ID de la
conexin (1-4)
Lista los posibles
comandos

AT + CIPCLOSE - Cierra la conexin TCP o UDP

6 de 16

03/10/2016 18:41

Tutorial ESP8266 Parte I

http://www.naylampmechatronics.com/blog/21_Tutorial-ESP8266-Part...

Comando

Respuesta

AT+CIPCLOSE=?

OK

AT+CIPCLOSE=id

AT+CIPCLOSE

Funcin

OK

Cierra la conexin
TCP o UDP con
el ID "id" en modo
conexin mltiple

OK

Cierra la conexin
TCP o UDP para
modo de
conexin nica

AT+CIPSEND - Enviar datos


AT+CIPSEND=?

AT+CIPSEND=length

AT+CIPSEND=id,length

OK

SEND OK

Establece la
longitud de datos
a enviarse
(mximo 2048).
Para un envo
normal (modo
conexin nica)

SEND OK

Establece la
longitud de datos
a enviarse en la
conexin nmero
"id". Para un
envo normal
(modo conexin
mltiple)
Enva datos sin
adornos cada
20ms. El mdulo
retorna ">"
despus ejecutar
el comando, si se
recibe el
comando "+++"
se regresa al
modo comando.

AT+CIPSEND

AT+CIFSR - Obtener la direccin IP local


AT+CIFSR=?

AT+CIFSR

7 de 16

OK

+CIFSR:ip
OK

Retorna la
direccin IP local
del mdulo como
cliente.

03/10/2016 18:41

Tutorial ESP8266 Parte I

8 de 16

Comando

http://www.naylampmechatronics.com/blog/21_Tutorial-ESP8266-Part...

Respuesta

Funcin

OK

Configura el
mdulo como
servidor donde el
modo:
0 = Borrar
servidor
1 = Crear servido
puerto: numero
del puerto, por
defecto es el 333

AT+CIFSERVER - Configurar
como servidor

AT+CIPSERVER=mode[,port]

AT+CIOBAUD Cambiar la velocidad de transmisin serial

AT+CIOBAUD=?

AT+CiOBAUD?

AT+CIOBAUD=baudrate

+CIOBAUD:(9600-921600)
OK

Nos informa que


las velocidades
de transmisin
permitidas estn
en este rango

+CIOBAUD:baudrate
OK

Nos indica que el


mdulo est
actualmente
configurado a
'baudrate'

OK

Configura la
velocidad de
transmisin a
'baudrate'

Para la lista completa de comandos visita:

Vamos a realizar unas pruebas en las que el mdulo estar conectado


a un puerto serial por software del Arduino, el puerto serial por
hardware lo utilizaremos para comunicarnos con el Arduino via
monitor serial.
Para esta prueba vamos a necesitar un mdulo ESP-1, un protoboard,
cables dupont, resistencias y un Arduino UNO r3.
Conectamos como se muestra en la imagen:

03/10/2016 18:41

Tutorial ESP8266 Parte I

9 de 16

http://www.naylampmechatronics.com/blog/21_Tutorial-ESP8266-Part...

Ahora cargamos el siguiente cdigo en el arduino.


#include <SoftwareSerial.h>
SoftwareSerial ESP(3, 2); // RX | TX
void setup()
{ Serial.begin(9600);
ESP.begin(9600);
}
void loop()
{
// Repetir lo recibido por el ESP8266 hacia el monito
r serial
if (ESP.available())
{ char c = ESP.read() ;
Serial.print(c);
}
// Repetir lo recibido por el monitor serial hacia el
ESP8266
if (Serial.available())
{ char c = Serial.read();
ESP.print(c);
}
}

Ahora vamos a abrir el monitor serial en el IDE del Arduino y


configuramos los finales de linea a NL & CR, y el baud rate a 9600
como se muestra en la imagen:

Ahora para probar que todo funciona correctamente vamos a resetear


el mdulo, para esto conectamos el pin RST a tierra y luego lo
desconectamos, cuando lo desconectemos lo siguiente debera
aparecer.

03/10/2016 18:41

Tutorial ESP8266 Parte I

http://www.naylampmechatronics.com/blog/21_Tutorial-ESP8266-Part...

Los primeros caracteres son parte de un mensaje del bootloader que


no vamos a ver por el momento, se muestran as porque estan en otro
baudrate. La siguiente linea que esta entre '[ ]' es el fabricante y la
versin de los cdigos AT que est cargada. Cuando el mdulo
transmita "ready" significa que esta listo para recibir comandos.
Probemos con el comando AT, este modo retorna "OK" si todo est en
orden.

Ahora vamos a configurar el mdulo para se conecte a una red wifi de


nuestra casa y empieze a recibir datos:
El mdulo solamente ser cliente de una red inalmbrica existente por
lo establecemos el modo del mdulo a estacin (cliente), enviamos el
comando:
AT+CWMODE=1

Este comando nos retorna "OK" si todo esta correcto, o "no change" si
el mdulo ya se encontraba en ese modo. El modo se queda grabado
aunque se desenergize el mdulo.
Ahora vamos a ver las redes inalambricas disponibles enviando:
AT+CWLAP

Ese comando nos retorna una lista con: el tipo de codificacin, el


nombre de la red, intensidad de seal, direccin MAC del AP, de la
siguiente manera.

10 de 16

03/10/2016 18:41

Tutorial ESP8266 Parte I

11 de 16

http://www.naylampmechatronics.com/blog/21_Tutorial-ESP8266-Part...

+CWLAP:(4,"Naylamp",-55,"0a:18:d6:99:59:47",6)
+CWLAP:(2,"VecinoWifi",-78,"10:fe:ed:7a:a9:42",6)
+CWLAP:(3,"Anonymous-Pro",-92,"c4:17:fe:8a:2d:24",11)
OK

Ahora vamos a conectarnos a una de esas redes, para ello enviamos


el siguiente comando con el nombre de red seguido por la contrasea,
cada dato tipo String siempre va entre comillas:
AT+CWJAP="Naylamp","hail_hydra"

Si despus de unos momentos nos responde con "OK" todo salio


bien, sino revisa que hayas puesto bien el nombre y contrasea de la
red.
Ahora vamos a iniciar un servidor en el mdulo. Primero activamos el
modo de multiconexin
AT+CIPMUX=1

Luego que nos responda "OK" iniciamos el servidor y le asignamos


el nmero de servicio 1, este servidor correr en el puerto 80. Este
puerto es el mismo que usan los navegadores al solicitar una pgina
web, por lo que podremos probarlo en el siguiente paso.
AT+CIPSERVER=1,80

Ahora vamos a obtener la direccin IP que tiene asignada el mdulo


en nuestra red local. Para esto usamos lo siguiente.
AT+CIFSR

El mdulo nos responder con una direccin IP. En mi caso fue la


192.168.88.15 si introducimos esta direccin IP en la barra URL de un
navegador web como Google Chrome sucede el navegador le solicita
la pgina web al mdulo, para esto envia una serie de datos que
vamos a poder ver desde el monitor serial, ser algo como esto:
Link
+IPD,0,380:GET / HTTP/1.1
Host: 192.168.88.15
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=
0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKi
t/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/5
37.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: es,en-US;q=0.8,en;q=0.6

03/10/2016 18:41

Tutorial ESP8266 Parte I

http://www.naylampmechatronics.com/blog/21_Tutorial-ESP8266-Part...

OK
Link

En el navegador seguira esperando una respuesta (una pgina web)


del mdulo, pero como no esta programado para responder no
cargar nada. En el monitor serial, el texto de arriba significa que se
solicit informacin (mediante el mtodo http GET), la direccin a la
que va dirigida, tipo de conexin, tipo de archivo que espera recibir,
tipo de cliente (navegador) desde el cual se hizo la solicitud e idioma.
Ahora intentemos en el navegador con la siguiente direccin,
reemplazando 192.168.88.15 con la direccin que hayas obtenido
antes.
192.168.88.15/hola_mundo

En el monitor serial obtendremos:


Link
+IPD,0,380:GET /Hola_mundo HTTP/1.1
Host: 192.168.88.15
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=
0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKi
t/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/5
37.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: es,en-US;q=0.8,en;q=0.6

OK
Link

En el texto recibido de arriba fijate en la lnea que contiene +IPD, en


ahi se encuentra el texto que enviamos desde el navegador. Ahora
podemos pasar informacin al mdulo mediante el navegador web.

Vamos a implementar un interpretador de comandos en el Arduino


para controlar un LED desde el navegador.
Cargamos en el arduino el siguiente programa:
#include <SoftwareSerial.h>
// arduino Rx (pin 2) ---- ESP8266 Tx
// arduino Tx (pin 3) ---- ESP8266 Rx
SoftwareSerial esp8266(3,2);
void setup()

12 de 16

03/10/2016 18:41

Tutorial ESP8266 Parte I

http://www.naylampmechatronics.com/blog/21_Tutorial-ESP8266-Part...

{
Serial.begin(9600); // monitor serial del arduino
esp8266.begin(9600); // baud rate del ESP8255
pinMode(13,OUTPUT);
digitalWrite(13,LOW);
sendData("AT+RSTrn",2000);
// resetear mdulo
sendData("AT+CWMODE=1rn",1000); // configurar como client
e
sendData("AT+CWJAP="SSID","PASSWORD"rn",8000); //SSID y c
ontrasea para unirse a red
sendData("AT+CIFSRrn",1000);
// obtener direccin IP
sendData("AT+CIPMUX=1rn",1000); // configurar para multip
les conexiones
sendData("AT+CIPSERVER=1,80rn",1000);
// servidor
en el puerto 80
}
void loop()
{
if(esp8266.available())
// revisar si hay mensaje del E
SP8266
{
if(esp8266.find("+IPD,")) // revisar si el servidor recib
io datos
{
delay(1500); // esperar que lleguen los datos hacia el bu
ffer
int conexionID = esp8266.read()-48; // obtener el ID de l
a conexin para poder responder
esp8266.find("led="); // bucar el texto "led="
int state = (esp8266.read()-48); // Obtener el estado del
pin a mostrar
digitalWrite(13, state); // Cambiar estado del pin
while(esp8266.available()){
char c = esp8266.read();
Serial.print(c);
}
//responder y cerrar la conexin para que el navegador no
se quede cargando
// pgina web a enviar
String webpage = "";
if (state==1) webpage += "<h1>LED_13 = encendido!</h1>";
else { webpage += "<h1>LED_13 = apagado!</h1>";}
// comando para enviar pgina web
String comandoWebpage = "AT+CIPSEND=";

13 de 16

03/10/2016 18:41

Tutorial ESP8266 Parte I

http://www.naylampmechatronics.com/blog/21_Tutorial-ESP8266-Part...

comandoWebpage+=conexionID;
comandoWebpage+=",";
comandoWebpage+=webpage.length();
comandoWebpage+="rn";
sendData(comandoWebpage,1000);
sendData(webpage,1000);
// comando para terminar conexin
String comandoCerrar = "AT+CIPCLOSE=";
comandoCerrar+=conexionID;
comandoCerrar+="rn";
sendData(comandoCerrar,3000);
}
}
}
/*
Enviar comando al esp8266 y verificar la respuesta del md
ulo, todo esto dentro del tiempo timeout
*/
void sendData(String comando, const int timeout)
{
long int time = millis(); // medir el tiempo actual para
verificar timeout
esp8266.print(comando); // enviar el comando al ESP8266
while( (time+timeout) > millis()) //mientras no haya time
out
{
while(esp8266.available()) //mientras haya datos por leer
{
// Leer los datos disponibles
char c = esp8266.read(); // leer el siguiente caracter
Serial.print(c);
}
}
return;
}

Lo que hace el programa es automaticamente conectarse a una red


inalambrica de nombre SSID y con contrasea PASSWORD. Luego
incia un servidor en el puerto 80. Algo nuevo en este programa es que
cuando recibe la solicitud del navegador el mdulo le contesta con un
pequeo mensaje que se visualiza como pagina web en el navegador,
esto lo hace con la funcion AT+CIPSEND.
Podemos verificar la ip asignada al mdulo desde el monitor serial del
arduino, en mi caso es el 192.168.88.41. Con esta direccin puedo
controlar al LED 13 del arduino desde el navegador usando la
subdireccines

14 de 16

03/10/2016 18:41

Tutorial ESP8266 Parte I

15 de 16

http://www.naylampmechatronics.com/blog/21_Tutorial-ESP8266-Part...

192.168.88.41/led=0 para apagar el LED.

192.168.88.41/led=1 para encender el LED.

Con este tutorial hemos aprendido a usar el arduino en conjunto con


el ESP-1 para hacer un pequeo y simple servidor embebido.
Este fue solo un ejemplo y hay muchas cosas por mejorar como: solo
ejecutar comandos necesarios al inicio, algunos no necesitan
ejecutarse cada vez que se inicia el mdulo. Mejorar los tiempos de
respuesta para que sea inmediato. Tambin se puede aadir
funciones adicionales como mostrar los estados de los pines o del
ADC en la pgina web. Una interfaz con botones para controlar el
arduino.
En este tutorial solo vimos conectividad wifi en una red local, pero con
los mismos principios se puede conectar el mdulo a internet y asi
tener realmente un sistema con internet de las cosas.
23

Compartir

* Name:
* E-mail:
(Not
Published)
Website:
(Site url
withhttp://)

03/10/2016 18:41

Tutorial ESP8266 Parte I

16 de 16

http://www.naylampmechatronics.com/blog/21_Tutorial-ESP8266-Part...

* Comment:

Submit

Introduzca su direccin de correo electrnico

Naylamp Mechatronics,
Trujillo Per
Llmanos ahora:
997646858
Email:

03/10/2016 18:41

Vous aimerez peut-être aussi