Comparativa y análisis completo de los módulos Wifi ESP8266 y ESP32

Publicado por en Electrónica el 07/02/2017
Comentarios:

Hace poco tiempo, la compañía Espressif lanzó al mercado su nuevo microcontrolador ESP32, orientado al desarrollo de dispositivos para el “Internet de las cosas” o IoT. Esta empresa es muy conocida por haber desarrollado hace un par de años el ESP8266, que fue el primer microcontrolador con conectividad WiFi en su rango de precios, menos de 5€. A continuación os dejo un completo análisis comparativo que ha escrito para nosotros Germán Martín para aclarar dudas y ver las diferencias entre éstos populares módulo wifi de bajo coste.

 

Expansiones para tu placa Arduino

ESP8266, un microcontrolador WiFi por 5€

En 2014, el ESP8266 apareció tímidamente en tiendas online chinas como un adaptador de puerto serie a WiFi por un precio muy bajo. Estaba desarrollado partiendo de la base de otro chip de Espressif: el ESP8089. Un adaptador WiFi con un tamaño muy pequeño para fabricantes de dispositivos portátiles.

El ESP8266 se comenzó a vender en forma de una pequeña placa con 8 pines y memoria flash de 512 kB denominada ESP-01, controlada mediante comandos AT. Si te interesa, tienes un excelente tutotial sobre cómo configurar el ESP-01 en la web de programarfacil.com.

 

Para los makers que utilizan Arduino significó una alternativa a los shields WiFi por una pequeña fracción de su precio, por lo que se hizo muy popular.
Unos meses después, gracias a la presión de la comunidad que se formó a su alrededor, Espressif liberó una API para desarrollar directamente sobre su microcontrolador, permitiendo utilizarlo de forma independiente.
Otro grupo de desarrolladores implementó un intérprete del lenguaje de programación LUA en una placa de desarrollo con ESP8266 diseñada por ellos mismos. En este caso la capacidad de la memoria flash es de 4 MB. Al conjunto de placa más intérprete LUA lo llamaron NodeMCU.
Durante el año 2015 uno de los miembros de la comunidad de desarrollo del ESP8266, Ivan Grokhotkov, adaptó el API de Espressif para integrarlo en el entorno de Arduino. Así los makers pudimos utilizar las librerías y el conocimiento acumulado con el uso de Arduino para programar el ESP8266.

Un nuevo producto en desarrollo

El hecho de que el ESP8266 fuese ideado inicialmente como un adaptador de serie a WiFi hace que tenga ciertas restricciones para desarrollos más generales.
Aunque estas limitaciones son salvables, Espressif se puso manos a la obra para desarrollar un nuevo producto con las características que los desarrolladores habían pedido.
A finales de 2015 anunció a la comunidad que ya tenían disponible una versión preliminar de este nuevo chip al que habían bautizado como ESP32. Distribuyeron 200 unidades para que los propios desarrolladores probaran la nueva plataforma. A esta versión de prueba se le llamó ESP31B.
En septiembre de 2016 el ESP32 apareció finalmente en el mercado.

Los mismos desarrolladores que integraron el ESP8266 en Arduino están realizando la misma tarea con el ESP32, aunque ahora algunos de ellos están trabajando dentro de Espressif. Es la propia compañía la que en esta ocasión está impulsando directamente este desarrollo.
Por el momento, dicha integración está en un proceso inicial. Aunque ya se puede instalar el ESP32 en el entorno de Arduino, aún quedan muchas características por implementar.

Resumen de características

ESP8266

El ESP8266 es un microcontrolador con conectividad WiFi y pila de protocolos IP integradas.
Utiliza una CPU de 32 bits Tensilica Xtensa LX106 a 80 ó 160 MHz. Tiene una RAM integrada de 80kB pero no integra ROM ni memoria flash interna, por lo que requiere memoria flash externa de entre 512 kB y 4 MB.
La gestión de la comunicación IP y WiFi la realiza la propia CPU. Su capacidad de proceso se comparte entre esta tarea y el código creado por el programador. También consume entre 30 y 40 kB de la memoria RAM. Esta es una de las principales pegas del ESP8266. Implica que el desarrollador ha de tener cuidado de dejar tiempo a la CPU para que atienda a la comunicación y se limita la cantidad de RAM libre para el programa, aunque es mucho más que suficiente para la mayoría de aplicaciones
Tiene interfaces GPIO, PWM y ADC y soporta protocolos I2C, SPI, I2S, serie e infrarrojos.
Incorpora un reloj RTC que permite controlar los estados de baja energía, aunque en estos estados el microcontrolador no puede realizar ninguna acción.
Como ya sabemos, puede programarse utilizando el entorno de Arduino o directamente, en C, con la API de Espressif. Pero gracias a diferentes proyectos de la comunidad de desarrollo, también se pueden utilizar otros lenguajes de programación como LUA, Python, Javascript y BASIC.

