El módulo ESP8266wifi.

Primer contacto con el módulo ESP8266WIFI.

Creado por V. García. El 16.04.2016

INTRODUCCIÓN.

Desde hace un tiempo, he estado siguiendo una serie de noticias sobre unos módulos experimentales que están recibiendo elogios por gran parte de los aficionados a la electrónica y que habitualmente se divierten (algunos viven de ellos), con sus proyectos, unas veces basados en la plataforma Arduino y otras veces basados únicamente estos módulos ESP8266, a los que me refiero. Estos módulos como ocurre en muchos de los dispositivos nuevos, tienen sus particular filosofía y los primeros pasos consisten en conocerlos y hacerles un sitio en nuestros proyectos, y eso es lo que vamos a intentar hacer.

El ESP8266-01 es un chip WiFi activado de muy bajo costo. A primera vista, parece con muy limitadas E/S accesibles, quizás por ese motivo hay tantas versiones.

EMPECEMOS.

Pensé en pedir uno de estos módulos y realizar algunos ejercicios con él. Había leído entre otras características que, se alimentan con 3’3 voltios, eso no me frenó, naturalmente no era suficiente o tal vez por pura euforia, ya que quería empezar a probarlo, la cuestión es que adquirí el ESP8266-01, pronto comprendí que era el miembro más sencillo de la familia, ya que sólo dispone de dos puertos GPIO 0 y GPIO 2 accesibles para el usuario.

Según el fabricante, el ESP8266 se encuentra entre los chips WiFi más integrados en la industria con el tamaño de 5 mm x 5 mm; que integra los conmutadores de antena, balum RF, amplificadores de potencia, amplificador recepción de bajo ruido, filtros, módulos de administración de energía, mientras que requiere mínima circuitería externa. La solución completa, incluyendo el módulo front-end, está diseñado para ocupar la mínima área del PCB, como se aprecia en la imagen.

esp8266_esp01 esp8266_esp01
Fig. 1 ESP8266-01

Este módulo ESP8266-01, es el más pequeño, tiene unas dimensiones muy pequeñas 25×14 mm y como he comentado, es el en la familia, el de menos puertos accesibles para el usuario.

Las conexiones de hardware necesarias para conectar el módulo ESP8266-01 son bastante sencillas, pero hay un par de elementos importantes a tener muy en cuenta relacionados con la energía:

El ESP8266 debe alimentar con 3,3 V de potencia, no se debe alimentar con 5 voltios!
El ESP8266 tiene que comunicarse a través de puerto Serial a 3,3 V y no tiene entradas que toleren 5V, por lo que necesita conversión de nivel para comunicarse con un microcontrolador de 5V como la mayoría que utiliza Arduino.

esp8266-12fesp8266_esp-12wifi
Fig. 2 – Estos son módulos de mayores prestaciones. ESP8266-12F   y   ESP8266 ESP-12WIFI

En algún sitio leí, si usted es aventurero y no tiene miedo a lo que pueda salir por lo ignorando, es el segundo requisito. Porque nadie se toma ninguna responsabilidad por lo que ocurre si usted lo hace. Así que, decidí que actualizaría el firmware de la ESP8266 a la última versión y vería si podía hacerlo funcionar.

Después de lo que he leído y probado, veo que cada uno estamos compilando distintas aplicaciones para el chip, simplemente reprogramando el flash serie en el módulo. Pensé, debe ser fácil, sólo tengo que descargar un archivo binario y ya está! La verdad resultó ser un poco más complicado. Sin embargo, todavía tengo el deseo de hacer algo que reaccione e interactúe con el mundo físico, no sólo el digital, debo seguir.

esp8266-01_pines
Fig. 3

En estos momentos el sofware disponible, es un montón de diferentes herramientas de programación que se utilizan y quizás esto sea parte de la confusión que hay en torno a diferentes herramientas de programación que se utilizan entre ellos. Algunos de estos programas o herramientas requieren específicamente cuatro archivos binarios diferentes, dependiendo del rango de direcciones del chip flash. Mi corta experiencia me dice que, como en todo es cuestión de probar y rectificar. Yo no quería que mi módulo me quedara «como una china en el zapato«, incluso aunque cueste sobre 3€ cada uno.

El ESP8266-01 es el módulo más pequeño y sólo tiene 8 pines. De éstos: VCC, GND, RST (reset) y CH_PD (selección de chip) no son pines E/S, pero son necesarios para el funcionamiento del módulo. Esto nos deja GPIO0, GPIO2, TX y RX disponibles como posibles pines de E/S, incluso éstas tienen funciones pre-asignadas. La GPIO0y GPIO2 determinan el modo de arranque del módulo y los pines TX/RX, se utiliza para programar el módulo y así mismo, de E/S serie, comúnmente utilizado para la depuración. Además GPIO0 y GPIO2 necesitan tener una RPA (resistencias pull-up) conectadas para asegurar que el módulo se pone en marcha correctamente. Como se indica en la tabla 1.

