ESP32

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 12

El ESP32-WROOM-32 es un potente módulo que integra WiFi y

Bluetooth, ideal para desarrollar productos de IoT. La integración de


Bluetooth, Bluetooth LE y Wi-Fi permite una amplia gama de
aplicaciones, el uso de WiFi permite una comunicación de mediano alcance y
conectarse a una red LAN y a través de un Modem Router conexión a Internet,
mientras que el Bluetooth nos permite conectarse directamente a otro dispositivo
como un celular.

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.

El módulo ESP-WROOM-32 trabaja a 3.3V en alimentación y GPIO por lo que NO se debe


alimentar con 5V. Se recomienda colocar un capacitor de 100uF en paralelo con la fuente
de alimentación para filtrar los picos de corriente. Los pines de entradas/salidas (GPIO)
trabajan a 3.3V por lo que para la conexión a sistemas de 5V es necesario utilizar conversores
de nivel como: Conversor de nivel 3.3-5V 4CH o Conversor de nivel bidirecional 8CH -
TXS0108E.

El SoC(System On a Chip) ESP32 de Espressif Systems es la evolución del ESP8266, diseñado


para superar a su antecesor en capacidad de procesamiento y conectividad, integra un
potente microcontrolador con arquitectura de 32 bits, conectividad Wi-Fi y Bluetooth. El
SoM(System on Module) ESP-WROOM-32 fabricado por Espressif integra en un módulo el SoC
ESP32, memoria FLASH, cristal oscilador y antena WiFi en PCB.

La plataforma ESP32 permite el desarrollo de aplicaciones en diferentes lenguajes de


programación, frameworks, librerías y recursos diversos. Los más comunes a elegir son:
Arduino(en lenguaje C++), Esp-idf(Espressif IoT Development Framework) desarrollado por el
fabricante del chip, Simba Embedded Programming Platform(en lenguaje Python), RTOS's
(como Zephyr Project, Mongoose OS, NuttX RTOS), MicroPython, LUA, Javascript (Espruino,
Duktape, Mongoose JS), Basic.

Al trabajar dentro del entorno Arduino podremos utilizar un lenguaje de programación


conocido y hacer uso de un IDE sencillo de utilizar, ademas de hacer uso de toda la
información sobre proyectos y librerías disponibles en internet. La comunidad de usuarios de
Arduino es muy activa y da soporte a plataformas como el ESP32 y ESP8266. Dentro de las
principales placas de desarrollo o módulos basados en el ESP32 tenemos: ESP32-WROOM-
32, NodeMCU-32 ESP32 y ESP32-CAM y de la familia ESP8266 tenemos: ESP-01, ESP-
12E, Wemos D1 mini y NodeMCU v2.

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.

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 /
HT20 HT40
n)

Bluetooth No posee Bluetooth 4.2 y BLE

Frecuencia típica de
80 MHz 160 MHz
operación

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
CARACTERÍSTICAS ESP8266 ESP32

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
No Sí
Ethernet

Sensor de tacto No Sí

Sensor de
No Sí (solo las versiones antiguas)
temperatura

Sensor de efecto hall No Sí

Temperatura de
-40ºC to 125ºC -40ºC to 125ºC
trabajo

En la siguiente imagen, tomada de la hoja de datos, se muestran todos los bloques


funcionales que conforman un SoC ESP32.
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

Pines I2C ESP32

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:

 AES (FIPS PUB 197)

 SHA (FIPS PUB 180-4)

 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

 Factor de forma Arduino UNO para usar con Arduino Shields


 Este es un dispositivo de 3.3V. Voltaje de entrada 5 a 12V

Característica de Wemos D1 ESP32 R32 WROOM-32 WiFi y Bluetooth :


 Alimentación: 5-12VDC
 WiFi 802.11 b/g/n/e/i (802.11n hasta 150 Mbps)
 Bluetooth v4.2 BR/EDR y BLE.
 Compatible con shields de Arduino Uno.
 6 Entrada analógica.
 20 Entradas/Salidas digitales (3.3V) (con funciones PWM, interrupción).
 Comunicación UART, SPI, I2C.
 Tamaño: 68Ã--53 mm
 Conexión micro USB.
 4Mb Flash Memoria 520Kb
 Reloj: 240Mhz (un núcleo dedicado al procesaro WiFi)
 Temperatura: -40C+85C
 Corriente: 250mA (max)
 Corriente en modo ahorro: 0.15mA
 Corriente de funcionamiento: 20mA (sin 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:

0. Componentes para la conexión de la placa WeMos D1 ESP32 R32


Para este tutorial ten solo necesitaremos la propia placa y el cable USB para su conexión.
 Módulo WeMos D1 ESP32 R32
 Cable microUSB
Esta placa tiene el tamaño estándar de la Arduino
UNO, con las funcionalidades del procesador ESP32
con WiFi y Bluetooth (BLE), por lo que es compatible
con los shields para UNO.

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.

2. Códigos de ejemplo para la placa WeMos D1 ESP32 WROOM WiFi

Hola Mundo!

a) Crea un nuevo sketch en blanco, y pega el siguiente código:


void setup() {
Serial.begin(112500);
pinMode(2, OUTPUT);
vTaskDelay(1000 / portTICK_PERIOD_MS);
xTaskCreate(task1,"task1", 2048, NULL,1,NULL);
xTaskCreate(task2,"task2", 2048, NULL,1,NULL);
}
void loop() {
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
void task1( void * parameter )
{
while(1) {
Serial.println("Hello World!");
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
void task2( void * parameter)
{
while(1) {
digitalWrite(2, HIGH);
vTaskDelay(500 / portTICK_PERIOD_MS);
digitalWrite(2, LOW);
vTaskDelay(500 / portTICK_PERIOD_MS);
}
}
b) Guarda el proyecto y súbelo.
c) Abre un programa de terminal como PuTTY o el Monitor Serial desde la pestaña herramientas, y
verás que se imprime por pantalla el mensaje "Hello World!" cada segundo, y el LED de la
placa parpadea 500ms.

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.

También podría gustarte