ESP32

El ESP32 es un dispositivo mucho más potente. No solo porque sea más rápido sino porque está diseñado pensando en que sea un microcontrolador para el IoT.
En este caso, utiliza un procesador Xtensa Dual-Core LX6 de 32 bits a 160 ó 240 MHz. El usar dos núcleos permite dedicar uno de ellos a la comunicación IP y WiFi y el otro al resto de procesos. Se resuelve así una de las dificultades más importantes que imponía la arquitectura del ESP8266.
Tiene una memoria RAM de 520 kB, accesible por ambos procesadores y puede utilizar memoria RAM externa adicional de hasta 8 MB.
La memoria flash, igual que en el ESP8266, ha de ser externa y soporta hasta 16 MB. En cambio, el ESP32 sí tiene una ROM interna de 448 kB, utilizada para el bootloader y las funciones internas.
Integra pines GPIO, PWM y ADC como el ESP8266 pero añade conversores DAC y tiene canales PWM dedicados para el control de LEDs y de motores. Además el número de pines dedicados a estas tareas es mayor que en el ESP8266
Igual que éste, también es capaz de comunicarse utilizando protocolos I2C, serie, I2S, SPI e IR. Adicionalmente tiene interfaces Ethernet, SDIO y CAN bus 2.0. Integra un sensor de efecto Hall y un termómetro. Además, los conversores ADC pueden activar un preamplificador de bajo ruido para soportar señales de muy bajo nivel.
Una característica muy importante que se ha añadido al ESP32 respecto a su hermano menor es una interfaz Bluetooth 4.2. Esto amplía el abanico de posibilidades de comunicación del ESP32.
Otra de las pegas del ESP8266 es la seguridad. Esto limita su uso para aplicaciones industriales y comerciales. No soporta comunicación segura mediante hardware. Se ha conseguido implementar el protocolo criptográfico TLS 1.2 mediante software pero esto aumenta la carga del procesador de forma considerable.
El ESP32 resuelve esto incorporando un acelerador de encriptación por hardware.
Igualmente, no hay forma de proteger el código binario dentro de la flash del ESP8266, por lo que es relativamente sencillo realizar ingeniería inversa extrayendo el código máquina desde la flash.
El ESP32 permite la encriptación del código en la flash para que no sea posible la leer el código binario desde la memoria.
Por último, además de los dos procesadores principales tiene un coprocesador de muy bajo consumo asociado al RTC. Éste permite realizar ciertas tareas como el control de los pines de entrada salida mientras el chip está en modo de sueño profundo.
Todo esto tiene un precio. Las placas de desarrollo con ESP32 cuestan entre 4 y 10 veces más que los ESP8266 o cualquier variante de este microcontrolador.

Comparación de especificaciones

 

Conclusiones

Gracias a su precio y a sus posibilidades para el desarrollo de hardware conectado y a pesar de que no fue originalmente diseñado para ello, el ESP8266 provocó un gran crecimiento en las ventas y en la popularidad de la compañía china Espressif.

El último fruto de este crecimiento ha sido el ESP32, un chip con una potencia y versatilidad increíble para el mundo del IoT.

Muy probablemente, si el ESP8266 no hubiera tenido tanto éxito, hoy no tendríamos el ESP32.

Estoy seguro que su integración en el entorno de Arduino supondrá que se popularice y que sus ventas crezcan de manera notable. No solo en el mercado para Makers sino también en el de desarrollo de soluciones profesionales.

A pesar de que el ESP32 es un microcontrolador mucho más potente y maduro en cuanto a características que el ESP8266, éste último sigue siendo perfectamente adecuado para muchos proyectos. El reducido precio hace que sea una muy buena opción para makers que quieren iniciarse en el desarrollo de dispositivos para el IoT.
Por el contrario, para proyectos más ambiciosos o que tienen un objetivo comercial, el microcontrolador que mejor encaja es el ESP32.
Por el momento, el desarrollo de su API y de la integración con Arduino no se ha finalizado. De hecho algunas de las nuevas funciones no están disponibles aún.
Ambos desarrollos avanzan a buen ritmo, por lo que es muy posible que durante este año 2017 se alcance la madurez necesaria. Su código es público y está disponible en GitHub.

Si te ha gustado, compártelo con tus amigos!
Google Plus