Tutorial ESP8266 Parte I
1 de 16
[Link]
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
[Link]
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
[Link]
-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
[Link]
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
[Link]
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
[Link]
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
[Link]
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
[Link]
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
[Link]
Ahora cargamos el siguiente cdigo en el arduino.
#include <SoftwareSerial.h>
SoftwareSerial ESP(3, 2); // RX | TX
void setup()
{ [Link](9600);
[Link](9600);
}
void loop()
{
// Repetir lo recibido por el ESP8266 hacia el monito
r serial
if ([Link]())
{ char c = [Link]() ;
[Link](c);
}
// Repetir lo recibido por el monitor serial hacia el
ESP8266
if ([Link]())
{ char c = [Link]();
[Link](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
[Link]
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
[Link]
+CWLAP:(4,"Naylamp",-55,"[Link]",6)
+CWLAP:(2,"VecinoWifi",-78,"[Link]",6)
+CWLAP:(3,"Anonymous-Pro",-92,"[Link]",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
[Link] 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: [Link]
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
[Link]
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 [Link] con la direccin que hayas obtenido
antes.
[Link]/hola_mundo
En el monitor serial obtendremos:
Link
+IPD,0,380:GET /Hola_mundo HTTP/1.1
Host: [Link]
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
[Link]
{
[Link](9600); // monitor serial del arduino
[Link](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([Link]())
// revisar si hay mensaje del E
SP8266
{
if([Link]("+IPD,")) // revisar si el servidor recib
io datos
{
delay(1500); // esperar que lleguen los datos hacia el bu
ffer
int conexionID = [Link]()-48; // obtener el ID de l
a conexin para poder responder
[Link]("led="); // bucar el texto "led="
int state = ([Link]()-48); // Obtener el estado del
pin a mostrar
digitalWrite(13, state); // Cambiar estado del pin
while([Link]()){
char c = [Link]();
[Link](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
[Link]
comandoWebpage+=conexionID;
comandoWebpage+=",";
comandoWebpage+=[Link]();
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
[Link](comando); // enviar el comando al ESP8266
while( (time+timeout) > millis()) //mientras no haya time
out
{
while([Link]()) //mientras haya datos por leer
{
// Leer los datos disponibles
char c = [Link](); // leer el siguiente caracter
[Link](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 [Link]. 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
[Link]
[Link]/led=0 para apagar el LED.
[Link]/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
with[Link]
03/10/2016 18:41
Tutorial ESP8266 Parte I
16 de 16
[Link]
* Comment:
Submit
Introduzca su direccin de correo electrnico
Naylamp Mechatronics,
Trujillo Per
Llmanos ahora:
997646858
Email:
03/10/2016 18:41