Resumen

Este codelab fue creado para explorar el mundo de la tarjeta de desarrollo ESP32 como microcontrolador de bajo costo, con posibilidades de implementación de sistemas en el contexto de los Sistemas Embebidos, el Internet de las Cosas (IoT) y la Inteligencia artificial. Se presentarán las principales características de la tarjeta de desarrollo. Con este recurso se espera que usted al finalizar esté en capacidad de:

  • Identificar las principales características de la tarjeta de desarrollo ESP32, en cuanto a capacidad de procesamiento, periféricos y conexiones.

Fecha de Creación:

2024/03/01

Última Actualización:

2024/03/01

Requisitos Previos:

Adaptado de:

https://randomnerdtutorials.com/projects-esp32/

Referencias:

https://randomnerdtutorials.com/projects-esp32/

http://esp32.net/

https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf

Escrito por:

Fredy Segura-Quijano

¿Qué es ESP32?

La ESP32 es un microcontrolador de bajo costo y bajo consumo de energía con conectividad Wi-Fi y Bluetooth integrada, un procesador de doble núcleo; desarrollado por Espressif Systems. Es la sucesora de la popular ESP8266, pero con una serie de mejoras y nuevas características que la hacen más versátil y potente para una amplia gama de aplicaciones en el Internet de las Cosas (IoT), automatización doméstica, wearables, e Inteligencia Artificial en el sentido de poder hacer inferencia de modelos neurales bajo uso de librerías optimizadas.

Las principales características de la ESP32 son:

La ESP32 se destaca por su capacidad de soportar el rápido desarrollo de aplicaciones IoT gracias a su bajo costo, su amplia gama de características integradas, y la flexibilidad que ofrece para el desarrollo de software con el uso de diversos frameworks y herramientas de desarrollo: Se puede usar como framework Arduino con sus librerías y el framework ESP-IDF oficial de Espressif que permite mayor personalización. Igualmente el uso de Sistemas Operativos en tiempo real como el FreeRTOS se puede usar en la ESP32 a partir de los dos frameworks.

Framework Arduino

Framework ESP-IDF (Espressif IoT Development Framework)

Conectividad inalámbrica:

Procesador:

Microprocesador Tensilica Xtensa Dual-Core LX6 de 32 bits, funcionando a 160 o 240 MHz

Memoria :

Bajo consumo: garantiza que se pueda utilizar conversiones ADC, por ejemplo, durante el sueño profundo .

Entrada/Salida periférica:

Seguridad: aceleradores de hardware para AES y SSL/TLS

TARJETAS/PLACAS DE DESARROLLO ESP32.

Para seleccionar una tarjeta de desarrollo ESP32 hay algunos aspectos a tener en cuenta:

ESP32 DEVKIT V1 USB-C.

ESP32 DEVKIT V1 USB-C es la referencia de tarjeta usada para explicar los siguientes contenidos. En general la mayoría de versiones de la ESP32 tiene una alta compatibilidad, pero pueden variar las versiones en cantidad de pines, funciones generales, tipos de conectores entre otros.

[Fotografía Tarjeta ESP32 DEVKIT V1 USB-C]

La siguiente tabla muestra un resumen de las características y especificaciones de la placa ESP32 DEVKIT V1 USB-C:

CPU principal. Nucleos.

Tensilica Xtensa 32-bit LX6. 2 (doble núcleo).

Procesador secundario.

Permite hacer operaciones básicas en modo de ultra bajo consumo.

Desempeño.

Hasta 600 DMIPS.

Wi-Fi

802.11 b/g/n/e/i (802.11n @ 2.4 GHz hasta 150 Mbit/s).

Bluetooth.

4.2 BR/EDR BLE Modo de control dual.

Seguridad.

IEEE 802.11, incluyendo WFA, WPA/WPA2 y WAPI.

Criptografía acelerada por hardware.

AES, SHA-2, RSA, criptografía de curva elíptica (ECC), generador de números aleatorios (RNG).

Frecuencia de reloj.

Hasta 240MHz.

Memoria.

448 KByte ROM, 520 KByte SRAM, 6 KByte SRAM en RTC y QSPI admite múltiples chips flash /SRAM.

Pines.

30. Digitales GPIO: 24 (Algunos pines solo como entrada).

Periféricos.

