ESP32 es una familia de microcontroladores de la empresa Espressif Systems. Su analogía más clara es la de un ESP8266 con esteroides, que incluye Wifi, Bluetooth y otras potentes características extra.
Si eres nuevo en el tema, la cantidad de fabricantes que trabajan sobre esta plataforma y la información dispersa puede ser abrumadora. Por ello, en este artículo, podrás conocer todas sus cualidades y elegir la placa de desarrollo que más te convenga.
También entenderás como diferenciar entre las diferentes presentaciones del ESP32, como pueden ser:
- chips: SoC, SIP
- módulos
- placas de desarrollo
ESP32 es muy superior, en capacidades, a un Arduino UNO y a un ESP8266, pero eso no quiere decir que sea ideal para cualquier proyecto, ya que para sacarle todo el jugo a este microcontrolador es necesario un proyecto más complejo del que estamos acostumbrado.
En su diagrama de bloques se puede apreciar un microprocesador de 32-bits (dual core o single core), comunicación inalámbrica Wifi y Bluetooth.
También incluye seguridad criptográfica por hardware, un coprocesador para el modo bajo consumo e interfases periféricas como: I2C, SPI, CAN, PWM, entre otros.
Por ejemplo, con un dispositivo ESP32 en su versión de dos núcleos se podría realizar un proyecto que intercambie información a la nube y en simultáneo administre datos de un sensor de forma precisa.
Todo esto es lo que vamos a ver en este tutorial.
Indice de contenidos
¿Qué es el ESP32?
ESP32 es una serie de SoC (por sus siglas en inglés, System on Chip) y módulos de bajo costo y bajo consumo de energía creado por Espressif Systems.
Esta nueva familia es la sucesora del conocido ESP8266 y su característica más notable es que, además de Wi-Fi, también soporta Bluetooth.
No te estreses con los siguientes nombres, más adelante se analizan cada una de estas variantes en detalle.
La familia incluye los chips:
- ESP32-D0WDQ6
- ESP32-D0WD
- ESP32-D2WD
- ESP32-S0WD
- Y el SiP (System in Package) ESP32-PICO-D4.
En esencia, estos se basan en un microprocesador Tensilica Xtensa LX6 (de uno o dos nucleos) con una frecuencia de operación de hasta 240 MHz.
Los ESP32 poseen un alto nivel de integración. En su pequeño encapsulado se incluyen:
- interruptores de antena
- balun de RF
- amplificador de potencia
- amplificador de recepción de bajo ruido
- filtros y módulos de administración de energía
Además de todo eso, logra un consumo de energía muy bajo a través de funciones de ahorro de energía que incluyen sincronización de reloj y múltiples modos de operación. Todo esto lo convierte en la herramienta ideal para tus proyectos energizados con baterías o aplicaciones IoT.
ESP32 vs ESP8266
Como te he comentado el ESP32 es el sucesor del ESP8266. En otras palabras, lo puedes ver como un ESP8266 con esteroides, ya que cuenta con:
- un núcleo adicional
- Wi-Fi más rápida
- mayor número de pines de entrada/salida
- compatibilidad con Bluetooth 4.2 y Bluetooth de baja energía (low energy).
Además, el ESP32 viene con pines sensibles al tacto que se pueden usar para “despertar” al ESP32 del modo deep sleep (sueño profundo) y un sensor de efecto Hall incorporado.
Las versiones antiguas del ESP32 incluyen un sensor de temperatura, aunque las versiones recientes ya no lo traen.
Aunque ambas familias son extremadamente baratas, el ESP32 es un poco más costoso. Esto no es de extrañar teniendo en cuenta las ventajas que posee sobre su predecesor.
En la tabla siguiente tienes un resumen de las principales diferencias técnicas entre el ESP8266 y el ESP32.
Características | ESP8266 | ESP32 |
---|---|---|
Microprocesador | Xtensa Single-core 32-bit L106 | Xtensa Dual-Core 32-bit LX6 con 600 DMIPS |
Wi-Fi (802.11 b / g / n) | HT20 | HT40 |
Bluetooth | No posee | Bluetooth 4.2 y BLE |
Frecuencia de operación (valor típico) | 80 MHz | 160 MHz |
SRAM | No posee | 448 KB |
Flash | No posee | 520 KB |
GPIO | 17 | 34 |
PWM (hardware) | No posee | No posee |
PWM (software) | 8 canales | 16 canales |
SPI | 2 | 4 |
I2C | 1 | 2 |
I2S | 2 | 2 |
UART | 2 | 2 |
ADC | 10-bits de resolución | 12-bits de resolución |
CAN | No | Sí |
Interfaz MAC Ethernet | No | Sí |
Sensor de tacto | No | Sí |
Sensor de temperatura | No | Sí (solo las versiones antiguas) |
Sensor de efecto hall | No | Sí |
Temperatura de trabajo | -40ºC to 125ºC | -40ºC to 125ºC |
Características y especificaciones del ESP32
Aunque en la tabla anterior puedes notar algunas características claves del ESP32, la verdad, no está todo lo que necesitas saber. De hecho faltan muchos detalles.
Para conocer a fondo todas las prestaciones de este magnífico SoC es necesario indagar en su hoja de datos técnicos (datasheet) y en el manual de referencias técnico (technical reference manual), ambos ofrecidos por Expressif.
En la siguiente imagen, tomada de la hoja de datos, se muestran todos los bloques funcionales que conforman un SoC ESP32.
Lo explicaré sección por sección, ya que, está lejos de ser un sistema simple.
Conectividad inalámbrica
El chip cuenta con conectividad WiFi, siendo compatible con 802.11 b/g/n en la banda de los 2.4GHz, alcanzando velocidades de hasta 150 Mbits/s. También incluye comunicación Bluetooth compatible con Bluetooth v4.2 y Bluetooth Low Energy (BLE).
El bloque de radio está estrechamente ligado a los módulos de comunicación inalámbricos. De hecho, este es el que realmente transmite y recibe la información.
Es decir, toma los datos digitales provenientes de los módulos Wifi y Bluetooth; y los convierte en señales electromagnéticas que viajan por el aire para comunicarse con tu teléfono móvil o tu router.
Ojo, que también realiza la operación inversa: traducir las ondas electromagnéticas generadas por otros dispositivos en datos digitales que los módulos Wifi y Bluetooth son capaces de interpretar.
Núcleo
Ya te he comentado que el ESP32 cuenta con dos microprocesadores de bajo consumo Tensilica Xtensa de 32 bits LX6.
Pero además, cuenta con un co-procesador de ultra bajo consumo que es utilizado para realizar conversiones analógico-digital y otras operaciones mientras el dispositivo se encuentra funcionando en el modo de bajo consumo deep sleep. De esta forma, se consigue un consumo muy bajo por parte del SoC.
Es importante destacar que estos procesadores ofrecen grandes ventajas típicas de un procesador digital de señales:
- Frecuencia de operación: 240 MHz (ejecuta instrucciones 15 veces más rápido que una placa Arduino UNO)
- Permite realizar operaciones con números reales (números con coma) de forma muy eficiente.
- Permite realizar multiplicaciones de números grandes de forma instantánea.
Aunque estas características son transparentes cuando se está programando tienen gran repercusión en la eficiencia y tamaño del código que se graba al microcontrolador.
Memorias
En la mayoría de los microcontroladores en que se basan las placas Arduino hay tres tipos de memorias:
- Memoria de programa: para almacenar el sketch.
- Memoria SRAM: para almacenar las variables que se utilizan en el código.
- Memoria EEPROM: para almacenar variables que no pierdan su valor aun cuando el dispositivo esté apagado.
En los ESP32 no ocurre así, de hecho en ellos se encuentran más tipos de memorias que se suelen clasificar en internas y externas.
Las memorias internas son aquellas que se encuentran ya incluidas en el SoC, y las externas son aquellas que se pueden adicionar para expandir la capacidad del sistema.
Muchas placas de desarrollo basadas en ESP32 añaden memorias externas para lograr un sistema con mejores prestaciones.
En las memorias internas se encuentran:
- Memoria ROM (448 KiB): esta memoria es de solo escritura, es decir que no la puedes reprogramar. Aquí es donde se almacenan los códigos que manejan la pila Bluetooth, el control de la capa física de la Wifi, algunas rutinas de propósito general y el cargador de arranque (bootloader) para iniciar el código de la memoria externa.
- Memoria SRAM interna (520 KiB): esta memoria es utilizada por el procesador para almacenar tanto datos como instrucciones. Su ventaja es que, para el procesador, es mucho más fácil acceder a esta que a la SRAM externa.
- RTC SRAM (16 KiB): esta memoria es utilizada por el co-procesador cuando el dispositivo opera en modo deep sleep.
- Efuse (1 Kilobit): 256 bits de esta memoria son utilizados por el propio sistema y los 768 bits restantes están reservados para otras aplicaciones.
- Flash empotrada (Embedded flash): en esta memoria es donde se almacena el código de nuestra aplicación. La cantidad de memoria varía en dependencia del chip utilizado:
- 0 MiB (chips ESP32-D0WDQ6, ESP32-D0WD y ESP32-S0WD)
- 2 MiB (chip ESP32-D2WD)
- 4 MiB (módulo SiP ESP32-PICO-D4)
Para los ESP32 que no poseen memoria empotrada o simplemente cuando la memoria es insuficiente para tu aplicación, es posible adicionar más memoria de forma externa:
- Se pueden agregar hasta 16 MiB de memoria flash externa. De esta forma puedes desarrollar aplicaciones más complejas.
- También admite, hasta 8 MiB de memoria SRAM externa. Por lo tanto, es difícil que te encuentres limitado en memoria al implementar una aplicación utilizando esta plataforma.
Periféricos
El ESP32 cuenta con un gran conjunto de periféricos. Aunque son similares a los que poseen otros microcontroladores presentan sus diferencias.
Pines digitales
El ESP32 cuenta con un total de 34 pines digitales. Estos pines, al igual que en cualquier placa Arduino, permiten agregar LEDs, botones, zumbadores, y un largo etc. a nuestros proyectos.
La mayoría de estos pines admiten el uso de pull-up , pull-down internos y también el estado de alta impedancia. Esto los hace ideales para conectar botones y teclados matriciales, así como para aplicar técnicas de control de LEDs como la conocida Charlieplexin.
Conversor analógico digital
Algunos de los pines también pueden ser utilizados para interactuar con sensores analógicos, es decir, como si fueran los pines analógicos de una placa Arduino.
Para esto el ESP32 cuenta con un conversor analógico digital de 12-bits y 18 canales, es decir, que puedes tomar lecturas de hasta 18 sensores analógicos.
Esto te permite desarrollar aplicaciones conectadas muy compactas, incluso cuando se empleen varios sensores analógicos.
Conversor digital analógico
En la mayoría de las placas Arduino se utilizan señales PWM para generar voltajes analógicos. El ESP32 cuenta con dos conversores digital analógico.
Esto permite generar dos señales de voltaje analógicas puras. Dichos conversores, pueden ser utilizados para:
- controlar un circuito analógico
- manipular la intensidad de un LED
- o incluso agregar un pequeño amplificador y un altavoz a tu proyecto para reproducir una canción.
Sensor táctil
En caso de que quieras desarrollar aplicaciones con una interfaz libre de botones mecánicos. Puedes utilizar los pines sensibles al tacto presentes en los ESP32.
Estos pines son capaces de detectar las pequeñas variaciones producidas al acercar un dedo al pin. De esta forma, es posible crear todo tipo de controles como botones o barras de deslizamiento sin necesidad de utilizar componentes mecánicos.
Controlador SD/SDIO/MMC
Este periférico permite al ESP32 interactuar con tarjetas SD y MMC directamente. De hecho, combinando este controlador con el conversor digital analógico es posible mejorar nuestro pequeño reproductor de audio.
UART
Muchos microcontroladores cuentan con módulos UART, que en Arduino son conocidos como puertos Serial. Estos permiten establecer comunicaciones asíncronas entre dos dispositivos utilizando solamente dos pines.
El ESP32 cuenta con tres puertos UART:
- UART0
- UART1
- UART2
Todos estos son compatibles con los protocolos RS-232, RS-485 e IrDA.
Pines I2C ESP32
Los ESP32 cuentan con dos interfaces I2C o TWI que admiten los modos de operación maestro y esclavo. Entre sus características destacan:
- Modo estándar (100 Kbit/s)
- Modo rápido (400 Kbit/s)
- Direccionamiento de 7 y 10 bits
Pin ESP32 | Pin I2C |
---|---|
GPIO21 | SDA |
GPIO22 | SCL |
Controlador remoto infrarrojo
El ESP32 también permite la transmisión y recepción de señales utilizando varios protocolos infrarrojos (iguales a los que utiliza el mando de la televisión).
Por lo tanto, también puedes utilizar tu ESP32 para crear tu propio control remoto que te permita interactuar con tu TV o tu equipo de música.
PWM
Al igual que el ESP8266, el ESP32 también soporta el uso de salidas analógicas utilizando PWM. La gran diferencia es que en un ESP32 es posible utilizar hasta 16 pines como salidas PWM, una gran diferencia ante un ESP8266 que solo admite 8 o una placa Arduino UNO que solo soporta 6.
SPI
El ESP32 también cuenta con comunicación SPI. Cuenta con tres buses totalmente funcionales:
- Cuatro modos de transferencia: esto significa que es compatible con todos o casi todos los dispositivos SPI y QSPI disponibles en el mercado.
- Todos los puertos SPI son capaces de alcanzar altas velocidades (teóricamente hasta 80 MHz).
- Buffer de 64 bytes para transmisión y recepción.
Aceleradores de hardware para criptografía
Uno de los factores más importantes en cualquier sistema es la seguridad. Es por eso, que el ESP32 cuenta con aceleradores de algoritmos orientados a la encriptación:
Estos aceleradores permiten incrementar la velocidad de operación y reducir la complejidad del software permitiendo encriptado y des-encriptado dinámico. De esta forma, se protege al sistema de posibles ataques de hackeo que pretendan obtener el código almacenado.
¿Con qué formato y funcionalidad puedes encontrar al chip ESP32?
Al igual que ocurre con la familia ESP8266, encuentras una gran variedad de modelos de ESP32 en el mercado. De modo general, lo puedes encontrar en cuatro formatos:
- SoC ( sistema en chip )
- SiP ( sistema en paquete )
- Módulos PCB
- Placas de desarrollo
Un Soc reúne todos los componentes de un ordenador en un chip. Mientras, que un SIP se compone de varios circuitos integrados en el mismo paquete. Por ejemplo, ST53G es un SIP que combina un microcontrolador y un amplificador RF.
Si bien es cierto que lo normal es comprar una placa de desarrollo y no un chip o módulo aislado, es necesario conocer los chips y sus características. Esto se debe a que las prestaciones de las placas de desarrollo dependen, en gran medida, del chip que utilizan.
Chips y módulos con empaquetados QFN
Todos los SoCs y SiPs ESP32 utilizan el empaquetado QFN. Este es un encapsulado de circuito integrado para montaje superficial en el que los conectores se ubican por los cuatro lados, pero sin extenderse fuera del chip.
En la siguiente figura se puede ver un ejemplo.
Este permite obtener diseños muy compactos. Es por eso que muchos microcontroladores y microprocesadores se suelen fabricar con este empaquetado. Su desventaja radica en que es muy complicado, por no decir casi imposible, de utilizar de forma casera.
ESP32-D0WDQ6
El chip ESP32-D0WDQ6 fue el primer chip de la familia ESP32. Este tiene un encapsulado de 6 x 6 mm tipo QFN-48, es decir, que cuenta con un total de 48 pines. En la siguiente figura obtenida de la hoja de datos se muestra su distribución de pines.
Esta primera versión, cuenta con dos procesadores y no trae memoria adicional, es decir, que solo cuenta con las memorias internas.
ESP32-D0WD
El ESP32-D0WD cuenta con un encapsulado QFN-48 de 5mm x 5mm, un tanto menor que el ESP32-D0WDQ6. El hecho de utilizar un encapsulado diferente provoca que la posición de los pines cambien, aunque funcionalmente posee la misma cantidad y funcionalidad que su predecesor.
En la figura anterior puedes ver como la distribución de pines difiere del chip ESP32-D0WDQ6.
ESP32-D2WD
El ESP32-D2WD es una variación del ESP32-D0WD que cuenta con 2 MiB de memoria flash adicional. Si bien esto es una ventaja cabe destacar que los pines GPIO16, GPIO17, SD_CMD, SD_CLK, SD_DATA_0 y SD_DATA_1 son utilizados internamente para conectar dicha memoria. Eso implica que no deben ser utilizados para otras tareas.
ESP32-S0WD
El ESP32-S0WD es una variación en la que solo se ha incluido un procesador, a diferencia de los otros chips que cuentan con dos. Exceptuando esta diferencia, es funcionalmente similar a un ESP32-D0WD.
ESP32-PICO-D4
El ESP32-PICO-D4 es un módulo SiP con encapsulado de 7mm x 7mm de tipo QFN-48. La gran ventaja de este chip frente a los anteriores es que requiere muy pocos componentes externos, ya que en su interior cuenta con:
- cristal oscilador de 40 MHz
- 4MiB memoria flash adicional
- capacitores de filtrado
- adaptadores para enlaces de radiofrecuencia
Este módulo es empleado en una gran variedad de placas de desarrollo, entre las que destacan:
- ESP32-ZERO V2
- ESP32-PICO Core Board V2
- ESP32-PICO-KIT (versiones 3 y 4)
- ESP32-PICO Motherboard
- ESP32-PICO-CAM
En la página 19 de la hoja de datos del ESP32-PICO-D4 se muestra el esquema eléctrico presente en el interior de este módulo. En dicha página es posible observar todos los componentes integrados en este SiP, así como su mapa de pines.
En la hoja de datos también se encuentra la distribución de pines. Es interesante notar que esta varía bastante de la distribución de otros chip a pesar de contar con la misma cantidad de pines.
En la siguiente tabla, se muestra un pequeño resumen de los chips ESP32 analizados.
Cabe destacar que estos no son los únicos, pero sí los más comunes para la fabricación de módulos y placas de desarrollo.
ID | CPU | Flash | Encapsulado | Detalles |
---|---|---|---|---|
ESP32-D0WDQ6 | 2 | 0 MiB | Primer chip de la familia ESP32 | |
ESP32-D0WD | 2 | 0 MiB | Similar al ESP32-D0WDQ6 pero de menor tamaño. | |
ESP32-D2WD* | 2 | 2 MiB | ESP32-D2WD * | |
ESP32-S0WD | 1 | 0 MiB | Variación de ESP32 con un solo procesador | |
ESP32-PICO-D4* | 2 | 4 MiB | Módulo SiP con mayor nivel de integración (requiere menos componentes externos) |
* En estos chips los pines GPIO16, GPIO17, SD_CMD, SD_CLK, SD_DATA_0 y SD_DATA1 son empleados para conectar la memoria adicional. Es por eso que se recomienda no utilizar estos pines.
Módulos PCB compactos de montaje superficial
El inconveniente de utilizar los chips anteriores es que es necesario agregar toda la electrónica externa. Además, teniendo en cuenta que se trata de chips de montaje superficial esa tarea más que complicada puede resultar imposible si no se cuenta con las herramientas adecuadas.
Teniendo en cuenta esto, varias compañías se han dado a la tarea de fabricar módulos PCB basados en esos chips.
Cada módulo es una pequeña placa de circuito impreso sobre la que se sueldan chips y otros componentes y se tratan como un conjunto inseparable para integrarse en otra PCB.
Todos los módulos contienen un chip ESP32, un cristal oscilador de 40 MHz y un chip de memoria flash, pero varían en características como:
- configuración de la antena: algunos traen la antena integrada y otros disponen de un conector.
- capacidad del chip de memoria flash: puede variar desde 1 MiB hasta 16 MiB.
- blindaje EM: en algunos de estos módulos se ha agregado un blindaje para reducir las interferencias electromagnéticas.
En la sección de módulos del sitio web de Espressif puedes ver toda la gama de módulos PCB fabricados por esta compañía. A continuación, solo se comentan los módulos más conocidos y empleados en las placas de desarrollo.
Estos módulos están diseñados para ser incorporados a productos finales, por lo tanto, carecen de los componentes típicos de las placas de desarrollo como conversores USB-Serie o reguladores de voltaje.
ESP-WROOM-32
El ESP-WROOM-32 fue el primer módulo PCB creado por Espressif. Este cuenta con unas dimensiones de 25,5 mm × 18 mm × 3,1 mm, se basa en el chip ESP32-D0WDQ6 y cuenta con 4 MiB de memoria flash adicional.
Además de integrar toda la electrónica necesaria para funcionar, cuenta con un blindaje que recubre todos los componentes del circuito y una antena impresa tipo MIFA para la interfaz de radio.
Tomando este módulo como patrón se desarrollaron otros con ciertas variaciones:
- ESP32-WROOM-32D (Espressif): es prácticamente igual, su única diferencia es que emplea el chip ESP32-D0WD en lugar del ESP32-D0WDQ6.
- ESP32-WROOM-32U (Espressif): a diferencia del ESP-WROOM-32 este módulo no cuenta con antena impresa. En su lugar utiliza un conector U.FL para agregar una antena externa.
- ESP32F (Guoyun Technology): clon con dimensiones reducidas.
ESP32-WROVER-B
El módulo ESP32-WROVER-B está basado en el chip ESP32-D0WD y sus dimensiones son de solo 18 mm x 31,4 mm x 3,3 mm. Cuenta con blindaje y antena integrada, así como 4 MiB de memoria flash adicional y 8 MiB de memoria SRAM externa.
Estas características lo hacen ideal para un amplio rango de aplicaciones que van desde redes de sensores de bajo consumo hasta tareas complejas como la codificación de voz o el streaming de audio.
Comparativa entre placas de desarrollo ESP32
El principal inconveniente de todos los chips y módulos ESP32 vistos hasta ahora, es que no permiten una forma amigable de ser programados. Es decir, no poseen una interfaz USB al igual que las placas Arduino para ser programados.
Además, tampoco cuentan con cabezales de pines que permitan realizar prototipos de forma fácil sin necesidad de crear un circuito impreso propio.
Para tales propósitos existen las placas de desarrollo. Cuentan con conectores y otros componentes que te permitirán crear tus proyectos IoT aprovechando al máximo las características del ESP32.
En la siguiente tabla se muestra un resumen de las placas de desarrollo basadas en ESP32 más conocidas.
Figura | Nombre | Comprar | GPIOs | Pulsadores | + info |
---|---|---|---|---|---|
ESP32 DEV KIT DOIT | Amazon.com | 30/36 | EN y BOOT | – | |
Adafruit HUZZAH32 | Amazon.com | 28 | RESET | Cargador LiPo | |
ESP32 Thing | Amazon.com | 40 | Y y BARCO | Cargador LiPo | |
LOLIN32 con soporte de batería | Amazon.com | 40 | EN y BOOT | Batería 18650 con sistema de carga | |
ESP32 LOLIN OLED | Amazon.com | 26 | EN y BOOT | Pantalla OLED de 0.96’’ | |
SX1278 ESP32 (LoRa) | Amazon.com | 26 | EN and BOOT | Chip para comunicación LoRa (SX1278) y pantalla OLED de 0.96’’ |
¿Cómo seleccionar una placa de desarrollo ESP32?
Antes de seleccionar una placa de desarrollo ESP32 es necesario que tengas en cuenta ciertos aspectos:
- Números de pines y configuración: es importante tener acceso a la distribución de pines de la placa para poder hacer un uso correcto de ella.
- Interfaz Serie-USB y regulador de voltaje: estas dos características las tienen prácticamente todas las placas de desarrollo. Estas son las que permiten conectar la placa directamente al ordenador para ser energizada y programada.
- Conector para batería: si estás pensando en incursionar en sistemas de bajo consumo con baterías puedes optar por placas que ya incluyan conectores para baterías.
- Funciones extras: muchas placas de desarrollo para ESP32 traen características extras como cámaras, pantallas OLED, módulos LoRa, etc.
A continuación, se muestra una breve reseña sobre cada una de las placas enumeradas en la tabla. La idea no es ofrecerte un análisis exhaustivo, sino más bien destacar las características claves de cada una.
ESP32 DEV KIT DOIT
Existen dos versiones de esta placa: una con 30 y otra con 36 GPIOs. Ambas se basan en el módulo PCB ESP32-WROOM-32 y son similares, siendo la distribución de pines su única diferencia.
La versión de 36 GPIOs permite acceder a los 6 pines utilizados para la memoria externa. Teniendo en cuenta que Espressif recomienda no utilizar estos pines, lo mejor es utilizar la versión de 30 GPIOs.
Los pines están etiquetados en la parte superior de la placa, lo que facilita la conexión con otros dispositivos. También cuenta con una interfaz USB-Serie y regulador de voltaje que permiten programar fácilmente la placa utilizando Arduino IDE o cualquier otra plataforma de desarrollo compatible. La placa puede ser alimentada utilizando el conector micro-USB, el pin VIN o el pin 3.3V.
Adafruit ESP32 Feather
Al igual que la placa anterior esta también posee interfaz USB-Serie, regulador de voltaje y la nomenclatura de los pines en la parte superior.
Una de las grandes ventajas de esta placa es que cuenta con un conector para baterías LiPo. Eso lo hace perfecto para aplicaciones portables alimentadas con baterías.
Otra ventaja de esta placa es la extensa documentación que Adafruit ofrece, incluyendo tutoriales y hojas de datos.
Sparkfun ESP32 Thing
La placa ESP32 Thing es la apuesta de Sparkfun por la plataforma ESP32. Este cuenta con todas las funcionalidades necesarias para comunicar y programar el ESP32 desde el ordenador. Su nombre se debe a que está especialmente orientado al IoT (Internet of Things)
Cuenta con un conector para baterías LiPo y un cargador LiPo integrado en la placa. Esto implica que las baterías recargables pueden cargarse conectando 5 voltios mediante el conector USB. Al igual que Adafruit, Sparkfun también ofrece una amplia documentación de muy buena calidad.
ESP32 con soporte de batería
Esta placa de desarrollo basada en ESP32 cuenta con características similares a las anteriores, pero incluye un soporte para batería que permite alimentar el sistema utilizando una batería 18650.
También incluye el sistema de carga para la batería y dos LEDs para indicar el estado de la batería. Adicionalmente, la placa permite cargar la batería al mismo tiempo que trabaja. Esto lo convierte en una excelente opción si se necesita un diseño compacto energizado por baterías.
ESP32 con OLED
Esta placa de desarrollo es similar a la anterior, incluso se basa en el mismo módulo (ESP-WROOM-32). La diferencia radica en que posee una pantalla OLED de 0.96 pulgadas en lugar de soporte para baterías.
Contar con una pantalla integrada es una gran ventaja, ya que puede ser utilizada para depuración o incluso como interfaz visual en tu proyecto.
ESP32 SX1278 (LoRa)
Esta placa ESP32 viene con el chip SX1278, que es un chip transceptor LoRa.
LoRa es una tecnología de comunicación de datos inalámbrica que permite la comunicación de largo alcance de pequeñas cantidades de datos, y con un consumo de energía mínimo. Viene con una pantalla OLED, que es realmente útil para mostrar mensajes LoRa.
Si tienes la intención de hacer un proyecto con LoRa usando el ESP32, esta puede ser la mejor opción, ya que cuentas con el hardware necesario.
Otras placas de desarrollo ESP32 y proyectos especializados
Existen otras placas de desarrollo con características particulares que pueden ser útiles en proyectos más específicos:
- ESP32-CAM: es una placa de desarrollo basada en ESP32 que cuenta con cámara, slot para tarjetas microSD y varios GPIOs.
- TTGO T-Call ESP32 con SIM800L GSM/GPRS: placa de desarrollo que combina un módulo ESP32 con uno SIM800L GSM/GPRS.
- M5Stack: es una placa de desarrollo muy económica que cuenta con un display LCD a color de 2 pulgadas, una bonita carcasa, conector USB tipo C para programación y alimentación, conectividad I2C y un grupo de pines de GIPOs para conectarlo a todo tipo de dispositivos.
- ESP-EYE: es una placa de desarrollo para el reconocimiento de imágenes y el procesamiento de audio, que se puede utilizar en varias aplicaciones AioT. Cuenta con un chip ESP32, una cámara de 2 megapíxeles y un micrófono. ESP-EYE ofrece una gran cantidad de almacenamiento, con 8 Mbyte de SRAM y 4 Mbyte de memoria flash. También admite la transmisión de imágenes a través de Wi-Fi y la depuración a través de un puerto Micro-USB.
Vulnerabilidades en el ESP32
Por último, es importante mencionar novedades sobre la seguridad de nuestros ESP32 y ESP8266.
Ya han solucionado la mayoría de las vulnerabilidades, pero si estás ejecutando software ESP32 y te encuentras en un entorno crítico, será mejor que actualices el firmware lo antes posible.
La primera y segunda vulnerabilidad aprovecha errores en la forma en que las bibliotecas ESP manejan el protocolo de autenticación extensible (EAP).
Para una mejor comprensión, te comento que EAP es un framework de autenticación. Un estándar que sigue ciertos pasos para realizar el proceso de autorización de un dispositivo en una red LAN. Se basa en mecanismos de negociación, llamados métodos EAP, los cuales pueden ser flexibles según la aplicación.
El truco hace que el ESP32 o ESP8266 en la red habilitada para EAP se bloquee, pero existe otro hackeo que permite un secuestro completo de la sesión cifrada (acceso no autorizado a información o servicios en un sistema).
Estos hacks de EAP son preocupantes, aunque, cabe aclarar que la base de código ESP32 ya ha sido parcheada contra ellos, pero el SDK ESP8266 más antiguo aún no lo ha hecho.
Conclusión sobre el chip ESP32
Este es el primer artículo que se escribe en el blog sobre el ESP32 aunque en varios podcast ya hemos hablado de este SoC. Se confirma que es el sucesor de nuestro querido ESP8266.
Se trata de una nueva generación de placas y microcontroladores destinadas al mundo del IoT, la domótica y los objetos conectados.
Y aunque como has podido ver en este artículo su potencia lo hace un microcontrolador robusto y asequible, el ESP8266 todavía seguirá unos años más con todos nosotros.
Sobre todo por la cantidad de productos comerciales que actualmente están desarrollados con este SoC.
Dicho esto, se abre una nueva línea editorial en el blog donde iremos compartiendo contenido relacionado con el ESP32.
Como siempre, muchas gracias por estar al otro lado y cualquier duda o sugerencia, en los comentarios de aquí abajo.
Gracias a Shutterstock por la cesión de las imágenes.