Professional Documents
Culture Documents
¿Qué es el ESP8266?
-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 núcleo Diamond Standard Core (LX3) hecho por Tensilica
-Su núcleo de arquitectura RISC 32bits corre a 80Mhz
-64KBytes de RAM de instrucciones
-96KBytes de RAM de datos
-Tiene GPIOs, I2C, ADC, SPI, PWM, y más:
http://www.esp8266.com/wiki/doku.php?id=feature_set.
-Los módulos cuentan con una memoria flash SPI Winbond W25Q40BVNIG
-Los ESP8266 son fabricados por Espressif
-Los módulos que usan este chip son de varios fabricantes y vienen en diferentes formatos.
Usando el Firmware AT
El firmware AT que viene por defecto en el ESP-01 es el ai-thinker V0.9.2.4.
Lista de comandos:
Comando Respuesta Función
AT - Probar iniciación correcta
AT OK Prueba si el
módulo responde
correctamente
AT+RST - Reinicia el módulo
AT+RST OK Resetéa el
módulo
AT+CWMODE - Modo Wifi
AT+CWMODE=? +CWMODE:(1-3) Lista los modos
OK validos
AT+CWMODE? +CWMODE:modo Pregunta en que
OK modo AP esta
actualmente el
módulo
AT+CWMODE=modo OK Establece el
módulo en el
modo dado
1 = Modo
estación (cliente)
2 = Modo AP
(huésped)
3 = Modo AP +
Estación (modo
dual)
AT+CWLAP - Lista APs disponibles
AT+CWLAP AT+CWLAP:ecn,ssid,rssi,mac Lista los Acess
OK Points disponibles
para conectarse.
ecn: codificación,
puede ser:
0 = Abierto
1 = WEP
2 = WPA PSK
3 = WPA2 PSK
4 = WPA WPA2
PSK
ssid: String que
contiene el SSID
del AP
rssi: Fuerza de la
señal
mac: String que
contiene la
dirección MAC
AT+CWLAP=ssid,mac,ch +CWLAP:ecn,ssid,rssi,mac Busca Acess
OK Points disponibles
para conectarse
con las
condiciones
especificadas
AT+CWJAP - Unirse a un Access Point
AT+CWJAP? + CWJAP:ssid Imprime el SSID
OK al que el módulo
esta conectado
AT+CWJAP=ssid,pwd OK El módulo se
conecta al la red
con el nombre
ssid indicado y la
contraseña pwd
suministrada
AT+CWQAP - Desconectarse de una Access Point
AT+CWQAP OK Se desconecta de
la red que esta
actualmente
conectado
AT+CWSAP - Configurar el softAP del módulo
AT+CWSAP? +CWSAP:ssid,pwd,ch,ecn Pregunta la
OK configuración
actual del softAP
AT+CWSAP=ssid,pwd,ch,ecn OK Configura el
softAP con
ssid: String con el
nombre de la red
pwd: Contraseña,
no mayor a 64
caracteres
ch: Canal
inalámbrico
ecn: Tipo de
codificación
1 = Abierto
2 = WPA_PSK
3 = WPA2_PSK
4 =
WPA_WPA2_PS
K
AT+CIPSTATUS - Información acerca de la coneción
AT+CIPSTATUS STATUS:status status:
+CIPSTATUS:id,type,addr,port,tety 2 = Se obtuvo IP
pe 3 = Conectado
OK 4 = Desconectado
id: ID de la
conexión en caso
de multiconexión
(1-4)
type: Tipo de
conexión, "TCP"
o "UDP"
addr: Dirección
IP de la conexión
port: Numero del
puerto
tetype:
0 = El módulo
corre como
cliente
1 = El módulo
corre como
servidor
AT+CIPMUX - Habilitar o deshabilitar multiples conexiones
AT+CIPMUX=mode OK mode:
0 = Conexión
unica
1 = Múltiples
conexiones, hasta
4
AT+CIPMUX? +CIPMUX:mode Imprime el mode,
OK el modo de
conexión actual
AT+CIPSTART - Establece una conexión TCP o registra un puerto UDP e inicia la
conexión
AT+CIPSTART=type,addr,port OK Empieza una
conexión como
cliente (en modo
conexión única)
type: puede ser
"TCP" o "UDP"
addr: String que
contenga la
dirección IP
remota
port: String que
contenga el
puerto remoto
AT+CIPSTART=id,type,addr,p OK Empieza una
ort conexión como
cliente (En modo
conexión
múltiple)
id: ID de la
conexión (1-4)
AT+CIPSTART=? [+CIPSTART:(id)(“type”),(“ip Lista los posibles
address”),(port)] comandos
OK
AT + CIPCLOSE - Cierra la conexión TCP o UDP
AT+CIPCLOSE=? OK
AT+CIPCLOSE=id OK Cierra la
conexión TCP o
UDP con el ID
"id" en modo
conexión múltiple
AT+CIPCLOSE OK Cierra la
conexión TCP o
UDP para modo
de conexión única
AT+CIPSEND - Enviar datos
AT+CIPSEND=? OK
AT+CIPSEND=length SEND OK Establece la
longitud de datos
a enviarse
(máximo 2048).
Para un envío
normal (modo
conexión única)
AT+CIPSEND=id,length SEND OK Establece la
longitud de datos
a enviarse en la
conexión número
"id". Para un
envío normal
(modo conexión
múltiple)
AT+CIPSEND Envía datos sin
adornos cada
20ms. El módulo
retorna ">"
después ejecutar
el comando, si se
recibe el comando
"+++" se regresa
al modo
comando.
AT+CIFSR - Obtener la dirección IP local
AT+CIFSR=? OK
AT+CIFSR +CIFSR:ip Retorna la
OK dirección IP local
del módulo como
cliente.
AT+CIFSERVER - Configurar
como servidor
AT+CIPSERVER=mode[,port] OK Configura el
módulo como
servidor donde el
modo:
0 = Borrar
servidor
1 = Crear servido
puerto: numero
del puerto, por
defecto es el 333
AT+CIOBAUD Cambiar la velocidad de transmisión serial
AT+CIOBAUD=? +CIOBAUD:(9600-921600) Nos informa que
OK las velocidades de
transmisión
permitidas están
en este rango
AT+CiOBAUD? +CIOBAUD:baudrate Nos indica que el
OK módulo está
actualmente
configurado a
'baudrate'
AT+CIOBAUD=baudrate OK Configura la
velocidad de
transmisión a
'baudrate'
#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 monitor serial
if (ESP.available())
{ char c = ESP.read() ;
Serial.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 módulo, para esto
conectamos el pin RST a tierra y luego lo desconectamos, cuando lo desconectemos lo
siguiente debería aparecer.
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 versión de los códigos AT que está cargada. Cuando el módulo
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 módulo para se conecte a una red wifi de nuestra casa y
empieze a recibir datos:
El módulo solamente será cliente de una red inalámbrica existente por lo establecemos el
modo del módulo a estación (cliente), enviamos el comando:
AT+CWMODE=1
Este comando nos retorna "OK" si todo esta correcto, o "no change" si el módulo ya se
encontraba en ese modo. El modo se queda grabado aunque se desenergize el módulo.
AT+CWLAP
Ese comando nos retorna una lista con: el tipo de codificación, el nombre de la red,
intensidad de señal, dirección MAC del AP, de la siguiente manera.
+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 contraseña, cada dato tipo String siempre va
entre comillas:
AT+CWJAP="Naylamp","hail_hydra"
Si después de unos momentos nos responde con "OK" todo salio bien, sino revisa que
hayas puesto bien el nombre y contraseña de la red.
AT+CIPMUX=1
AT+CIPSERVER=1,80
Ahora vamos a obtener la dirección IP que tiene asignada el módulo en nuestra red local.
Para esto usamos lo siguiente.
AT+CIFSR
El módulo nos responderá con una dirección IP. En mi caso fue la 192.168.88.15 si
introducimos esta dirección IP en la barra URL de un navegador web como Google Chrome
sucede el navegador le solicita la página web al módulo, 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) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: es,en-US;q=0.8,en;q=0.6
OK
Link
En el navegador seguira esperando una respuesta (una página web) del módulo, pero como
no esta programado para responder no cargará nada. En el monitor serial, el texto de arriba
significa que se solicitó información (mediante el método http GET), la dirección a la que
va dirigida, tipo de conexión, tipo de archivo que espera recibir, tipo de cliente (navegador)
desde el cual se hizo la solicitud e idioma.
Link
OK
Link
En el texto recibido de arriba fijate en la línea que contiene +IPD, en ahi se encuentra el
texto que enviamos desde el navegador. Ahora podemos pasar información al módulo
mediante el navegador web.