Hace unos años, el ESP8266 revolucionó el mundo del IoT integrado. Por menos de 3 dólares, se podía conseguir un microcontrolador programable con WiFi capaz de monitorizar y controlar cosas desde cualquier parte del mundo. 

Después del éxito abrumador del ESP8266, Espressif (la compañía de semiconductores que creó el ESP8266) ha lanzado una actualización sobrealimentada perfecta: el ESP32. Incorpora no solo WiFi, sino también Bluetooth 4.0 (BLE/Bluetooth Smart), lo que lo hace ideal para cualquier aplicación de Internet de las cosas (IoT). 

 

Presentación del ESP32 

El ESP32 es en realidad una serie de microcontroladores creados y desarrollados por Espressif Systems, una empresa china con sede en Shanghái. Las siguientes características son las principales razones por las que a la gente le gusta el ESP32:

Procesador de doble núcleo

El ESP32 está equipado con un microprocesador Tensilica Xtensa® Dual-Core LX6 de 32 bits que funciona a una frecuencia de reloj ajustable de 80 a 240 MHz y funciona hasta 600 DMIPS (Dhrystone Million Instructions Per Second).

Consumo de energía ultrabajo

Con sus múltiples modos de energía y escalado dinámico de potencia, ESP32 logra un consumo de energía ultra bajo, lo que lo hace ideal para su uso en dispositivos móviles, dispositivos electrónicos portátiles y aplicaciones de IoT.

 

Capacidades Wi-Fi

El ESP32 incorpora un transceptor Wi-Fi 802.11b/g/n HT40, lo que le permite conectarse a una red Wi-Fi para acceder a Internet (modo Estación) o crear su propia red inalámbrica Wi-Fi (modo Soft access point) a la que pueden conectarse otros dispositivos.

Capacidades Bluetooth de modo dual

El ESP32 es compatible con Bluetooth 4.0 (BLE/Bluetooth Smart), así como con Bluetooth Classic (BT), lo que lo hace adecuado para una amplia gama de aplicaciones de IoT.

Amplio conjunto de periféricos

El ESP32 incluye una gran cantidad de periféricos integrados, como táctiles capacitivos, ABC, DAC, UART, SPI, I2C, PWM y mucho más.

 

Muchas plataformas de desarrollo

Hay varias plataformas de desarrollo disponibles para programar el ESP32. Puedes usar el IDE de Arduino, MicroPython, Espruino, Espressif SDK o una de las plataformas listadas en WikiPedia.

Diseño robusto

El ESP32 puede funcionar de forma fiable en entornos industriales con temperaturas de funcionamiento que oscilan entre -40 °C y +125 °C.

Bajo costo

Es uno de los microcontroladores baratos, con precios a partir de 6 dólares; Esto los hace accesibles a un público amplio.

 

Placas de desarrollo ESP32

Para empezar con el ESP32, necesitarás una buena placa de ™desarrollo que incluya todos los extras. Existen numerosas variedades de placas de desarrollo. Si bien todos funcionan de manera similar, algunos tableros pueden ser más adecuados para proyectos específicos que otros.

Los siguientes son solo algunos de los muchos tipos diferentes de placas ESP32 que puedes probar.

ESP32 DevKit V1

Debido a su inmensa popularidad, esta es la mejor tabla para principiantes. Viene con todo lo que necesita para comenzar con ESP32. Y esto es lo que usaremos para nuestros experimentos.

 

ESP32 OLED Kit

En comparación con la placa anterior, esta incluye una pantalla OLED, lo que la convierte en una buena adición para las aplicaciones de Internet de las cosas. Además, cuenta con un conector u.FL para una antena externa y un conector de batería lipo para crear proyectos que funcionan con baterías.

ESP32-CAM

La cámara OV2640 de 2MP incorporada y la ranura para tarjetas microSD hacen de esta una de las placas más interesantes disponibles; es ideal para proyectos de IoT que requieren ™una cámara con funciones avanzadas como seguimiento y reconocimiento de imágenes.

