Módulos Espressif (ESP) para IoT

En los últimos años hemos asistido al auge de la tecnología denominada “Internet de las cosas” (Internet of Things o IoT en inglés) que consiste en el empleo de dispositivos que mantienen una conexión permanente a Internet a los fines de transmitir información de sensores para monitorear variables de distinto tipo o realizar tareas de control de manera remota. Para hacerlo existen en la actualidad muchos módulos y componentes, pero seguramente los de la marca Espressif, denominados ESP son de los mas empleados en el mundo Maker, por su simplicidad, variedad y bajo costo. En este artículo vamos a realizar una introducción a estos chips y algunos módulos y placas que los utilizan.

Espressif es una empresa China radicada en Shangai dedicada al diseño de chips electrónicos denominados SoC (System On Chip) que son fabricados por otras empresas como la taiwanesa TMSC, principal fabricante de chips de Apple, ente otros.

Los SoC Espressif (o ESP) son chips que integran distintos bloques de diversas funciones en un único circuito integrado, disminuyendo así las dimensiones del conjunto y consecuentemente su costo. Por ejemplo, los SoC ESP contienen un microcontrolador, conversor A/D, módulo de entradas y salidas o GPIO, memoria Flash y circuitería específica para conectarse a una red WiFi, entre otros. Además de este hardware específico, contienen el software o firmware necesario para resolver la mayor parte de la comunicación por Internet, lo que se conoce como “stack TCP/IP”.

En la actualidad existen tres familias de estos SoCs: ESP8266, ESP32 y ESP32-S. Veamos algunas de sus características:

ESP8266

Es la familia mas antigua de SoCs de ESP y cuenta con dos modelos, el ESP8266EX, introducido al mercado en el año 2014, sin memoria Flash y el ESP8285, una versión mejorada del anterior que apareció dos años después agregando 1 MB de memoria Flash.

Las características comunes de la esta familia son las siguientes:

  • CPU de 32 bit LX6 de Tensilica corriendo a 160 MHz
  • Modo de bajo consumo que permite su funcionamiento alimentado por baterías.
  • Incluye una amplia variedad de periféricos como UART, GPIO, I2C, I2S, SDIO, PWM, ADC y SPI.
  • 32 KB de memoria para instrucciones.
  • 80 KB de memoria para datos.
  • Soporte para WiFi b/g/n a 2.4 GHz.

El ESP8266 se hizo reconocido mundialmente al ser utilizado en la placa ESP-01 de la empresa AI-Thinker, que con solo 8 pines y a un muy bajo costo permitía conectar a una red WiFi y por tanto a Internet a cualquier procesador (como un Arduino) a través de un puerto serie empleando comandos AT.

Placa ESP-01 con ESP8266EX

La empesa AI-Thinker desarrolló posteriormente varios módulos con la denominación ESP-XX, con distintas características y formatos, como se puede ver en esta wiki.

Distintas placas ESP-XX de AI-Thinker

Algunas empresas han integrado estos módulos en placas que añaden alguna circuitería que los hace mas fáciles de utilizar. Un ejemplo es la empresa china llamada Wemos que viene produciendo una serie de placas que podríamos llamar el “Arduino” del ESP8266. De hecho, su primera placa, la Wemos D1, tiene el mismo formato que un Arduino UNO y permite el uso de muchos de sus shields. Incluye el módulo ESP-12, un regulador de tensión que permite un voltaje de entrada entre 9 y 24V, adaptador USB para programarlo desde una PC y conectores de entrada/salida.

Placa Wemos D1, similar al Arduino UNO

Hay varios modelos de placas Wemos, con distintas capacidades. Otra muy popular es la D1 mini, que tiene sus propios shields.

D1 mini a la izquierda y D1 mini con shield relé a la derecha

Existen clones de estas placas y otras de diferentes marcas, con lo que la oferta es muy amplia.

Una iniciativa de software y hardware libre muy popular en los primeros años del ESP8266 fué NodeMCU, que brindó el diseño de varias placas, principalmente con el módulo ESP-12, así como un firmware que al ser grabado en la placa permite programarla empleando el lenguaje Lua. En la actualidad, la disponibilidad de otros lenguajes como C++, Basic, Javascript o Python han hecho que decaiga el interés en Lua, aunque aún se pueden conseguir las placas NodeMCU.

Placa NodeMCU (Fuente: Wikipedia)

Existe una gran variedad de entornos y posibilidades para programar el ESP8266, en sus distintos módulos y placas, así como varios lenguajes, como ya mencioné. Incluso es posible programarlo empleando el IDE oficial de Arduino.

ESP32

El SoC ESP32 se empezó a comercializar en el año 2016 como una evolución de la familia ESP8266. Además de un aumento en la potencia y capacidad introdujo como novedad el soporte para Bluetooth, además de WiFi y algunos modelos con dos procesadores (dual core). En la actualidad existen 9 modelos en esta familia: ESP32-PICO-D4, ESP32-PICO-V3, ESP32-S0WD, ESP32-U4WDH, ESP32-D2WD, ESP32-D0WDQ6, ESP32-D0WDQ6-V3, ESP32-D0WD y ESP32-D0WD-V3.

Las características del ESP32 son las siguientes:

  • Una o dos CPU LX6 de 32 bit con velocidades entre 80 MHz y 240 MHz.
  • Soporte para Bluetooth y Bluetooth Low Energy (BLE).
  • Consumo de corriente menor a 5 μA en modo de bajo consumo.
  • Gran variedad de periféricos incluyendo sensores táctiles capacitivos, de efecto Hall, interface a tarjetas SD, Ethernet, SPI, UART, I2S e I2C.
  • 520 KB de memoria de datos e instrucciones
  • Memoria Flash incluida hasta 4 MB (según el modelo), soporte hasta 16 MB de Flash externa.
  • Soporte para WiFi b/g/n a 2.4 GHz.

También existe una gran variedad de módulos que contienen estos SoC, siendo muy utilizados los de la serie WROOM de la misma empresa Espressif.

Módulo WROOM-32 de Espressif

Usando alguno de estos módulos existe una gran cantidad de placas que podemos emplear en nuestros proyectos para aprovechar la potencia del ESP32.

Placa D32 de Wemos
Placa ESPDuino-32

ESP32-S

El último modelo de la familia de SoCs ESP fue lanzado al mercado a comienzos del año 2019 y aún hay pocos módulos y placas que lo utilicen. Contiene un nuevo procesador, acompañado de un coprocesador, no incluye soporte para Bluetooth pero si para USB y algunas funciones para acelerar la encriptación por hardware.

Características:

  • CPU de 32 bit LX7 de Tensilica corriendo a 240 MHz.
  • Coprocesador RISC-V.
  • 320 KB de memoria de datos e instrucciones.
  • No incluye memoria Flash pero soporta hasta 1 GB de Flash externa.
  • Características de seguridad: eFuse, encriptación de memoria Flash, algoritmos AES, SHA y RSA integrados.
  • Periféricos incluidos: 43 GPIOs, interface USB OTG, SPI, I2S, UART, I2C, LED PWM, LCD, interface a cámara, ADC, DAC, sensor táctil, sensor de temperatura.
  • Soporte para WiFi b/g/n a 2.4 GHz.

Espero que este resumen les haya servido para tener una idea general del extenso abanico de módulos y placas derivados de los SoCs ESP y algunas de sus posibilidades. En próximos artículos iré describiendo con mas detalle algunos de ellos.

Mas info:

Sitio de Espressif

Recopilación de información sobre ESP8266

Recopilación de información sobre ESP32

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Habilitar notificaciones OK No, gracias