En esta entrada vamos a hablar del nuevo ESP32-C3, el nuevo procesador de Espressif llamado a sustituir al popular ESP8266 tras varios años de éxito y buen servicio.
En 2020 Espressif comunicó su intención de enviar algunos kits de desarrollo de su nuevo SoC a unos cuantos tester. Este DevKit es aún preliminar, ya que es una muestra de ingeniería para probar el nuevo ESP32-C3.
En particular, el fabricante informa que el modo de energía deep sleep es superior, y que la funcionalidad USB Serial/JTAG aún no funciona. Son funcionalidades, por supuesto, que estarán disponibles en la versión definitiva.
Sin embargo, aparte de estos dos puntos, el DevKit es un producto operativo y totalmente funcional. Y aquellos con los que tenemos el gusto de conversar en Twitter y otras redes sociales, sabéis que tenía muchas muchas (¡muchas!) ganas de probar.
Así que tras una espera que, más por ansia que por larga, se nos ha hecho eterna ¡Por fin ha llegado! Y ya podemos empezar a probarlo y a trastear con este nuevo aparatito que, casi seguro, pasará a formar un componente habitual en el mundillo.
Un poquito de historia
Por si habéis estado realmente desconectados del mundillo de los microprocesadores, y no sabéis lo que es el ESP8266 y el ESP32, recordamos que ambos son SoC que incorporan comunicación WiFi.
Hasta hace unos pocos años dotar a nuestro proyecto de conectividad WiFi era realmente caro. Las pocas soluciones existentes rondaban los 50€, sólo para tener un Shield con el que conectar, por ejemplo, un Arduino a una red WiFi.
Esto cambió en 2014 con la aparición del ESP8266, un SoC del fabricante Espressif que aportaba conectividad WiFi. Como hemos comentado, el ESP8266 es el antecesor natural del ESP32-C3 que hoy nos ocupa.
El primer módulo disponible del ESP8266 fue el ESP-01 de la empresa AI-Thinker. En esos tiempos, se empleaba únicamente como módulo WiFi y su configuración se realizaba mediante comandos AT por Serial. Sin embargo, una parte de la comunidad vio su potencial como procesador independiente, y no sólo como módulo.
Desde entonces ha llovido mucho, y el ESP8266 ha adquirido una gran popularidad tanto en proyectos domésticos como en productos comerciales. Muchos de los dispositivos IoT que conocemos, como la gama de productos Sonoff sin ir más lejos, incorporan un ESP8266 o ESP8265 en su interior.
Con el éxito obtenido con el ESP8266 Espressif lanzó su hermano mayor, el ESP32 en 2016. Sus características técnicas son muy superiores, como vimos en esta entrada. Desde entonces ambos proyectos han alcanzado una gran popularidad, y disminuido sustancialmente su precio.
Poco más pasó en ‘la scene’ hasta finales de 2020, donde Espressif anunció la sustitución del ESP8266 por un nuevo modelo de ESP32 de bajo coste, denominado ESP32-C3. De esta forma, unifica sus productos bajo una única gama.
Analizando el ESP32-C3
Bajo el ESP32-C3 encontramos un SoC mono núcleo basado en arquitectura Open Source RISC-V (Risk-Five), capaz de funcionar hasta 160 Mhz.
Esto es un cambio interesante respecto a los productos habituales de Espressif, que montaban un procesador Tensilica Xtens basados en MIPS. Ambas, MIPS y RISC-V están basadas en RISC (Reduced instruction set computing) pero, en el caso de RISC-V el conjunto de instrucciones es Abierto y Libre.
El nuevo procesador del ESP32-C3 tiene un rendimiento 10-15% superior por ciclo respecto a su predecesor. Esto significa un incremento leve de velocidad respecto al ES8266 y al ESP32 a la misma frecuencia.
Lógicamente, si ponemos un ESP32 a su máxima frecuencia de 240Mhz y aprovechamos el doble núcleo, esta saca pecho y se diferencia con facilidad respecto al resto.
Por otro lado, el ESP32-C3 monta 384 KB ROM, 400 KB SRAM (16 KB para cache). Esto significa más del triple de memoria que el ESP8266, y un poquito menos que un ESP32, que incorpora 512 kB SRAM.
No obstante, tened en cuenta que no toda esta memoria está realmente disponible, y debéis esperad una reducción de SRAM libre para vuestros programas. Por ejemplo, en un ESP32 la memoria disponible tras cargar el programa es de aprox 350KB.
El conjunto se completa con conectividad WiFi y Bluetooth LE 5.0. Esto es una apreciada novedad respecto al ESP8266 que carecía de Bluetooth, algo con lo que por supuesto sí cuenta su hermano mayor ESP32.
Finalmente, en cuanto a periféricos, el EPS32-C3 cuenta con 22 GPIOs, 2 ADC de 12bits, sensor de temperatura, 3 SPI, 2 UART, un I2C y un I2S.
Esto son características intermedias respecto al ESP8266 (16 GPIO, 1 ADC 10 bits, SPI, UART, I2C, I2S) y el todo poderoso ESP32 (36 GPIO, ADC 12 canales, 2 DAC, 4 SPI, 3 UART, 2 I2S, 2 I2C, Bus Can, sensor hall, táctil… etc etc etc).
No obstante, tomad estos datos con precaución, sobre todo el número de GPIOS. Es sabido que, tras descontar los pines empleados para la memoria y los “conflictivos” por intervenir en el arranque, el ESP8266 dispone realmente de 5 pines realmente “disponibles”, y el ESP32 de unos 18.
En el caso del EPS32-C3, a falta de completar la información, es previsible que dispongamos de unos 8-10 GPIO realmente “disponibles”. Lo cual, por otro lado, es el doble que un ESP8266, y elimina una gran limitación del ESP8266 a la hora de realizar proyectos.
En cuanto a precio, se dice que en venta al por mayor el ESP32-C3 tendrá un precio inferior a 1€. Esto debería permitir ver placas de desarrollo en rango similar a las existentes en para el ESP8266, digamos en torno a 2€.
Por comparación, podemos encontrar placas con el ESP32 por unos 3.5-4€. Por lo que, para proyectos domésticos puede que no sea tan llamativo, pero en el ámbito industrial donde las unidades se cuentan por millares y cada céntimo importa, es fácil que el EPS32-C3 encuentre pronto su cuota de mercado.
A esto ayudará que, según Espressif, el patillaje del EPS32-C3 se ha diseñado para ser compatible ESP8266. Una decisión lógica, ya que pretende ser un sustituto directo de este.
En cuanto a software, el entorno de ESP-IDF ya ha sido adaptado para el EPS32-C3. Tenéis el código del ESP-IDF en el GitHub de este enlace https://github.com/espressif/esp-idf, incluidos todos los ejemplos que ya han sido adaptados para el ESP32-C3 https://github.com/espressif/esp-idf/tree/master/examples
La mayor parte del código disponible para el ESP8266 debería ser directamente compatible, así como aquellos programas del ESP32 que no hagan uso de su hardware específico (como el doble núcleo, por ejemplo).
Conclusión
En mi opinión, Espressif lo ha vuelto a hacer. Si quería un sustituyo de su popular ESP8266 y unificar la gama de productos, el ESP32-C3 es un acierto. Es un auténtico ESP8266 killer.
Manteniendo un precio similar y unas características muy superiores, a mitad de camino entre un ESP8266 y un ESP32, es difícil concebir la continuidad de su antecesor.
Una renovación, por otro lado, que ya iba tocando. El ESP8266 lleva con nosotros más de 7 años, y los requisitos en aplicaciones de IoT han aumentado considerablemente en este tiempo.
Aún queda camino por recorrer para el ESP32-C3. El software no está totalmente adaptado, e incluso Espressif avisa en su kit de pruebas que las funciones de consumo de energía no están plenamente funcionales.
Falta esperar a que se desarrollen placas de desarrollo y productos comerciales que monten este nuevo SoC. Pero, básicamente, iros despidiendo del ESP266 porque todo apunta a que el ESP32-C3 ha llegado para quedarse.