ESP32 SIM800L TTGO T-Call

¿™No tienes WiFi? No hay problema. La tarjeta ESP32 SIM800L TTGO T-Call le permite conectarse a Internet a través de un plan de datos de tarjeta SIM y enviar información a la nube, sin necesidad de Wi-Fi.

M5Stack

M5Stack es un kit de herramientas de desarrollo de productos modulares apilables basado en ESP32. El ecosistema M5 incluye un controlador principal y módulos adicionales que se pueden apilar (similares a los shields de Arduino) para ampliar la funcionalidad de los proyectos.

ESP32 DevKit V1 Board Hardware Overview

Cuando se trata de placas de desarrollo ESP32, el ESP32 DevKit v1 es, con mucho, la opción más utilizada. Esto es lo que usaremos para nuestros experimentos. No te preocupes si tienes una tabla diferente; La información de esta página debería seguir siendo útil.

Profundicemos en la descripción general del hardware de la placa ESP32 DevKit v1.

Módulo ESP-WROOM-32

Esta placa de desarrollo está equipada con el módulo ESP-WROOM-32, que contiene el microprocesador Tensilica Xtensa Dual-Core LX6 de 32 bits. Este procesador es similar al utilizado en el ESP8266, pero tiene dos núcleos de CPU (que se pueden controlar individualmente), funciona a una frecuencia de reloj ajustable de 80 a 240 MHz y puede funcionar hasta 600 DMIPS (Dhrystone millones de instrucciones por segundo).

ESP-WROOM-32 Chip

  1. Xtensa Dual-Core 32-bit LX6
  2. Frecuencia de reloj de hasta 240 MHz.
  3. SRAM interna de 520 kB
  4. Memoria flash externa de 4 MB
  5. Transceptor Wi-Fi 802.11b/g/n
  6. Bluetooth 4.2/BLE

También hay 448 KB de ROM, 520 KB de SRAM y 4 MB de memoria Flash (para el almacenamiento de programas y datos), que es suficiente para manejar las largas cadenas que componen las páginas web o los datos JSON/XML.

El ESP32 incorpora un transceptor Wi-Fi 802.11b/g/n HT40, lo que le permite conectarse a una red Wi-Fi para acceder a Internet (modo Estación) o crear su propia red inalámbrica Wi-Fi (modo Soft access point) a la que pueden conectarse otros dispositivos.

El ESP32 también es compatible con WiFi Direct, que es una buena opción para conexiones punto a punto que no requieren un punto de acceso. WiFi Direct es más fácil de configurar y tiene velocidades de transferencia de datos mucho más rápidas que Bluetooth.

El chip es compatible con Bluetooth 4.0 (BLE/Bluetooth Smart) y Bluetooth Classic (BT), lo que lo hace aún más versátil.

Alimentación

Debido a que el rango de voltaje de funcionamiento del ESP32 es de 2.2V a 3.6V, la placa incluye un regulador de voltaje LDO para mantener el voltaje ™estable a 3.3V. Puede proporcionar de forma fiable hasta 600 mA, lo que debería ser suficiente incluso cuando el ESP32 está consumiendo su corriente máxima durante las transmisiones de RF.

Requisito de energía

  • Voltaje de funcionamiento: 2,2 V a 3,6 V
  • Regulador integrado de 3,3 V y 600 mA
  • 5 μA durante el modo de reposo
  • 250 mA durante las transmisiones de RF

La salida del regulador de 3,3 V se divide en el pin del cabezal etiquetado como 3V3. Este pin se puede utilizar para alimentar circuitos externos.

La placa de desarrollo ESP32 suele estar alimentada por el conector USB MicroB integrado. Alternativamente, si tiene una fuente de alimentación regulada de 5 V, puede usar el pin VIN para alimentar el ESP32 y sus periféricos directamente.

 Periféricos y E/S

