Introduccion al módulo SoC WiFi ESP8266 ESP-12

Los módulos ESP8266 en sus distintas versiones, son módulos WiFi pensados para ser utilizados con microcontroladores como por ejemplo, los Atmel presentes en Arduino, pero en realidad se pueden utilizar con cualquier micro que sea capaz de manejar señales por UART (interfaz serie). Lo puedes encontrar en el rango de 2,5$ a 4$ en Ebay, AliExpress, etc.., ya que a este precio solo te lo envían de China o algún país donde exploten a sus trabajadores.

Aunque ESP8266 es el nombre del chip fabricado por Espressif (una empresa que parece que solo se dedica a hacer chips WiFi), otras empresas se dedican a crear módulos Wifi completamente funcionales usando estos chips, como por ejemplo Ai-thinker, que es el fabricante del módulo ESP8266 ESP-12.

Como he dicho, estos módulos vienen por defecto “flasheados” con un firmware mediante el cual, a través de los pines RX y TX podemos enviarles comandos AT para por ejemplo: escanear redes WiFi disponibles, utilizar el módulo como cliente para conectarlo a un router, convertir el módulo en un AP, hacer peticiones HTTP, etc… De hecho, mi idea original era utilizar este módulo conectado a un Arduino nano clon de los chinos de 3.5$ para poder recibir y procesar unos datos obtenidos de un servidor en Internet.

Modulo ESP8266 ESP-12

La sorpresa vino cuando me entere que estos módulos no son simples módulos que necesitan ser manejados como esclavos de un microcontrolador externo, sino que en su interior alberga un microprocesador interno y una memoria SRAM mucho mas potente que cualquier Arduino Uno o Nano.

Aparte de los pines TX, RX, VCC y GND, dichos módulos poseen pines GPIO para conectarles otros dispositivos como pantallas, sensores o lo que quieras mediante las “archiconocidas” interfaces UART, I2C, SPI, etc… Dicho de otro modo…. Bye, bye Arduino!….

Si bien el mas famoso de estos módulos es el ESP8266 ESP-01 que está un poco limitado en cuanto al número de pines (solo 2 GPIO), existen otros módulos con muchas más opciones y pines GPIO, siendo actualmente el tope de gama el ESP12 y ESP12E. Tanto el ESP12 y ESP12E tienen la antena grabada en la propia PCB, están “shielded” o protegidos de señales electromagnéticas, poseen 9 GPIOs (más que suficientes) y funcionan a 3,3V, por lo que se acabaron los “level shifting” (los 5V deben morir!!). Podéis encontrar más especificaciones aquí.

Vista por delante y por detrás del módulo ESP8266 ESP-12

Detalle del modulo ESP8266-ESP12 por ambos lados

Y en la siguiente imagen las medidas y el esquema de la PCB

Medidas y circuiteria interna del modulo ESP8266 ESP-12

Pero aún hay mas… Si te preguntas como puedo escribir mi propio código para esta maravilla.. tienes entre muchas opciones 2 que destacan por encima de las demás.

NODEMCU

Logo NodeMCU

Proyecto Open Source que una vez que “flashees” el ESP8266, en vez de escribir comandos AT a través de la UART, podrás escribir en lenguaje Lua y este será interpretado. Es decir, una consola interactiva de Lua en toda regla que tiene incluso un sistema de ficheros virtual donde almacenar diferentes scripts, que mediante el comando “doFile” serán ejecutados. También te permite guardar tu script en un fichero llamado “init.lua” y que se ejecutará nada mas encender el modulo o resetearlo.

Dispone de IDEs como Node Explorer que facilitan muchísimo la tarea de programar el dispositivo.

Su inconveniente, pues es precisamente Lua (al menos para mi), ya que me siento más cómodo programando en C/C++. Aparte, no hay tantas librerías para manejar sensores, pantallas, etc..

ARDUINO

Logo Arduino Community

Sí, sí, el título no esta equivocado. Hay un proyecto que ha portado ESP8266 para que lo programes en C/C++ directamente desde el IDE de Arduino, con todas las ventajas que ello implica. Un IDE “archiconocido”, un sinfín de librerías listas para usar todo tipo de sensores, motores, pantallas, etc… (Bueno, para ser honestos, con alguna que otra incompatibilidad) y una amplia comunidad de usuarios por todo el mundo donde compartir y buscar todo tipo de información.

El inconveniente podría ser que tienes que “flashear” el dispositivo para probar tu código, en vez de simplemente escribirlo en la UART como se hace con NodeMCU, pero al fin y al cabo… ¿no tenías que “flashear” también tu Arduino?

En la siguiente os enseñaré como cablear el “cacharrito” (Wiring, resistencias para pull-ups, pull-downs) para poder utilizarlo correctamente, “flashearlo”, su fuente de alimentación correcta, etc… Es un dispositivo impresionante pero no es tan “friendly”  como una Arduino Uno y necesita unos cablecitos y resistencias para ponerlo en funcionamiento de manera estable.

Si te ha gustado y quieres compartir esta página..