Táctil capacitivo, ADC (convertidor analógico a digital), DAC (convertidor digital a analógico), I2C (circuito interintegrado), UART (receptor/transmisor asíncrono universal), CAN 2.0 (red de área de controlador), SPI (interfaz periférica serie) , I2S (sonido inter-IC integrado), RMII (interfaz independiente de medios reducida), PWM (modulación de ancho de pulso) y más.

Botones incorporados.

Botones RESET y BOOT.

LED incorporados.

LED azul incorporado conectado a GPIO2; LED rojo incorporado que muestra que la placa está siendo alimentada.

Chip USB a UART (Serial).

CH340C.

Puerto.

USB-C.

Voltaje de Alimentación (USB).

5V DC.

Voltaje de Entradas/Salidas.

3.3V DC.

Consumo de energía.

5μA en modo de suspensión

Conversor Analógico Digital.

Dos ADC de 12bits tipo SAR, soporta mediciones en hasta 18 canales, algunos pines soporta un amplificador con ganancia programable.

Esta tarjeta ESP32 en particular viene con 30 pines, 15 en cada lado, y con puerto de conexión USB-C. La cantidad de GPIO disponibles y el conector depende del modelo de su tarjeta y en general no debe ser un problema alguna variación.

¿Cómo usar la tarjeta ESP32?

Para comenzar a utilizar esta placa y programarla desde un computador se debe instalar primero el controlador o driver, que permite la comunicación entre el computador y la tarjeta. Algunas placas usan chip CP2102 el cual se encarga de programar y establecer comunicación USB-Serial. En el siguiente link se puede descargar el controlador universal CP210x el cual incorpora la versión CP2102 que necesita la placa: CP210x Controlador universal.

En el caso que la tarjeta tenga el chip CH340C se puede descargar el controlador o driver compatible con CH340 y CH341 de la página del fabricante: Controlador CH340C.

[Partes de la ESP32 DEVKIT V1 USB-C ]

Una vez descargado el driver, se puede conectar la tarjeta al computador por medio de la interfaz USB-C; que se puede usar para conectar la placa al computador para cargar código y/o para energizarla.

La tarjeta también tiene un botón RESET (puede estar etiquetado como EN) para reiniciarla y un botón BOOT para poner la placa en modo intermitente (disponible para recibir código). Tenga en cuenta que es posible que algunas placas no tengan un botón de BOOT.

Adicionalmente viene un LED azul incorporado que está conectado internamente a GPIO 2. Este LED es útil para la depuración y proporciona algún tipo de salida física visual. También hay un LED rojo que se enciende cuando se le proporciona energía a la placa.

Guía de configuración de pines de ESP32 GPIO.

El chip o circuito integrado ESP32 viene con 48 pines con múltiples funciones. No todos los pines están expuestos o disponibles en todas las placas de desarrollo ESP32 y algunos pines no deben usarse. La placa ESP32 DEVKIT V1 DOIT generalmente viene con 30 GPIO expuestos que se pueden usar para conectar periféricos.

Pines de alimentación.

Por lo general, todas las placas vienen con pines de alimentación: 3V3, GND y VIN. Se pueden usar estos pines para alimentar la placa (si no se está proporcionando energía a través del puerto USB) o para obtener energía para otros periféricos (si se está alimentando la placa usando el puerto USB).

Pines de entrada y salida de uso general (GPIOs).

Casi todos los GPIO tienen un número asignado y así es como uno puede referirse a ellos: por su número. Con el ESP32 se puede decidir qué pines son UART, I2C o SPI ; solo se necesita configurarlo en el código. Esto es posible gracias a la función de multiplexación del chip ESP32 que permite asignar múltiples funciones al mismo pin.

Si no se les configura en el código, los pines se configurarán de forma predeterminada como se muestra en la siguiente figura (la ubicación de los pines puede cambiar según el fabricante). Además, existen pines con características específicas que los hacen adecuados o no para un proyecto en particular.

[Configuración de pines de la ESP32 DEVKIT V1 USB-C. Referencia CIRCUITSTATE ]

La ubicación de los GPIO puede ser diferente según el modelo de su placa. Sin embargo, normalmente, cada GPIO específico funciona de la misma manera independientemente de la placa de desarrollo que esté utilizando (con algunas excepciones). Por ejemplo, independientemente de la placa, normalmente GPIO5 es siempre el pin VSPI CS0, GPIO 23 siempre corresponde a VSPI MOSI para comunicación SPI, etc.