El ESP32-S3 es el sucesor natural como buque insignia de la familia ESP32 de Espressif.
El primer paso antes de poder usarlo debe ser familiarizarnos con sus características, y funcionalidades.
Así que, de igual forma que hicimos en esta entrada con el modelo ESP32 tradicional (sin versión), en esta entrada vamos a repasar los puntos principales de su características y hardware.
Así que empezamos con la tabla de características técnicas del ESP32-S3-
Feature | ESP32-S3 Series |
---|---|
Launch year | 2020 |
Core | Xtensa® dual-core 32-bit LX7 |
Wi-Fi protocols | 802.11 b/g/n, 2.4 GHz |
Bluetooth® | Bluetooth 5.0 |
Typical frequency | 240 MHz |
SRAM | 512 KB |
ROM | 384 KB |
External flash | Up to 1 GB device |
External RAM | Up to 1 GB device |
GPIO | 45 |
ADC | 2x 12-bit SAR ADCs |
DAC | ✖️ |
Timers | 4x 54-bit, 3x watchdog |
Temperature sensor | 1 |
SPI | 4 |
LCD interface | 1 |
UART | 3 |
I2C | 2 |
I2S | 2 |
LED PWM | 8 |
Pulse counter | 4 |
Touch sensor | 14 |
Hall sensor | ✖️ |
Camera interface | 1 |
Si estáis usando un ESP32-S3, tenéis un resumen similar en esta entrada Qué pines puedo usar en un ESP32-S3
Pinout del ESP32
Ahora vamos a ver el esquema de patillaje (pinout) del ESP32 del aplaca de desarrollo oficial del ESP32-S3.
Ten en cuenta que estas son las características de esta placa en concreto. La que tengáis en vuestro dispositivo dependerá del SoM y la placa de desarrollo que estemos usando.
Si tenéis dudas sobre que es un SoC, un SoM y una placa de desarrollo, consultad esta entrada Qué es un SoC y un SoM
Como siempre, ante cualquier duda sobre vuestra placa lo mejor es que consultéis la documentación oficial de Espressif y, sobre todo, la información del fabricante del dispositivo.
Aquí os dejo el enlace a la documentación oficial de Espressif sobre la placa Esp32-S3 DevKitc 1.
ESP32-S3-DevKitC-1 v1.1 - ESP32-S3 - — ESP-IDF Programming Guide latest documentation
Multiplexación
La multiplexación de pines es una de las características más importantes y útiles del ESP32.
Básicamente, en el ESP32 podemos resignar la mayoría de las funciones de los GPIO para que actúen en cualquier pin, sin apenas afectar al rendimiento.
Por lo que, los valores que vamos a ver son los valores por defectos, pero generalmente podrás cambiarlo por otros, según te convenga.
El RTC
El RTC (Real Time Clock) ocupa un lugar fundamental durante los modos de Sleep. El RTC se compone de las siguientes partes:
- RTC controlador (que incluye timers y periféricos IO)
- RTC memoria (fast y slow)
- Ultra Low Power (ULP) coprocessor
El ESP32 cuenta con 8 kB de SRAM en la parte RTC, llamada memoria RTC rápida. Los datos guardados aquí no se borran durante el modo de sueño profundo (deep sleep).
Además hay otros 8kB de SRAM llamados slow memory, que se usan para el procesador ULP.
Pines digitales
Pines GPIO
El ESP32-S3 tiene hasta 45 pines GPIO que pueden asignarse a diferentes funciones mediante la programación.
La mayoría de estos GPIO digitales se pueden configurar con resistencias internas de pull-up o pull-down.
Pines de Configuración (Strapping) del ESP32-S3
El chip ESP32 cuenta con los siguientes pines de (strapping) configuración:
- GPIO 0
- GPIO 45
- GPIO 46
Estos pines intervienen en la configuración durante el arranque. Así que evita usarlos en tu proyecto.
Más información en este artículo
Pines GPIO de Entrada Únicamente
Estos pines no pueden emplearse como salidas, pero se pueden utilizar como entradas digitales o analógicas, o para otros propósitos.
- GPIO 46
Además, a diferencia de los otros pines GPIO, carecen de resistencias internas de pull-up y pull-down.
Pines de Interrupción del ESP32-S3
Todos los pines GPIO se pueden configurar como interrupciones.
Más información en este artículo
Pines GPIO RTC del ESP32-S3
Algunos GPIO están conectados al subsistema de bajo consumo RTC y se conocen como GPIO RTC
- RTC_GPIO0 - GPIO0
- RTC_GPIO1 - GPIO1
- RTC_GPIO2 - GPIO2
- RTC_GPIO3 - GPIO3
- RTC_GPIO4 - GPIO4
- RTC_GPIO5 - GPIO5
- RTC_GPIO6 - GPIO6
- RTC_GPIO7 - GPIO7
- RTC_GPIO8 - GPIO8
- RTC_GPIO9 - GPIO9
- RTC_GPIO10 - GPIO10
- RTC_GPIO11 - GPIO11
- RTC_GPIO12 - GPIO12
- RTC_GPIO13 - GPIO13
- RTC_GPIO14 - GPIO14
- RTC_GPIO15 - GPIO15
- RTC_GPIO16 - GPIO16
- RTC_GPIO17 - GPIO17
- RTC_GPIO18 - GPIO18
- RTC_GPIO19 - GPIO19
- RTC_GPIO20 - GPIO20
- RTC_GPIO21 - GPIO21
Estos pines se utilizan para despertar el ESP32-S3 del modo de bajo consumo profundo cuando el coprocesador de ultra bajo consumo (ULP) está en funcionamiento.
Más información en esta entrada:
Pines de táctiles (Touch) del ESP32-S3
El ESP32-S3 cuenta con 14 pines GPIO capacitivos de detección táctil.
- TOUCH1 - GPIO 1
- TOUCH2 - GPIO 2
- TOUCH3 - GPIO 3
- TOUCH4 - GPIO 4
- TOUCH5 - GPIO 5
- TOUCH6 - GPIO 6
- TOUCH7 - GPIO 7
- TOUCH8 - GPIO 8
- TOUCH9 - GPIO 9
- TOUCH10 - GPIO 10
- TOUCH11 - GPIO 11
- TOUCH12 - GPIO 12
- TOUCH13 - GPIO 13
- TOUCH14 - GPIO 14
Cuando una carga capacitiva (como un dedo humano) está cerca del pin GPIO, el ESP32-S3 detecta el cambio en la capacitancia.
Más información en este artículo
Pin Enable (EN)
Enable (EN) es el pin que controla el regulador de 3V3. Está configurado con una resistencia pull-up, por lo que se conecta a tierra para desactivar el regulador de 3.3V. Por ejemplo, para reiniciar el ESP32.
Pines analógicos
Pines PWM del ESP32-S3
La placa ESP32-S3 tiene 8 canales PWM (todos los pines GPIO excepto los pines de entrada únicamente) controlados por un controlador PWM.
La salida PWM se puede utilizar para controlar motores y LEDs digitales.
Más información en este artículo
Pines ADC del ESP32-S3
El ESP32 integra dos ADC y admite mediciones en 20 canales
- ADC1_CH0 - GPIO 1
- ADC1_CH1 - GPIO 2
- ADC1_CH2 - GPIO 3
- ADC1_CH3 - GPIO 4
- ADC1_CH4 - GPIO 5
- ADC1_CH5 - GPIO 6
- ADC1_CH6 - GPIO 7
- ADC1_CH7 - GPIO 8
- ADC1_CH8 - GPIO 9
- ADC1_CH9 - GPIO 10
- ADC2_CH0 - GPIO 11
- ADC2_CH1 - GPIO 12
- ADC2_CH2 - GPIO 13
- ADC2_CH3 - GPIO 14
- ADC2_CH4 - GPIO 15
- ADC2_CH5 - GPIO 16
- ADC2_CH6 - GPIO 17
- ADC2_CH7 - GPIO 18
- ADC2_CH8 - GPIO 19
- ADC2_CH9 - GPIO 20
Los ADC son de 12 bits, por lo que disponemos de 4096 (2^12) niveles discretos, lo que se traduce en una precisión de 0.8mV.
Más información en este artículo
Pines DAC del ESP32-S3
El ESP32-S3 no incluye un DAC.
Pines de comunicación
Pines UART del ESP32-S3
La placa de desarrollo ESP32-S3 tiene tres interfaces UART: UART0, UART1 y UART2, que admiten comunicación asíncrona (RS232 y RS485) e IrDA de hasta 5 Mbps.
Los pines UART0 están conectados al convertidor USB a serie y se utilizan para la programación y depuración.no se recomienda utilizar los pines UART0.
Por otro lado, el UART están reservados para el chip de memoria FLASH integrado. Los pines UART1 están reservados para el chip de memoria flash integrado.
Por lo que lo mejor es usar el UART2 es una opción segura para conectar dispositivos UART.
Más información en este artículo
Pines I2C del ESP32-S3
El ESP32-S3 dispone de un bus I2C único que permite conectar hasta 112 sensores y periféricos. Los pines SDA y SCL están asignados por defecto a los siguientes pines.
- SDA - GPIO 8
- SCL - GPIO 9
Sin embargo, es posible utilizar cualquier pin GPIO para implementar el protocolo I2C mediante el comando wire.begin(SDA, SCL).
Más información en este artículo
Pines SPI del ESP32-S3
El ESP32 cuenta con cuatro interfaces SPI0, SPI1, SPI2, y SPI3. El SPI0 se usa para conectar con la memoria FLASH, y el SPI1 para PSRAM (si la placa la tiene). Así que lo mejor es centrarse en el SPI2 y SPI3.
SPI | MOSI | MISO | CLK | CS |
---|---|---|---|---|
SPI2 | GPIO 35 | GPIO 37 | GPIO 36 | GPIO 39 |
SPI3 | GPIO 11 | GPIO 13 | GPIO 12 | GPIO 10 |
Más información en este artículo
SPI FLASH
Estos pines están conectados a la memoria flash SPI integrada en el chip ESP32-S3. No utilices estos pines en tus proyectos.
- GPIO 26
- GPIO 27
- GPIO 28
- GPIO 29
- GPIO 30
- GPIO 31
- GPIO 32