Cloud, DevOps e IoT en español

Pines del ESP32-S3: cuáles usar, cuáles evitar y por qué

20 de octubre de 2026 · Steven Carvajal · Tutoriales

Código de este artículo en GitHub →

El ESP32-S3 tiene 45 GPIO, pero no todos se pueden usar igual. Algunos deciden cómo arranca la placa, otros son el USB, y los de la memoria PSRAM quedan ocupados según la variante. Elegir mal un pin da síntomas confusos: la placa no arranca, el USB deja de responder o una lectura analógica falla solo cuando enciendes el Wi-Fi.

Esta guía usa la placa ESP32-S3-DevKitC-1 v1.1 como referencia. Si tu placa es de otro fabricante, el chip es el mismo, pero el orden y los rótulos pueden cambiar: compáralo con su esquema. Para ver todas las especificaciones del chip, está la ficha del ESP32-S3.

Diagrama de pines de la placa ESP32-S3-DevKitC-1 con las funciones de cada GPIO

Resumen rápido

GrupoGPIOQué hacer
Seguros para uso general1, 2, 4–18, 21, 38–42, 47, 48Úsalos con calma; revisa los matices de abajo
Arranque (strapping)0, 3, 45, 46Evítalos o cuida su nivel al encender
USB nativo19 (D−), 20 (D+)No los uses si necesitas el conector USB
Consola serie (UART0)43 (TX), 44 (RX)Déjalos libres para depurar
PSRAM octal35, 36, 37Ocupados en módulos N8R8 y N16R8
Memoria flash interna26–32No existen en la placa: son de la flash

Los pines de arranque: 0, 3, 45 y 46

Al encender, el chip lee el nivel de estos pines y decide cómo iniciar:

Puedes usarlos como GPIO normales después del arranque, pero si algo externo los fuerza a un nivel equivocado en el momento del encendido, la placa no inicia o arranca en un modo raro. Un sensor o un relé con resistencia de pull-up o pull-down en estos pines es la causa típica de "funciona al conectar el USB pero no al encenderlo solo".

Regla práctica: si tienes pines libres de sobra, no uses estos cuatro.

USB nativo: GPIO19 y GPIO20

El ESP32-S3 tiene USB integrado en el chip. Los pines GPIO19 (D−) y GPIO20 (D+) van al conector marcado USB de la placa. Si los configuras como entrada o salida, pierdes el USB nativo: no podrás cargar programas por ese conector ni usar el puerto serie USB (CDC) hasta reiniciar con otro código.

Si ves que el ESP32 no aparece en el puerto USB justo después de usar GPIO19 o GPIO20, esa es la causa más probable.

La placa tiene dos conectores: el de UART (convertidor USB-serie, pasa por GPIO43 y GPIO44) y el de USB (nativo). Para cargar programas basta cualquiera de los dos.

PSRAM octal: GPIO35, 36 y 37

Las variantes con PSRAM octal (N8R8, N16R8: "R8" indica 8 MB de PSRAM) usan GPIO35, GPIO36 y GPIO37 para hablar con la memoria. En esos módulos no están disponibles. En una variante sin PSRAM octal (por ejemplo, N8 o N16 a secas) quedan libres, pero si quieres que tu código funcione en cualquier variante, no los uses.

Los GPIO26 a GPIO32 conectan la flash interna y no salen a la placa. Los GPIO33 y GPIO34 tampoco salen en la DevKitC-1.

ADC1 frente a ADC2

El ESP32-S3 tiene dos convertidores analógicos con 20 canales en total:

El Wi-Fi comparte hardware con ADC2. Con el Wi-Fi activo, una lectura en ADC2 puede fallar o devolver un error por timeout. Si tu proyecto usa Wi-Fi y lee un sensor analógico, conéctalo a un pin de ADC1 (GPIO1 a GPIO10).

const int PIN_SENSOR = 4;   // ADC1_3: seguro con Wi-Fi activo

void setup() {
  Serial.begin(115200);
  analogReadResolution(12);      // 0 a 4095
}

