Arduino comenzó siendo una simple placa para la educación y los makers que les gusta el DIY. Una plataforma de hardware libre para los amantes de la electrónica que se podía programar gracias a Arduino IDE y con una gran cantidad de posibilidades. Poco a poco fue evolucionando, surgiendo nuevas versiones y ediciones de la placa, así como kits y complementos como los famosos escudos (shields) y módulos que ampliaban las funcionalidades básicas de estas placas.
Uno de los complementos que hizo que se diera un gran paso adelante en las capacidades fue el módulo WiFi, como el ESP8266, ya que eso permitió que los proyectos que hasta la fecha estaban aislados se pudieran conectar a una red y así poder monitorizar o gestionar el proyecto desde Internet en cualquier parte del planeta. Por eso vamos a dedicar esta guía al ESP8266, para que puedas saber todo lo que realmente necesitas…
Un poco de historia
La primera empresa que creó este chip ESP8266 fue Espressif, una empresa de China situada en Shangai, aunque actualmente hay otros fabricantes que lo están desarrollando y produciendo. La fecha exacta de su lanzamiento fue en verano de 2014, por tanto no es tan viejo. Se comenzó a comercializar a un bajo precio y eso unido a sus capacidades hicieron que pronto se hiciese muy popular.
La comunidad de desarrolladores también tuvo una importante labor en el éxito, ya que comenzaron a traducir y publicar gran cantidad de documentación, crear firmwares y otros códigos para poder usar sobre el ESP8266. Eso le dio a los makers todas las herramientas que necesitaban para poder usar el dispositivo con sus plenas facultades.
Pero debes saber, que al igual que ocurre con los transistores, la nomenclatura o numeración no siempre ha sido ESP8266, sino que primero aparecieron algunos primeros ESP tempranos, luego vinieron versiones como la ESP8285 de 2016 que incluía una memoria flahsd e 1MB integrada, y después aparecería el ESP8266 que conocemos actualmente, que parece haber dado un paso atrás porque no dispone de dicha memoria, pero se le puede agregar otros chips externos para almacenar programas.
¿Qué es?
El ESP8266 se puede integrar en un WiFi que provee un chip de bajo coste con una pila TCP/IP completa y un microcontrolador. Se alimenta con 3.3v y dispone de un procesador Tensilica Xtensa LX106 de 80 Mhz, memoria RAM de 64 KB para instrucciones y 96 KB para datos, 16 pines GPIO, pines dedicados UART, e interfaz SPI y I2C.
La CPU de Tensilica puede hacerse más veloz mediante overclocking que permiten algunos modelos, aunque no todos. De hecho, se puede doblar la frecuencia de reloj. Por cierto, una CPU de tipo RISC y de 32-bit. También incluye en el módulo un conversor ADC de 10-bit para las señales.
Como complemento, incluye un chip externo de memoria flash QSPI de 512 KB a 4 MB dependiendo del módulo, incluso algunas veces se puede llegar a los 16 MB. En cuanto a las capacidades de conectividad WiFi, es compatible con el estándar IEEE 802.11 b/g/n, además de soportar seguridad WEP, WPA y WPA2.
¿Para qué se usa?
El ESP8266, dicho de un modo simple, agrega capacidad de conectividad WiFi a nuestros proyectos. Es decir, permite conexión wireless a una red local o a Internet. Eso posibilita gran cantidad de posibilidades, como poder conectar o desconectar electrodomésticos (usando un relé) u otro tipo de sistemas mecánicos de nuestro hogar para domotizar la casa y controlarla por Internet desde nuestro smartphone o cualquier ordenador conectado desde cualquier parte.
También puede ser usado para controlar sistemas de jardinería y riego a través de la red, para automatizar sistemas industriales, control de cámaras IP de videovigilancia, monitorizar datos de redes de sensores distribuídos en distintos puntos, para wereables con capacidad de conexión, para proyectos de IoT (Internet of Things o Internet de las cosas) y todo lo que puedas imaginar…
Características del módulo ESP8266:
Para que conozcas más a fondo el ESP8266, aquí te damos una serie de datos interesantes que necesitarás conocer sobre este módulo.
Datasheet del ESP8266
En apartados anteriores hemos descrito algunas de las características principales del ESP8266, para obtener todos los detalles técnicos al completo, ya sabes que puedes descargar las famosas datasheets que tienen los fabricantes desde sus páginas web oficiales. Algunas de las características extra que se detallan en el datasheet son:
- CPU Tensilica Xtensa L106 32-bit RISC 80Mhz
- Conversor ADC 10-bit
- RAM 64 KB i / 96 KB d
- GPIO 16 pines (no se pueden usar todos, además el GPIO16 está conectado al RTC o Real Time Clock)
- UART
- SPI
- I2C
- Voltaje 3v y 3.6v
- Intensidad 80mA
- Temperatura de operación -40 a 125ºC
- WiFi IEEE 802.11 b/g/n con soporte IPv4 y protocolos TCP/UDP/HTTP/HTTPS/FTP
- Consumo 0.0005 a 170 mA según la potencia de señal
- Modos: Active mode (activo), Sleep Mode (dormido), Deep Sleep (sueño profundo) – Afectan al consumo
Para más datos, descargar datasheet:
- Adafruit ESP8266
- Espressif ESP8266EX (versión mejorada)
Desgraciadamente solo se encuentran en inglés, pero es fácil de comprender todos los detalles si tienes conocimientos técnicos.
Pinout del módulo
Otro de los detalles que se pueden ver en el datasheet es el pinout, es decir, el pantillaje. Cuántas patillas tiene y para qué sirve cada una. Dependiendo de si es solo el chip ESP8266 o si viene en otro formato o módulo, el patillaje puede variar como puedes apreciar en las imágenes superiores.
Integración con Arduino y wifi.h
Para la programación tienes a tu disposición una biblioteca llamada wifi.h específica para que puedas usar funciones incluídas en ella a la hora de crear los códigos fuente con Arduino IDE para programar el microcontrolador. Puedes ver más información en estas dos páginas de GitHub donde se alojan estos proyectos: Biblioteca Arduino Wifi.h / Biblioteca Wifi.h Espressif.
En cuanto a la integración con Arduino, se podría hacer tanto si es un módulo como si es el chip ESP8266 por separado. No obstante, es recomendable usar los módulos. Existen varios tipos, pero los más conocidos son los que provee el conocido fabricante AI-Thinker:
- ESP-01: es un módulo de los primeros que aparecieron. Su precio suele estar entre los 2 y los 4€. Es un poco anticuado y solo dispone de dos GPIO utilizables para controlar sus sensores y actuadores. Este módulo dispone de una antena WiFi integrada, LEDs, el chip ESP8266 y memoria flash BG25Q80A.
- ESP-05: su precio es similar al anterior, y es bastante simple. Sus pines pueden ser fácilmente usados para trabajar como shield WiFi para Arduino o para usarlo en un protoboard, pero no dispone de ningún GPIO accesible.
- ESP-12: aunque es bastante empleado, quizás no sea el más práctico de todos, especialmente para iniciados. Su precio es de unos 4€, y tiene accesibles 11 conexiones GPIO, uno de ellos es analógico de 10-bit (1024 valores digitales posibles). Pero tiene un gran defecto, que tendrás que soldar, porque no tiene pines.
- ESP-201: el precio es de 6€ y es el preferido de los makers y el recomendado para la mayoría de usuarios. También dispone de 11 puertos GPIO, aunque no todos podemos usarlos. En este caso sí que dispone de patillas para encajarlo en el protoboard o con Arduino sin soldar.
Debes saber que existen más módulos, de hecho, en elsiguiente apartado hablamos de uno que se ha popularizado en la actualidad y que merece una mención especial.
NodeMCU
Un módulo muy popular en la actualidad es el llamado NodeMCU, con un precio similar al ESP-201, es decir, de 6€ aproximádamente. Se trata del módulo que puedes ver en las imágenes principales de este artículo y que es extremadamente sencillo de usar, con todo lo necesario ya integrado. Es decir, puede trabajar de forma autónoma desde el principio, sin necesidad de tener que agregar otros extras como en el caso de los módulos anteriores.
NodeMCU también incluye un chip ESP8266, un adaptador serie/USB, se alimenta por microUSB, y se basa en las características del ESP-12. Han aparecido varias versiones de este NodeMCU, como la 1 o la 2 más actualizada y mejorada. Pero lo más interesante es el firmware que incluye, que se puede descargar y permite programar en lenguajes como Python, BASIC, JavaScript y otros menos populares como LUA. Recuerda que el firmware es un código, un programa de muy bajo nivel que se almacena en una memoria…