Aunque el ESP32 tiene 48 pines GPIO en total, solo 25 de ellos están divididos en cabezales de pines. A estos pines se les puede asignar una variedad de tareas periféricas, que incluyen:

  • 15 canales ADC: 15 canales de ADC SAR de 12 bits con rangos seleccionables de 0-1 V, 0-1,4 V, 0-2 V o 0-4 V
  • 2 interfaces UART – 2 interfaces UART con control de flujo y soporte IrDA
  • 25 salidas PWM: 25 pines PWM para controlar cosas como la velocidad del motor o el brillo del LED.
  • 2 canales DAC: dos DAC de 8 bits para generar voltajes analógicos verdaderos
  • Interfaz SPI, I2C e I2S: tres interfaces SPI y una I2C para conectar varios sensores y periféricos, así como dos interfaces I2S para agregar sonido a su proyecto.
  • 9 almohadillas táctiles: 9 GPIO con detección táctil capacitiva.

Multiplexed I/Os

  1. 15 canales ADC
  2. 2 interfaces UART
  3. 25 PWMs
  4. 2 canales DAC
  5. Interfaz SPI, I2C e I2S
  6. 9 almohadillas táctiles

Gracias a la función de ™multiplexación de pines del ESP32, que permite que varios periféricos compartan un solo pin GPIO. Por ejemplo, un solo pin GPIO puede actuar como entrada ADC, salida DAC o panel táctil.

GPIO de solo entrada

Los pines GPIO34, GPIO35, GPIO36(VP) y GPIO39(VN) no se pueden configurar como salidas. Se pueden utilizar como entradas digitales o analógicas, o para otros fines. También carecen de resistencias internas de tracción hacia arriba y hacia abajo, a diferencia de los otros pines GPIO.

Interruptores integrados e indicadores LED

Hay dos botones en la placa de desarrollo ESP32. El botón de reinicio, etiquetado como EN, se utiliza para reiniciar el chip ESP32. El otro botón es el botón de arranque, que se utiliza para descargar nuevo software o programas.

Interruptores e indicadores

  • ES – Reiniciar el chip ESP32
  • Arranque – Descargar nuevos programas
  • LED rojo – Indicador de encendido
  • LED azul: programable por el usuario

La placa también incluye dos indicadores LED. El LED rojo indica que la placa está encendida, mientras que el LED azul es programable por el usuario y está conectado al pin D2 de ™la placa.

Comunicación en serie

La placa incluye el controlador de puente USB a UART CP2102 de Silicon Labs , que convierte señales USB a serial y le permite programar el chip ESP32.

Comunicación en serie

  1. CP2102 Convertidor de USB a UART
  2. Velocidad de comunicación de 5 Mbps
  3. Compatibilidad con IrDA

Distribución de pines de la placa de desarrollo ESP32

La placa de desarrollo ESP32 DevKit V1 tiene 30 pines en total. Para mayor comodidad, los pines con una funcionalidad similar se agrupan. La distribución de pines es la siguiente:

Pines de alimentaciónHay dos pines de alimentación: el pin VIN y el pin 3V3. El pin VIN se puede utilizar para alimentar directamente el ESP32 y sus periféricos, si tienes una fuente de alimentación regulada de 5 V. El pin 3V3 es la salida del regulador de voltaje integrado; puedes obtener hasta 600 mA de él.

GND Es el pin de tierra.

Pines GPIO La placa de desarrollo ESP32 tiene 25 pines GPIO a los que se les pueden asignar diferentes funciones programando los registros apropiados. Hay varios tipos de GPIO: solo digitales, , habilitados para analógicos, habilitados para táctil capacitivo, etc. Los GPIO habilitados para analógicos y los GPIO habilitados para táctil capacitivo se pueden configurar como GPIO digitales. Todos los GPIO se pueden configurar como interrupciones .