void loop() {
  int lectura = analogRead(PIN_SENSOR);
  Serial.println(lectura);
  delay(500);
}

Las lecturas del ADC del ESP32 no son perfectamente lineales. Si necesitas precisión, usa analogReadMilliVolts(), que aplica la calibración de fábrica.

Entradas táctiles

Los GPIO1 a GPIO14 pueden funcionar como sensores táctiles capacitivos (TOUCH1 a TOUCH14). Sirven para botones sin pulsador: basta un cable o una lámina de metal conectada al pin.

JTAG: GPIO39 a GPIO42

Los pines 39 a 42 (MTCK, MTDO, MTDI, MTMS) son la interfaz JTAG para depurar con hardware externo. Si no usas JTAG externo, son GPIO normales. El ESP32-S3 también trae depuración JTAG por el USB integrado, así que rara vez necesitas ocuparlos.

Pines por defecto de I2C, SPI y UART

Casi cualquier periférico puede asignarse a cualquier GPIO libre gracias a la matriz de pines del chip, así que los "pines por defecto" son solo una convención del núcleo de Arduino. En la DevKitC-1 son:

BusSeñalGPIO
I2CSDA / SCL8 / 9
SPISS / MOSI / SCK / MISO10 / 11 / 12 / 13
UART0TX / RX43 / 44

Estos valores vienen del archivo pins_arduino.h de la variante y pueden cambiar entre versiones del núcleo o entre placas. Si algo no responde, imprime SDA, SCL, MOSI y SCK en el Monitor Serie o fíjalos tú:

#include <Wire.h>

void setup() {
  Wire.begin(8, 9);   // SDA, SCL explícitos
}

Fijar los pines en el código evita sorpresas al cambiar de placa.

El LED integrado

La DevKitC-1 trae un LED RGB direccionable (tipo WS2812), no un LED simple. Está en GPIO38 en la versión 1.1 y en GPIO48 en la 1.0. Se maneja con neopixelWrite:

void setup() {}

void loop() {
  neopixelWrite(RGB_BUILTIN, 0, 20, 0);   // verde tenue
  delay(500);
  neopixelWrite(RGB_BUILTIN, 0, 0, 0);    // apagado
  delay(500);
}

RGB_BUILTIN apunta al pin correcto en tu versión de la placa. Si prefieres no depender de él, ese pin cuenta como ocupado en tu lista.

Límites eléctricos

Lista de pines seguros

Para un proyecto con Wi-Fi, sin PSRAM octal y sin USB nativo:

Y cuando algo falle sin razón aparente, revisa en este orden: pines de arranque, USB, PSRAM, ADC2 con Wi-Fi.

Preguntas frecuentes

¿Cuántos pines puedo usar realmente en una DevKitC-1?

Unos 36 GPIO llegan a los conectores. Con PSRAM octal bajan a 33, y si reservas los de arranque y la consola serie, quedan en torno a 25 para uso cómodo.

¿Puedo usar GPIO19 y GPIO20 como pines normales?

Sí, pero pierdes el USB nativo. Mantén a mano el conector UART para volver a cargar un programa si algo sale mal.

¿Por qué mi sensor analógico deja de funcionar al conectarme al Wi-Fi?

Probablemente está en un pin de ADC2 (GPIO11 a GPIO20). Muévelo a un pin de ADC1 (GPIO1 a GPIO10).

¿En qué se diferencian los pines del ESP32-S3 y del ESP32-C3?

El C3 tiene solo 22 GPIO, un único ADC útil con Wi-Fi y sin USB en la mayoría de placas pequeñas. Para elegir entre ambos, lee ESP32-S3 vs ESP32-C3.

ESP32-S3 DevKitC-1 N16R8

16 MB de flash y 8 MB de PSRAM; recuerda que ocupa GPIO35 a GPIO37.

Enlace de afiliado: si compras, el sitio recibe una comisión sin costo extra para ti.

Placas de este artículo

Sigue leyendo

Guía completa de esp32 y firmware: Qué es el ESP32 y por qué domina los proyectos IoT: guía para elegir y empezar