ESP32
ESP32
ESP32
La corriente de reposo del chip ESP32 es inferior a 5 μA, por lo que es adecuado para
aplicaciones de electrónica portátiles con batería. En el núcleo de este módulo está el SoC
ESP32-D0WDQ6. El chip integrado está diseñado para ser escalable y adaptado. Hay dos
núcleos de CPU que se pueden controlar individualmente, y la frecuencia del reloj es ajustable
de 80 MHz a 240 MHz. El usuario también puede apagar el CPU y utilizar el co-procesador de
baja potencia para supervisar constantemente los periféricos para detectar cambios de
estado. ESP32 integra un amplio conjunto de periféricos como sensores táctiles capacitivos,
sensores Hall, amplificadores de bajo nivel de ruido, interfaz para SD, Ethernet, SPI, UART, I2S
e I2C. Para flasher el chip es necesario utilizar un modulo conversor usb a serial TTL como
el Módulo CP2102.
ESPECIFICACIONES TÉCNICAS
Voltaje de Alimentación: 3.3V DC (2.7~ 3.6V)
Voltaje lógico entradas/salidas (GPIO): 3.3V
Corriente de Operación: ~80mA (fuente superior a 500mA)
SoM: ESP-WROOM-32
SoC: ESP32 (ESP32-D0WDQ6)
CPU: Dual core Tensilica Xtensa LX6 (32 bit)
Frecuencia de Reloj: 240MHz
Memoria SRAM: 520KB
Memoria FLASH Externa: 4MB
Pines Digitales GPIO: 34 (incluyendo todos los periféricos)
UART: 2
SPI: 3
I2C: 2
Capacitive touch sensors: 10
Interfaz SD
Timers: 3 (16-bit)
PWM Led: 16 canales independientes (16-bits)
ADC: 2 (12-bit)
DAC: 2 (8-bit)
Wi-Fi, Protocolo 802.11 b/g/n/e/i (802.11n up to 150 Mbps)
Wi-Fi, certificación RF: FCC/CE/IC/TELEC/KCC/SRRC/NCC
Wi-Fi, rango de Frecuencia: 2.4 ~ 2.5 GHz
Wi-Fi mode Station/SoftAP/SoftAP+Station/P2P
Wi-Fi Security WPA/WPA2/WPA2-Enterprise/WPS
Network protocols IPv4, IPv6, SSL, TCP/UDP/HTTP/FTP/MQTT
Bluetooth, Protocolos: V4.2 BR/EDR and BLE specification
Bluetooth, Radios: NZIF receiver with -97 dBm sensitivity, Class-1, class-2 and class-3
transmitter, AFH
Bluetooth, Audio: CVSD and SBC
Stack de Protocolo TCP/IP integrado en hardware
Dimensiones: 18*25.5*3.1 mm
Peso: 3 gramos
LINKS
Datasheet ESP-WROOM-32
Datasheet ESP32
Web Espressif: ESP32
Wiki: ESP32
Pinout ESP-WROOM-32
Dibujo mecánico ESP-WROOM-32
Comparativa entre ESP8266 y ESP32
Uso del ESP32 con IDE arduino (sparkfun)
Uso del ESP32 con IDE arduino (instructables)
Como usar el pin IO0 para seleccionar el modo programación
Tutorial: Programar ESP-WROOM-32 + Adaptador con conversor USB-SERIAL
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.
Microprocesador Xtensa Single-core 32-bit L106 Xtensa Dual-Core 32-bit LX6 con 600 DMIPS
Wi-Fi (802.11 b / g /
HT20 HT40
n)
Frecuencia típica de
80 MHz 160 MHz
operación
GPIO 17 34
SPI 2 4
CARACTERÍSTICAS ESP8266 ESP32
I2C 1 2
I2S 2 2
UART 2 2
CAN No Sí
Interfaz MAC
No Sí
Ethernet
Sensor de tacto No Sí
Sensor de
No Sí (solo las versiones antiguas)
temperatura
Temperatura de
-40ºC to 125ºC -40ºC to 125ºC
trabajo
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.
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.
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:
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.
UART0
UART1
UART2
Todos estos son compatibles con los protocolos RS-232, RS-485 e IrDA.
Los ESP32 cuentan con dos interfaces I2C o TWI que admiten los modos de operación maestro y esclavo. Entre
sus características destacan:
GPIO21 SDA
GPIO22 SCL
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).
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:
RSA
ETC
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.
WEMOS D1 R32 (basado en ESP32 pero con factor de forma y compatibilidad con shields de Arduino Uno)
Wemos D1 es una placa de desarrollo de procesador ESP32 con WiFi y Bluetooth (BLE) compatible con
shields de Arduino Uno. Es mucho más rápido que el procesador ESP8266 (NodeMCU y similares) y
también mucho más barato que Arduino WiFi
En la siguiente guía, conectaremos la placa de desarrollo WeMos D1 R32 basada en ESP32 para usarla
mediante el Arduino IDE de una forma sencilla:
Su Pinout es el siguiente:
1. Preparación de Arduino IDE para módulo ESP32
El módulo WeMos ESP32 se puede programar fácilmente en el entorno Arduino IDE. Para hacer esto,
necesita cargar el paquete de mosaicos apropiado.
a)Para cargar placas ESP32, abra el IDE de Arduino, luego vaya a la sección Archivo -> Preferencias y
pegue el enlace en el campo URL adicionales en el administrador de la placa :
https://dl.espressif.com/dl/package_esp32_index.json
y presione el botón OK.
b) El siguiente paso es instalar las placas ESP32. Vaya a Herramientas -> Placa: -> Gestor de tarjetas...
e ingrese "ESP32" en el campo y presione el botón Instalar.
c) Una vez que esté todo hecho, ve a Herramientas -> Placa -> Administrador de Placas, y luego
selecciona "ESP32 Dev Module". También se puede seleccionar: DOIT ESP32 DEVKIT V1
d) una vez instaladas las librerías y seleccionada la placa, hay que seleccionar el puerto COM
correspondiente. PAra ello puedes abrir el Administrador de Dispositivos y ver en que puerto COM
está nuestra placa con el CH340.
Hola Mundo!
WiFi Scan
En este ejemplo vamos a buscar las redes WiFi disponibles con nuestra placa.
a) Para ello lo primero es instalar las librerías necesarias si no las tenemos ya. Descarga el ZIP desde
este enlace:
https://github.com/espressif/arduino-esp32
b) Puedes instalarlo directamente desde el Arduino IDE en la pestaña Programa > Incluir librería >
Añadir bilioteca .ZIP. O tmabién puedes descomprimir la carpeta dentro del directorio donde estén las
librerías de Arduino. Después de esto último se recomienda reiniciar el Arduino IDE o al menos abrir el
gestor de liberias para que se actualice el estado.
c) Ahora iremos a Archivo > Ejemplos > Wifi > WifiScan
d) Tendremos el siguiente código, que compilamos y subimos.
e) Ahora abrimos el Monitor Serial o el Terminal que queramos (configurando los baudios por igual) y
veremos las redes WiFi disponibles.
Estos son ejemplos básicos de uso de esta placa, podemos ver muchos más en los ejemplos de la
librería que hemos descargado.