Conexion Wi Fi Con Un Modulo ESP8266 PDF
Conexion Wi Fi Con Un Modulo ESP8266 PDF
Conexion Wi Fi Con Un Modulo ESP8266 PDF
Buscar
3 FEB 2015
infrarrojos
Hay entorno a una docena de diferentes módulos que implementan el integrado ESP8266 con diferentes formatos,
con diferentes tipos de antena o sin ella, con más o menos pines de entrada salida disponibles… de ellos los más Librería Arduino para controlar
difundidos son el Esp-01 y el Esp-02, usado en este caso y que se muestra en la imagen de abajo.
un display LED de dígitos de 7
de 6 dígitos de 7 segmentos y
teclado de 16 pulsadores
monitorización de la frecuencia
pulso
Archivos
marzo 2015
febrero 2015
enero 2015
diciembre 2014
Quiénes somos
Trucos
Tutoriales
Meta
Acceder
WordPress.org
http://polaridad.es/modulowifiesp8266/ 1/12
3/9/2015 Conexión WiFi con un módulo ESP8266
El ESP8266 trabaja a 3,3 V y aunque seguramente no se romperá inmediatamente si lo conectas por error a 5 V
es muy probable que se dañe a corto plazo, especialmente si se usa de forma intensiva. Por cierto, como se
calienta bastante con un uso intensivo, un accesorio interesante puede ser un pequeño radiador adhesivo que le
alargará la vida al integrado ESP8266.
http://polaridad.es/modulowifiesp8266/ 2/12
3/9/2015 Conexión WiFi con un módulo ESP8266
Además de la alimentación será necesario conectar la entrada y salida serie URXD y UTXD a las correspondientes
del microcontrolador y activar el integrado conectando a nivel alto el pin CHPD (chip-enable) El módulo funciona
correctamente dejando al aire tanto el pin RST (reset) como el resto.
Para realizar la grabación del nuevo firmware en la memoria del módulo, junto con las conexiones que antes se
han explicado, es necesario conectar a nivel bajo el pin GPIO0. Aunque en alguna documentación encontrarás que
es necesario conectar a nivel alto el pin GPIO02 (y también a nivel bajo el GPIO15 en algunas implementaciones) en
ninguna de las pruebas que yo he hecho ha sido necesario. En cambio, lo que sí ha sido necesario en muchos casos,
y no está documentado, ha sido resetear el integrado justo antes de la programación o la aplicación mostraba un
error de acceso.
Además del oficial, existen firmwares de diferentes autores. Es especialmente interesante NodeMcu que utiliza Lua
como lenguaje y que puede descargarse libremente de su repositorio de GitHub.
El distribuidor Electrodragon también ofrece un firmware personalizado alternativo muy interesante, bastante
actualizado y que guarda compatibilidad con las órdenes AT del original. Su firmware modificado puede descargarse
de su cuenta en Google Drive.
En ESP8266 Community forum hay disponible mucha información sobre las distintas implementaciones del ESP8266
y también existen personalizaciones y correcciones al firmware así como algún kit de desarrollo alternativo que
se puede integrar en el entorno de desarrollo Eclipse.
La herramienta esptool
La herramienta esptool se usa principalmente para grabar en la memoria del módulo las nuevas versiones del
firmware pero además incluye una serie de utilidades, como la lectura de la dirección MAC, la identificación de la
flash, el volcado de la memoria… con las que gestionar el ESP8266.
Esta herramienta no dispone de GUI (de forma oficial) por lo que se utiliza desde la consola del sistema o la de
Python. Dependiendo de tu sistema podrá ejecutarse directamente invocando el script esptool.py o habrá que
lanzarlo obligatoriamente desde Python, por ejemplo, con python esptool.py desde la línea de órdenes del
sistema. También es posible, dependiendo de la configuración de tu sistema y tu usuario, que sea necesario lanzarlo
con privilegios administrativos, por ejemplo con sudo python esptool.py
En cualquier operación que se realice con esptool se pueden especificar los parámetros --port y --baud para
indicar, respectivamente, el puerto al que se conecta el módulo (algo como COM5 en Windows o /dev/ttyUSB0 en
Linux) y la velocidad en baudios a la que se conecta con el módulo. Una orden con estos parámetros quedaría, por
http://polaridad.es/modulowifiesp8266/ 3/12
3/9/2015 Conexión WiFi con un módulo ESP8266
ejemplo, así: python esptool.py --port /dev/ttyUSB0 --baud 9600 read_mac También es posible
abreviar los nombres de los comandos por su inicial y usar un guión en lugar de dos.
Los módulos más recientes suelen trabajar a 115200 baudios pero como existen tantas implementaciones es difícil
saberlo con seguridad así que es probable que sea necesario probar algunos valores hasta encontrar la velocidad
correcta de un módulo concreto.
load_ram
Carga una imagen en la RAM y la ejecuta. Necesita que se indique como parámetro el nombre del documento que
contiene la imagen que se quiere cargar en la memoria.
dump_mem
Graba en un documento una porción arbitraria de la memoria. Es necesario indicar tres parámetros: la dirección
de inicio de la memoria, la cantidad de memoria que se desea grabar y el nombre del documento en el que se
almacena.
read_mem
Lee la dirección de memoria que se indique como parámetro.
write_mem
Escribe un valor en una dirección de memoria. Es necesario especificar tres parámetros: la dirección de
memoria, el valor y la mascara de bits con la que se graba.
write_flash
Graba en la memoria flash una imagen que se carga desde un documento binario. Es necesario especificar la
dirección y el nombre del documento. Pueden indicarse en una única operación write_flash varias parejas de
direcciones documentos con lo que en una única orden se puede grabar todo el firmware.
run
Lanza la ejecución del código que hay en la memoria flash.
image_info
Muestra las cabeceras de la imagen que hay en memoria.
make_image
Crea una imagen a partir de los binarios. Necesita que se indique el documento que contendrá la imagen que se
cree, el segmento de entrada del documento binario, la dirección del segmento base y la dirección del punto de
entrada que serán, respectivamente, los parámetros --segfile (abreviado -f) --segaddr (abreviado -a) y --
entrypoint (abreviado -e)
elf2image
Crea una imagen a partir de un documento ELF. Será necesario indicar el documento ELF y el documento de
imagen resultante con el parámetro --output (abreviado -o)
read_mac
Lee de la OPT ROM el valor de la MAC del módulo.
flash_id
Lee el indicador de fabricante y dispositivo de la flash.
Como es lógico, la operación más frecuente es la grabación de una actualización del firmware. En el caso del
firmware oficial, se puede hacer en una sola orden (que se indica abajo en varias líneas por claridad) con el
formato:
python esptool.py
write_flash
0x00000 boot_v1.1.bin
0x01000 user1.bin
0x7C000 esp_init_data_default.bin
0x7E000 blank.bin
Aunque es posible usarlo inmediatamente, es recomendable resetear el módulo para evitar problemas con la nueva
imagen después de haberla grabado.
http://polaridad.es/modulowifiesp8266/ 4/12
3/9/2015 Conexión WiFi con un módulo ESP8266
Orden AT Descripción
AT Sirve para verificar si el sistema de órdenes AT está operativo
Activa o desactiva, respectivamente, el eco de los comandos AT. Normalmente el eco está
ATE1 activo por lo que se muestra tanto el resultado de la operación como la propia operación.
ATE0 Con esta orden se puede reservar alguna información, la clave del punto de acceso, por
ejemplo, mientras se muestra por una consola el resto de la información.
Establece el modo de funcionamiento WiFi del módulo. Hay tres disponibles (1) estación, (2)
punto de acceso y (3) mixto: punto de acceso y estación.
AT+CWMODE Por ejemplo, para establecer el modo de funcionamiento WiFi del módulo como estación se
usaría AT+CWMODE=1 y para consultar el modo actual de funcionamiento se usaría
AT+CWMODE?
AT+CSYSWDTENABLE Activa o desactiva el watchdog (perro guardián) que permite reiniciar el módulo
AT+CSYSWDTDISABLE automáticamente si se produce un error de funcionamiento.
Permite establecer una dirección MAC o consultar la actual tanto en el punto de acceso
(CIPAPAMAC) como en la estación (CIPSTAMAC). Para establecer una nueva dirección MAC se
AT+CIPSTAMAC
utiliza la orden con el formato AT+CIPSTAMAC={MAC} siendo {MAC} la dirección MAC en el
AT+CIPAPAMAC
formato 01:34:67:89:AB:CD
Para consultar la dirección MAC actual se usa la orden con el formato AT+CIPSTAMAC?
Muestra una lista con los puntos de acceso disponibles en el alcance del módulo, indicando
para cada uno de ellos la codificación, el SSID, el nivel de señal y la dirección MAC.
AT+CWLAP Las diferentes codificaciones se representan por un número: abierta=0, WEP=1, WPA/PSK=2,
http://polaridad.es/modulowifiesp8266/ 5/12
3/9/2015 Conexión WiFi con un módulo ESP8266
WPA2/PSK=3 y WPA/WPA2/PSK=3.
Se puede limitar la búsqueda a los puntos de acceso que cumplan ciertas condiciones como
el SSID, la MAC o el número de canal indicándolos en la orden.
Activa o desactiva el DHCP (asignación dinámica de dirección IP) en el punto de acceso y/o
en la estación.
AT+CWDHCP El formato de la orden es AT+CWDHCP={modo},{estado} siendo {modo} el código del que se
activa (0 para el punto de acceso, 1 para la estación o 2 para ambos) y {estado}
activar/desactivar DHCP según se use 1 ó 0 como valor.
AT+CIPSTA Establece la dirección IP de la estación (AT+CIPSTA) o del punto de acceso (AT+CIPAP) usada
AT+CIPAP en el formato AT+CIPSTA={IP} o muestra la actual usada en el formato AT+CIPSTA?
Muestra una lista de las direcciones IP de los dispositivos conectados al módulo en modo
AT+CWLIF
punto de acceso.
Establece el modo de conexión simple o múltiple según se use con el formato AT+CIPMUX=0 ó
AT+CIPMUX
AT+CIPMUX=1 respectivamente.
Configura el tiempo de espera (timeout) cuando el módulo funciona en modo servidor con el
AT+CIPSTO formato AT+CIPSTO={segundos}
Si se usa con el formato AT+CIPSTO? informa del timeout actual.
Inicia una conexión con un servicio. Es necesario indicar el tipo de conexión (TCP/UDP) la
dirección IP y el puerto al que se realiza la conexión con el formato AT+CIPSTART={id},
{TCP|UDP},{IP},{puerto} Siendo {id} el número de identificador de la conexión (si se aceptan
varias, es decir si se utilizó AT+CIPMUX=1, si AT+CIPMUX=0 no hay que indicarlo)
AT+CIPSTART
También es posible añadir al final de la orden (separado por comas como el resto de
parámetros) el puerto local y el modo si se trata de una conexión UDP.
Usada con el formato AT+CIPSTART=? muestra la información anterior relativa a la
conexión actualmente en curso.
Cierra una conexión activa. Cuando AT+CIPMUX=1 será necesario indicar la conexión que se
AT+CIPCLOSE
cierra usando el formato AT+CIPCLOSE={id}
Prepara el envío de datos. Cuando esté listo devolverá el código ">" como inductor para el
comienzo del envío. El formato cuando AT+CIPMUX=1 es AT+CIPSEND={longitud} siendo
{longitud} la cantidad de bytes que se van a enviar.
Si AT+CIPMUX=1 el formato es AT+CIPSEND={id},{longitud} siendo {id} el número de conexión a
http://polaridad.es/modulowifiesp8266/ 6/12
3/9/2015 Conexión WiFi con un módulo ESP8266
Lo más sencillo para familiarizarse con el uso de las órdenes AT del módulo ESP8266 es usar un ordenador y una
conexión serie que puede realizarse, por ejemplo, un conversor USB-serie (TTL) y la aplicación PuTTY, como expliqué
en el blog polaridad.es
Las siguientes imágenes muestran el cuadro de diálogo de configuración de la aplicación y un ejemplo de sesión
usando las órdenes AT sin eco local (sin mostrar las órdenes que se van escribiendo) por lo que aparece sólo el
resultado. Como el eco en el módulo sí está activado con (ATE1) pueden leerse las órdenes delante de las
correspondientes respuestas.
http://polaridad.es/modulowifiesp8266/ 7/12
3/9/2015 Conexión WiFi con un módulo ESP8266
Ahora que el módulo ya está actualizado y configurado y se conoce su uso por medio de órdenes AT es posible
implementarlo en un montaje. Para entender más fácilmente la conexión WiFi usando este módulo he desarrollado
una pequeña librería para el ESP8266 que implementa además de la conexión a un punto de acceso el envío de
peticiones HTTP para comunicarse con un servidor web.
Víctor Ventura
Programador multimedia y web. Mejor con software libre.
Desarrollando aplicaciones para la web conocí el potencial de internet de las cosas, encontré la
excusa perfecta para satisfacer la inquietud de aprender electrónica que tenía desde niño y
ahora puedo darme el gusto de programar las cosas que yo mismo diseño y fabrico.
16 Respuestas
Carlos 8 abril, 2015 | Responder
Hola, Carlos.
Ciertamente el módulo se calienta, pero sólo cuando se somete a trabajo exhaustivo; o
al menos eso es lo que yo he observado en los que he probado ¿Es tu caso? ¿Has
intentado ponerle un disipador como el que sugiero en el artículo?
La pérdida de conexión a la que te refieres (a falta de saber cómo lo usas en
concreto) parece deberse a un timeout muy bajo ¿Has probado a configurar tiempos
de espera más largos con AT+CIPSTO?
http://polaridad.es/modulowifiesp8266/ 8/12
3/9/2015 Conexión WiFi con un módulo ESP8266
A ver si con esas dos pistas te ayudo un poco. Por favor, cuéntanos cómo lo
solucionas finalmente.
Gracias por tu comentario
Hola, Carlos.
Los módulos ESP8266 que yo he probado funcionan de
forma estable, si bien es cierto que cuando se les hace
trabajar muy intensamente se calientan y en algún
caso, alguno de ellos, se me ha llegado a quedar
bloqueado (pero respondiendo a órdenes AT, por lo que
se puede recuperar) En mi caso siempre he podido
resolverlo optimizando el código.
Puede que se reinicien cuando se calientan, tiene
sentido, aunque eso nunca me ha pasado. A ojo, sigue
pareciéndome que ambas cosas, calentarse y reiniciarse,
son causas de una misma circunstancia, el uso intensivo
¿Has probado si el módulo que te da problemas va bien
cuando no lo haces trabajar mucho?
Ciertamente la configuración se pierde al reiniciar y
para resolver eso sólo se me ocurre cambiar el
firmware, es posible, pero son palabras mayores y no sé
hasta qué punto te merecería la pena.
Con respecto al tiempo de espera, siendo más práctico
que científico, se me ocurre que implementes una
especie de watchdog en tu aplicación para verificar si
el módulo está activo o activarlo en caso contrario.
Pero por pura curiosidad, yo revisaría el código o
empezaría por hacer uno sencillo de prueba sobre el que
experimentar; me parece raro que con un sólo cliente
(la tableta) no soporte el ESP8266 sin despeinarse.
Gracias por tus interesantes comentarios ¡Vuelve
pronto!
http://polaridad.es/modulowifiesp8266/ 9/12
3/9/2015 Conexión WiFi con un módulo ESP8266
Hola, querria saber si es posible transmitir por TCP por ejemplo el contenido de un archivo de imagen
por el módulo. Lo he intentado primero con un archivo de texto y se envia todo pero al probar
CIPSEND con un archivo binario no lo recibo bien con un programa de java que he hecho. Parece como
si CIPSEND no enviara todos los bytes. Gracias
Hola, Xavi.
En principio debería funcionar, aunque se me ocurren unas cuantas circunstancias en
las que pueden producirse problemas; no sé si son las tuyas, me das poca información
como para ayudarte.
Por favor ¿Podrías precisar más? La parte del código con la que manejas el módulo
ESP8266 también aclararía algo
¿Lo has hecho para Arduino? ¿Has usado la librería para el ESP8266 que propuse?
Mientras, se me ocurren un par de líneas de trabajo: (1) Probar a enviar una imagen a
tu programa en Java desde otro origen, para asegurarte de que funciona y/o enviar
la imagen a una aplicación que seguro funcione, como un servicio web, por ejemplo (2)
Enviar los datos de la imagen en formato Base64, que es texto plano que parece que
sí funciona, y reconstruir con ellos la imagen en tu aplicación Java.
Un saludo y gracias por visitar la web
Buen día,
Me parece interesante varios de tus artículos con respecto al módulo WiFi ESP8266, tengo varias
dudas, no sé si me puedas aconsejar para mi proyecto. Tengo que hacer una comunicación del Arduino
a una App de android (que también me toca hacer), donde mi App es el cliente y el servidor es el
Arduino. Es posible recibir tramas en bits? Puedo recibir las tramas por Comunicación serial?
Gracias.
Hola, Tito.
http://polaridad.es/modulowifiesp8266/ 10/12
3/9/2015 Conexión WiFi con un módulo ESP8266
una descripción más concreta del proyecto y con eso podemos darte alguna idea en la
web.
¿Alguna otra sugerencia de alguien del público?
Hola,
He estado usando este modulo para enviar datos de unos sensores a un servidor. El problema es que
el dispositivo irá con batería y será necesario dormir el esp para tener una autonomía mayor. ¿Saber
si podre hacerlo sin cambiar el firmware? En mi caso en lugar de un arduino estoy usando un
stm32f100.
Gracias.
Mi problema es tener que contar los datos para armar la trama. ¿Tienes algún ejemplo bidireccional?
Server TCP-Cliente.
Saludos.
Hola Víctor,
Quería preguntarte si tu blog tiene algún tipo de licencia sobre el contenido para poder copiar la
tabla de comandos AT, es un poco rollo redactarla de nuevo con lo bien que la has dejado
Saludos!
¡Hola!
http://polaridad.es/modulowifiesp8266/ 11/12
3/9/2015 Conexión WiFi con un módulo ESP8266
Hola. Estoy tratando de hacer andar mi ESP8266 pero tengo algún que otro problema. Ahora necesito
fijarle una IP a mi módulo en mi router. Para ello necesito saber la mac del ESP8266. Le he enviado el
comando AT+CIPAPAMAC y AT+CIPSTAMAC pero con ambas me da error.
Intenté darle una dirección MAC dentro de los límites, pero también me da error.
Aclaro que pruebo esto a penas conecto la alimentación al módulo ESP8266 (por supuesto, espero que
me de el mensaje READY para hacerlo)
Muchas gracias.
Hola, David.
Las operaciones sobre la MAC no me han dado problemas, pero tampoco recuerdo desde
qué versión del firmware están disponibles ¿Has actualizado el firmware de tu
ESP8266? Excepto en los módulos más recientes, los ESP8266 suelen entregarse con
versiones muy primitivas del firmware. Yo empezaría por ahí, por actualizarlo para
estar seguro de que esas órdenes AT están disponibles y los problemas no estén
relacionados con errores ya corregidos en el firmware.
¡Suerte con tu proyecto y gracias por visitar nuestra web!
Comentarios
Enviar
http://polaridad.es/modulowifiesp8266/ 12/12