Canales ADC El ESP32 integra dos conversores analógicos SAR de 12 bits y admite mediciones en 15 canales (pines habilitados para señales analógicas). Algunos de estos pines se pueden utilizar para construir un amplificador de ganancia programable para medir pequeñas señales analógicas. Además, el ESP32 está diseñado para medir voltajes mientras está en modo de suspensión.

 Canales DACEl ESP32 incluye dos canales DAC de 8 bits para convertir señales digitales en voltajes analógicos reales. Puede utilizarse como un “potenciómetro digital” para controlar dispositivos analógicos.

Superficie táctilLa placa tiene 9 entradas y salidas GPIO con detección táctil capacitiva. Cuando una carga capacitiva (como un dedo humano) se encuentra cerca de la entrada y salida GPIO, el ESP32 detecta el cambio en la capacitancia.

Pines SPIEl ESP32 tiene tres SPI (SPI, HSPI y VSPI) en modo esclavo y maestro. Estos SPI también admiten las funciones SPI de uso general que se enumeran a continuación:

  • 4 modos de temporización de la transferencia de formato SPI
  • Hasta 80 MHz y los relojes divididos de 80 MHz
  • FIFO de hasta 64 bytes.

Solo VSPI y HSPI son interfaces SPI utilizables, y el tercer bus SPI lo utiliza el chip de memoria flash integrado. Los pines VSPI se utilizan comúnmente en las bibliotecas estándar.

Pines I2CEl ESP32 tiene un único bus I2C que permite conectar hasta 112 sensores y periféricos. Los pines SDA y SCL están asignados, por defecto, a GPIO21 y GPIO22, respectivamente. Sin embargo, puedes aplicar el protocolo I2C en cualquier pin GPIO con un wire.begin(SDA, SCL)comando.

Pines UARTLa placa de desarrollo ESP32 tiene dos interfaces UART, UART0 y UART2, que admiten comunicación asincrónica (RS232 y RS485) e IrDA a hasta 5 Mbps. UART proporciona administración de hardware de las señales CTS y RTS y también control de flujo de software (XON y XOFF).

~ Pines PWMLa placa tiene 25 canales (casi todos pines GPIO) de pines PWM controlados por un controlador PWM. La salida PWM se puede utilizar para controlar motores digitales y LED. El controlador PWM consta de los temporizadores PWM y el operador PWM. Cada temporizador proporciona temporización en forma sincrónica o independiente, y cada operador PWM genera la forma de onda para un canal PWM.

ES Pinse utiliza para habilitar el ESP32. Cuando se pone en ALTO, el chip se habilita; cuando se pone en BAJO, el chip funciona a baja potencia.

Plataformas de desarrollo ESP32

Hay varias plataformas de desarrollo disponibles para programar el ESP32.

Puede optar  por Espruino (SDK de JavaScript y firmware que emula de cerca Node.js), Mongoose OS (un sistema operativo para dispositivos IoT recomendado por Espressif Systems y Google Cloud IoT), MicroPython (implementación de Python 3 para microcontroladores), un SDK proporcionado por Espressif, o una de las plataformas enumeradas en WiKiPedia.

Afortunadamente, la increíble comunidad de ESP32 recientemente llevó la selección del IDE un paso más allá al crear un complemento de Arduino.Si recién está comenzando con el ESP32, le recomendamos que comience con este entorno, que cubriremos en este tutorial. Para obtener más información, visite el repositorio de GitHub de ESP32 Arduino.

Instalación del núcleo ESP32 Arduino

El primer paso para instalar el núcleo ESP32 de Arduino es tener la última versión del IDE de Arduino (Arduino 1.8.5 o superior) instalada en su computadora. Si aún no lo has hecho, te recomendamos que lo hagas de inmediato.

Lo último de IDE Arduino

A continuación, inicie el IDE de Arduino y vaya a Archivo(File) > preferencias(preferences).

Complete el campo “ URL adicionales del administrador de placas ” con el link más abajo. Esto incluirá soporte para placas ESP32 y ESP8266.

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json