Tabla 1
tabla1

La característica principal de una placa es la cantidad de flash que tiene, cómo los pines GPIO están conectados con el mundo exterior, y si incluye o incorpora un convertidor USB-serie para hacer la UART a disposición de su PC.

El requisito mínimo para el tamaño del flash es de 512kbyte. Un tablero con esta cantidad de memoria flash no tiene espacio para un sistema de archivos, pero por lo demás es completamente funcional. Si su placa tiene 1 Mbyte o más de flash de entonces se soportará un sistema de archivos. Los nombres de los pines se dan en este tutorial utilizando los nombres de chips (por ejemplo GPIO0) y debería ser fácil de encontrar qué pin corresponde a en su placa en particular.

Así que, decidí probar el programa oficial de Espressif esp8266_flasher.exe. También he descargado el archivo de firmware v0.9.2.2 AT. Después de volcar el contenido de ambos archivos en una carpeta, tenía la siguiente imagen:

carpeta_flash_p.gif
Fig. 4

Ahora con doble-clic, ejecutamos el archivo esp8266_flasher.exe. Pulsamos el botón BIN, en la ventana abierta seleccionamos el archivo de firmware ai-thinker-0.9.5.2.bin o el archivo esp_8266_bin0.92.bin.

cargador_esp-flash_1p.gif
Fig. 5

Escribamos el valor del puerto que le corresponda en su casilla. Si no sabe cual es, en Windows vaya al Administrador de dispositivos y busque Puertos (COM & LPT). En mi caso se ha seleccionado el puerto COM5.

admin_dispositivos.gif
Fig. 6

Seleccionamos el archivo de firmware de la ai-thinker-0.9.5.2 AT y haciendo clic en Abrir, retornamos a la ventana principal con el archivo de firmware que aparece en el campo Bin. Como se aprecia en esta figura.

cargador_esp-flash_2p.gif
Fig. 7

Luego seguiremos con esta herramienta. Ahora, veamos como preparar el módulo ESP8266, para poder trabajar con él.

PROBANDO EL ESP8266.

Después de tanto preámbulo ha llegado el momento esperado, a partir de aquí vamos a lo práctico. Sin olvidar que estos módulos necesitan 3V3 para su funcionamiento, por dicho motivo, sería adecuado disponer de un Modulo Conversor Adaptador FT232RL FTDI USB a TTL Serial, de los muchos que hay en el mercado, asegúrese que puede conmutar la salida VCC entre 5V y 3V3 será suficiente. Si usted emplea este módulo ESP8266 con la ayuda de un IDE de Arduino, que trabaja en 5V, en cuyo caso estaría bien que usted disponga de un adaptador de niveles, descrito aquí, o adquirir uno como se indica.

Lo primero es identificar los pines del módulo que usted tenga, ya que existen muchas versiones de ellos, aunque lo que les diferencia es la disponibilidad de los pines. La siguiente imagen muestra la numeración de los pines del módulo ESP8266 -01 ( que es el más sencillo) que vamos a utilizar para nuestras primeras experiencias.

esp8266main2.gif
Fig. 8

Con esta versión, sólo disponemos de GPIO0 y GPIO2 con los que podremos controlar los objetos que nos interesen.

PREPARAR LA PRACTICA.

Hemos identificado los pines de nuestro ESP8266, ahora debemos verificar si funciona, así que, vamos a conectar nuestro módulo, una vez más, ATENCIÓN!! el voltaje de alimentación ha de ser de 3,3V tengamos cuidado si no queremos dañar nuestro modulo. En algunos sitios dicen que los pines TX y RX son tolerantes a 5 volts, de todos modos, si disponemos de un reductor de 5V a 3,3V sería mejor utilizarlo y no arriesgar. Veamos:

diagrama_esp01.gif
Fig. 9

Constatar identificación de pines:

Tabla 2
tabla_pineses8266_1.gif

Como mi adaptador FTDI USB dispone de una salida de 3,3V, no será necesario utilizar un regulador para reducir la tensión hasta los 3’3V, como se indica en la imagen siguiente:

ft232rl-ftdi-usb-to-serial_a adaptador5v-3v
Fig. 10

Estos son los pines y su correspondencia entre el adaptador y el módulo ESP8266-01:

Conectaremos de la siguiente forma el FTDI al ESP8266. Los colores de los hilos ayudarán a no equivocarnos. Para la programación también es necesario conectar a GND el pin 6 GPIO 0.

