Cuando estamos inmersos en nuestro mundo, muchas veces no nos damos cuenta de lo que sucede a nuestro alrededor. Esto es precisamente lo que me ha pasado con el ESP8266. Siempre he estado rodeado de Arduino y soy un fiel defensor de esta placa.
Hace ya algún tiempo cayó en mis manos un módulo ESP-01. Estuve trasteando con él varios meses y jugando con los comandos AT. Pero realmente cuando he visto el potencial que tiene, ha sido preparando este capítulo del podcast.
Ya hay dispositivos comerciales que lo utilizan como el relé WiFi Sonoff. Gracias a este hecho, somos capaces de hackearlo y poder comunicarlo con una plataforma del IoT. Incluso hacer nuestro propio sistema de gestión con el protocolo MQTT y Node-RED.
Las opciones son infinitas :)
Gracias a Germán Martín, un fiel seguidor de Programarafacil, he podido descubrir el abanico de posibilidades que nos brinda. Hoy vamos a hablar de todo esto. Analizaremos la actualidad de este microcontrolador y pondremos todas las cartas sobre la mesa.
Si en estos años ha conseguido crear diferentes módulos destinados a diferentes fines, lo mejor está todavía por llegar. Comenzaremos hablando de sus orígenes y sus posibles usos. Luego veremos detalladamente sus especificaciones técnicas.
Por último analizaremos los diferentes módulos que podemos encontrar en el mercado y los diferentes métodos para programar el ESP8266.
Indice de contenidos
Qué es el ESP8266
Cuando salió el Arduino MKR1000, afirmé que revolucionaría el mundo de los objetos conectados, sobre todo por la facilidad de uso que caracteriza a estas placas. Acercaba de una manera sencilla el IoT a la población civil. Pero lo que está ocurriendo con el ESP8266, puede reventar las nuevas tendencias de muchos sectores. Se trata de un chip integrado con conexión WiFi y compatible con el protocolo TCP/IP. El objetivo principal es dar acceso a cualquier microcontrolador a una red.
En este artículo haré referencia en varias ocasiones a Arduino y es que, sin duda alguna, es la competencia del Shield WiFi para esta placa. Pero no solo eso, Atmel, el fabricante que provee de microcontroladores a Arduino, sacó al mercado el ATSAMW25, competencia directa del ESP8266. Este microcontrolador es el que incorpora el Arduino MKR1000.
La gran diferencia entre el ESP8266 y el ATSAMW25 es el precio. Mientras que podemos encontrar módulos con el chip ESP por 3€, el Arduino MKR1000 sale por unos 40€ con gastos de envío.
La diferencia es abismal aunque tiene su sentido. La versión más básica del ESP es la 01 y dista mucho de la facilidad de uso que tiene el Arduino MKR1000, aunque el objetivo de este artículo no es hacer una comparativa entre ellos.
La gran ventaja del ESP8266 es su bajo consumo. Es el producto ideal para wereables y dispositivos del IoT.
Un poco de historia
No voy a profundizar en la historia detrás de este chip. Puedes encontrar mucha información en la red. La empresa que lo creo y lo fabrica es Espressif, una empresa China situada en Shangai.
Aunque parece que lleva con nosotros mucho tiempo, lo cierto es que vio la luz en agosto del 2014, en su versión básica el módulo ESP-01 de la mano de AI-Thinker. Ese mismo mes comenzó la era de reinado del ESP. Todos aquellos que pudieron hacerse con uno quedaron fascinados por su bajo precio y las posibilidades que tenía. En aquella época el gran problema era la documentación, estaba toda en Chino.
Poco a poco, la gran comunidad que hay detrás, comenzó a traducir la documentación y crear firmwares pare el ESP8266. Un firmware no es más que el software de bajo nivel, la lógica que controla los circuitos electrónicos. Todo empezó a crecer y las aplicaciones se multiplicaron. En la actualidad podemos encontrar multitud de módulos que incorporan este microcontrolador.
A mediados de este año (2016), la empresa anunció una nueva versión, el ESP8285. Parecía un clon de su predecesor. La gran diferencia es que incorpora una memoria Flash de 1MB integrada dentro del propio chip. El ESP8266 no dispone de esta memoria y necesita de un módulo externo para almacenar los programas. Esto va a permitir crear dispositivos del IoT, o de otro tipo, del tamaño de una tecla de un teclado, todo un reto. Todo gracias a la conectividad y a la memoria Flash que incorpora.
Posibles usos del ESP8266
En este punto debemos de distinguir entre los módulos y los microcontroladores. El ESP8266 y el ESP8285 son microcontroladores. Podemos trabajar con ellos sueltos o podemos comprarlo integrado dentro de un PCB (Printed Circuit Board o Circuito Impreso).
Ocurre lo mismo que con Arduino. Tenemos la posibilidad de comprar un microcontrolador Atmel o comprar la placa de Arduino donde ya viene integrado.
Dicho todo esto, el uso que le demos dependerá de si lo tenemos como chip o como módulo. Dentro de la gran cantidad de usos caben destacar los siguientes:
- Electrodomésticos conectados.
- Automatización del hogar.
- Casas inteligente. ITEAD es puntera en este sector.
- Automatización de la industria.
- Monitor de bebés.
- Cámaras IP.
- Redes de sensores.
- Wereables.
- IoT (Internet of Things o Internet de las Cosas)
- IIoT (Industrial Internet of Things o Internet de las Cosas para el sector Industrial)
Y cualquier aplicación donde se requiera conexión a una red o a Internet. Puedes leer el artículos donde te explicamos 6 proyectos con el ESP8266 para el IoT.
Especificaciones del chip ESP8266
No me cansaré de repetir que lo primero que debemos hacer cuando adquirimos un nuevo componente es mirar la hoja de especificaciones técnicas. La empresa Espressif nos facilita dicha hoja en Inglés. A continuación haré un resumen de lo más importante.
Hardware
- Utiliza una CPU Tensilica L106 32-bit
- Voltaje de operación entre 3V y 3,6V
- Corriente de operación 80 mA
- Temperatura de operación -40ºC y 125ºC
Conectividad
- Soporta IPv4 y los protocolos TCP/UDP/HTTP/FTP
- No soporta HTTPS en un principio. Si que lo hace mediante software tanto en cliente como servidor TLS1.2. La primera implementación está todavía en desarrollo.
Puertos GPIO (de propósito general)
- Tiene 17 puertos GPIO pero solo se pueden usar 9 o 10. El GPIO16 es especial ya que está conectado al RTC (Real Time Clock).
- Pueden ser configurados con resistencia Pull-up o Pull-down.
- Soporta los principales buses de comunicación (SPI, I2C, UART).
Características eléctricas
- Voltaje de trabajo entre 3V y 3,6V.
- Según noticias del propio CEO de Espressif, admite tensiones de entrada de 5V e los puertos GPIO.
Consumos
Dependerá de diferentes factores como el modo en el que esté trabajando el ESP8266, de los protocolos que estemos utilizando, de la calidad de la señal WiFi y sobre todo de si enviamos o recibimos información a través de la WiFi. Oscilan entre los 0,5 μA (microamperios) cuando el dispositivo está apagado y los 170 mA cuando transmitimos a tope de señal.
Modos de operación
Debido a los sectores a los que va enfocado, wereables, dispositivos del IoT y móviles, el ESP8266 requiere de una gestión de energía eficaz. Dispone de una arquitectura de bajo consumo que trabaja en 3 modos.
- Active mode o modo activo: a pleno rendimiento.
- Sleep mode o modo dormido: solo el RTC (Real Time Clock) está activo para mantener la sincronización. Se queda en modo alerta de los posibles eventos que le hagan despertar. Mantiene en memoria los datos de conexión y así no hace falta volver a establecer la conexión con la WiFi. Consume entre 0,6 mA y 1 mA.
- Deep sleep o modo en sueño profundo: el RTC está encendido pero no operativo. Debe pasar por el modo dormido antes de despertar. Hay que llevar especial cuidado con los datos ya que en este estado es como si estuviera apagado y todos los datos que no estén almacenados se pierden. Consume alrededor de 20 μA.
Módulos ESP-XX
Al igual que con Arduino, donde trabajamos con la placa o circuito integrado, con el ESP8266 ocurre exactamente lo mismo. El fabricante AI-Thinker proporciona la serie ESP con diferentes modelos para diferentes usos. A parte han ido surgiendo diferentes placas que incorporan algún módulo ESP como el NodeMCU.
ESP-01
Se trata del módulo más popular aunque en muchas ocasiones, no es el más conveniente. El módulo ESP-01 tiene un precio muy reducido.. En la actualidad no es el más utilizado, ha sido desbancado por el ESP-12 del cual hablaré más tarde. Tiene disponible dos pines GPIO digitales para controlar sensores y actuadores.
Puedes seguir la guía completa para configurar el módulo ESP01 que publiqué.
También se puede llegar a utilizar para este uso los pines Rx y Tx si no se utilizan para la comunicación a través del puerto serie. Se puede programar a través de un adaptador serie/USB o con el cableado adecuado, a través de Arduino. Los conectores que vienen por defecto, no permiten conectarlo a la protoboard.
Esto dificulta prototipar con este módulo. Sin embargo, podemos utilizar unos conectores en forma de L para conectarlo a la placa de prototipado. Lo podemos usar como un dispositivo autónomo o como complemento con Arduino.
ESP-05
Quizás sea el módulo más simple de toda la gama. Está destinado a ser un Shield WiFi para Arduino. La disposición de los pines nos permiten un fácil conexionado con la protoboard. Por el contrario no dispone de ningún puerto GPIO accesible.
ESP-12
Este módulo se está convirtiendo en el buque insignia de la empresa. Permite hacer bastantes más cosas que los módulos anteriores. Lo puedes conseguir por un precio muy reducido. Tenemos acceso a 11 puertos GPIO de los cuales uno, es analógico con una resolución de 10-bit (1024 valores posibles). La configuración en modo dormido es muy sencilla. Esto nos permitirá ahorrar mucha energía. Por el contrario, la conexión con la protoboard no es muy amigable. Necesitamos soldar los pines o comprar un adaptador por 0,20€, aunque también hay que soldar. Quizás está sea la mejor opción si queremos hacerlo funcionar de forma autónoma.
ESP-201
Es el módulo preferido por los Makers para prototipar. Su precio ronda los 6€. En principio solo podemos acceder a 11 puertos GPIO pero tras unas modificaciones, podríamos acceder a un par más de ellos. Lo podemos encajar fácilmente en una protoboard y permite el acople de una antena externa para tener más alcance.
NodeMCU
El NodeMCU es el módulo más característico de este tipo. Su precio ronda los 6€. A diferencia de los otros módulos, viene con todo lo necesario para empezar a trabajar de forma autónoma. Incluye un adaptador serie/USB y se alimenta a través del microusb. Está basado en el ESP-12 y la última versión oficial es la 2. Lo más interesante de este módulo es que puedes descargar un firmware que te permite programar en lenguajes como LUA, Python, Basic o JavaScript. Sin duda alguna este módulo es la mejor opción si queremos adentrarnos en el mundo del ESP8266.
Programación del ESP8266
Cuando salió la placa en el año 2014, su objetivo era la conectividad de los microcontroladores como Arduino. Hasta ese momento, solo se disponía del Shield WiFi para conectar Arduino de forma inalámbrico. Pero el gran problema era el alto coste que suponía. El ESP8266 suplía estas carencias, permitía conectar cualquier microcontrolador por un bajo precio y consumo.
Según pasaba el tiempo, los Makers y Hackers comenzaron a ver las grandes posibilidades que ofrecía debido a la CPU que venía integrada. Ya el primer módulo, el ESP-01, podía funcionar de forma autónoma.
Al principio, era difícil su programación. Requería conocer muy bien los comandos AT e incluso el Chino, ya que la documentación no estaba traducida. Según avanzaban los meses todo eso se solucionó. Pronto salieron diferentes firmwares y traducciones de la documentación oficial. En la actualidad es relativamente sencillo programar un ESP8266.
Respecto al hardware ya hemos visto que dependerá del modelo que estemos utilizando, si incorpora o no el adaptador serie/USB. Aún así, cabe la posibilidad de programarlo a través de un Arduino. La versión del firmware que viene por defecto soporta comandos AT (conjunto de comandos estándar). En la actualidad podemos programar a través del IDE oficial de Arduino con una sintaxis muy parecida gracias al firmware que nos proporciona NodeMCU.
En GitHub encontramos una infinidad de librerías que nos facilitarán la vida con el ESP8266. Germán Martín ha creado ya varias y las puedes ver en su repositorio de GitHub.
Conclusión
Espero que este artículo te haya aclarado qué es y para qué utilizar el ESP8266. En los próximos años será un chip que tendremos que tener muy en cuenta en el desarrollo del IoT, IIoT y la Industria 4.0. Todo gracias a su bajo coste, su bajo consumo y, cada vez más, su facilidad de uso.
En Programarfacil lo tenemos claro, poco a poco iré subiendo más contenido de este microcontrolador. Veremos diferentes ejemplos de uso y cómo sacar el máximo partido a este dispositivo.
Si quieres contactar con Germán puedes hacerlo a través de los siguientes métodos:
- Twitter (@gmag12)
- Email (gmag11@gmail.com)
- GitHub (gmag11)
Puedes escuchar este programa en, iVoox, iTunes y en Spreaker. Si lo haces, por favor valora y comenta, así podremos llegar a más gente.
Conocer como funciona el mundo es la única manera de poder cambiarlo.