Luego, haga clic en el botón “Aceptar”(ok).

arduino ide esp32 json url

 

Ahora navegue hasta Herramientas > Tablero > Administrador de tableros…

Filtra tu búsqueda introduciendo “esp32” ̃. Busque ESP32 de Espressif Systems. Haga clic en esa entrada y, a continuación, elija Instalar.

arduino ide esp32 package

Después de la instalación, reinicie su IDE de Arduino y navegue hasta Tools > Board para asegurarse de que tiene placas ESP32 disponibles.

arduino ide boards manager esp32 option

Ahora selecciona tu placa en el  menú Herramientas > Placa (en nuestro caso, es ™la DOIT ESP32 DEVKIT V1). Si no está seguro de qué placa tiene, seleccione ESP32 Dev Module.

arduino ide boards manager esp32 boards

 

Finalmente, conecte la placa ESP32 a su computadora y seleccione el Puerto (si el puerto COM no aparece en su IDE de Arduino, deberá instalar los controladores VCP CP210x USB to UART Bridge):

arduino ide esp32 port selection

 

¡Eso es ™todo! Ahora puede comenzar a escribir código para su ESP32 en el IDE de Arduino.

Debes asegurarte de tener siempre instalada la versión más reciente del núcleo ESP32 Arduino.

Solo tienes que ir a Herramientas > Tablero > Administrador de Tableros, buscar ESP32 y verificar la versión que tienes instalada. Si hay una versión más reciente disponible, debe instalarla.ESP32

Bocetos de ejemplo

El núcleo ESP32 Arduino incluye varios bocetos de ejemplo. Para acceder a los bocetos de ejemplo, vaya a Archivo > Ejemplos > ESP32.

Verás una selección de bocetos de ejemplo. Puede elegir cualquiera de ellos para cargar el boceto en su IDE y comenzar a experimentar con él.

arduino ide esp32 package examples

 

Ejemplo básico: Parpadeo

 Para asegurarnos de que todo está configurado correctamente, subiremos ™el boceto más básico de todos: ¡Blink!

Esta prueba utiliza el LED de a bordo. Como se mencionó anteriormente en este tutorial, el pin D2 de la placa está conectado al LED azul integrado y es programable por el usuario.

int ledPin = 2; void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); delay(500); digitalWrite(ledPin, LOW); delay(500); }

Cuando se cargue el código, el LED comenzará a parpadear. Para que su ESP32 ejecute el boceto, es posible que deba presionar el botón EN.

ESP32 Development Board Blink Sketch Working Arduino IDE

Solución de problemas – Arranque de ESP32

Algunas placas ESP32 entran en modo intermitente automáticamente y el código se carga correctamente, mientras que otras no, y es posible que reciba el error “Se produjo un error fatal: No se pudo conectar a ESP32” Se agotó el tiempo de espera del encabezado del paquete:

Failed to connect to ESP32 Error while Uploading Sketch in Arduino IDE

Este es un problema común e indica que su ESP32 no está en modo de parpadeo o carga. Puede resolver este problema siguiendo los pasos que se describen a continuación.

  • Mantenga presionado el botón BOOT en su placa ESP32.
  • Presione el botón Cargar en el IDE de Arduino para cargar un nuevo boceto.
  • Suelte el botón BOOT cuando aparezca el mensaje Escritura a 0x00001000 (100%) en el registro del IDE de Arduino después de conectarse.
  • Ahora debería ver el mensaje “Terminado de cargar”.

 

Eso es ™todo. Ahora, presione el botón EN para reiniciar el ESP32 y ejecutar el boceto recién cargado.

¡Recordar! Tendrás que repetir esa secuencia de ™botones cada vez que quieras subir un nuevo boceto.

Eso es todo. Ahora, presione el botón EN para reiniciar el ESP32 y ejecutar el boceto recién cargado.

¡Recuerda! Deberás repetir esa secuencia de botones cada vez que quieras cargar un nuevo boceto.