diagrama_conxion_esp-01gif
Fig. 11

Para evitar confundir al principiante, he modificado las imágenes, 9 y 11.

Para asegurarnos del buen funcionamiento del gestor en el momento de su programación, el pin6 GPIO 0 debe ser puesto a bajo GND mediante un puente (color verde en la imagen), que se eliminará para el normal funcionamiento. Además, por el tipo de lógica utilizada (son drenadores) necesitan resistencias de pull-up 3,3 KΩ a VCC, en los pines CH_PD y RST para poner dichos pines en alto. El pulsador momentáneo, nos permite el reinicio por reset en cualquier momento.

Volvemos al descargador esp8266_flasher que tenemos abierto. Una vez conectado correctamente todo, alimentaremos el circuito anterior y pondremos el ESP8266 flasher en su modo de programación flash.

cargador_esp-flash_3p
Fig. 12

Para la programación, reiniciamos la tarjeta ESP8266 manteniendo el pin GPIO0 a bajo, al pulsar el botón Prog-FLSH y el RST, pulsamos DOWNLOAD y soltando primero el botón RST y poco después el botón Prog-FLSH. Esperamos a que borre la memoria flash y cargue el programa, esto se toma un poco de tiempo y al terminar muestra esta leyenda, aunque indica un fallo, no se preocupe, no se porque motivo esto, pero ya está funcionando.

probar_esp-01_3--300x196.gif
Fig. 13

Ahora, para hablar con el módulo ESP8266 y verificar que hemos programado bien la memoria flash, debemos abrir un monitor Serial como el de Arduino (o Putty) y pulsar el botón RST (del circuito), para colocar el módulo ESP8266 en modo de usuario. Esta imagen muestra el monitor Serial de Arduino.

monitor_serial1.gif
Fig. 14

Se han ejecutado unos comandos AT para verificar que se ha programado el archivo previsto y así ver que funciona con normalidad.

VEAMOS EL USO DE PUTTY

Las comunicaciones UART (Universal Asynchronous Receiver-Transmitter) nos permiten enviar datos entre diferentes circuitos, es habitual encontrar entornos de trabajo que incluyen estas comunicaciones como el de Arduino, con el que podemos depurar nuestros programas con una aplicación de tipo terminal con el ordenador de forma adecuada. Seguramente su sistema operativo dispone de un programa de comunicaciones serie como PuTTY, entorno que le recomiendo ya que es de código libre.

putty1p.gif
Fig. 15

Si no tiene práctica, para configurar el terminal Putty, siga estos pasos. En la casilla Serial line, escriba un nombre que lo identifique, en Speed pruebe diferentes valores hasta que el resultado sea legible, yo lo encontré en 115200 Baudios.

putty2p.gif
Fig. 16

Cuando tanga sus valores, puede guardar su configuración con un nombre, que puede servirle como referencia para otras veces.

putty3p.gif
Fig. 17

En la pestaña Serial, puede verificar sus valores y adecuarlos para cada ocasión.

putty4p.gif
Fig. 18

Una vez configurado el terminal Putty, pulsamos «OPEN«, se abrirá una ventana MSDOS y en ese momento debemos pulsar el botón RST del circuito, para colocar el tablero ESP8266 en modo de usuario. Nos mostrará una leyenda con un Ready final, acto seguido introducimos los códigos los comandos son, del tipo AT, como se aprecia en las imágenes.

putty3.gif
Fig. 19

El monitor PUTTY me esta dando problemas y no se el motivo. He decidido seguir con el monitor de Arduino y he realizado alguna incursión en los comandos AT que me han dado la siguientes respuestas.

at_mon_serial0 at_mon_serial_2.gif
Fig. 20

Y ahora, sigamos. He utilizado estos comandos como una demostración, para este caso:

Puede copiar los comandos AT de la lista anterior y pegarlos uno a uno, si quiere probar los resultados. Hemos logrado hablar con el ESP8266-01 que era nuestro objetivo, espero poder continuar con esta ‘serie’.

Exención de responsabilidad:

Este es un software y hardware experimental. Úselo bajo su propio riesgo. El software y hardware presentado en estas páginas aunque ha sido probado por el mantenedor/desarrollador de estas paginas, no se hace responsable bajo ninguna circunstancia por los daños de hardware o software, pérdida de datos o cualquier otro daño directo o indirecto, como resultado del uso de este software o hardware. Ni del mal uso que usted haga con él.

Si usted no está de acuerdo con estas condiciones, no podrá utilizar o distribuir más este software o utilizar cualquiera plantillas para piezas, para la construcción que aquí se presenta.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.