iot.gripe

Pinout del ESP32 DevKit explicado: qué pin usar para cada cosa

21 de octubre de 2026 · 5 min de lectura · Steven Carvajal · Tutoriales

Código de este artículo en GitHub →

Contenido del artículo

El primer problema al usar un ESP32 es que sus pines no son todos iguales. Una placa Arduino UNO te deja usar casi cualquier pin; en el ESP32 algunos solo sirven de entrada, otros están conectados a la memoria flash y otros deciden cómo arranca la placa.

Esta guía explica el pinout de la ESP32-DevKitC V4 (la placa de 38 pines con módulo WROOM-32). Muchas placas genéricas de 30 pines usan el mismo chip y casi la misma distribución; comprueba los rótulos de la tuya antes de conectar nada. Para ver las especificaciones del chip, está la ficha del ESP32.

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

Cómo leer el diagrama

Cada pin tiene un nombre de la placa (IO23, VP, D2…) y un número de GPIO. En el código se usa siempre el número de GPIO: IO23 es 23; VP es GPIO36 y VN es GPIO39.

Resumen por tipo de pin

GrupoGPIOQué hacer
Uso general, seguros4, 13, 14, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33Úsalos como entrada o salida
Solo entrada34, 35, 36 (VP), 39 (VN)Sensores y botones; nunca salidas
Memoria flash6, 7, 8, 9, 10, 11No los uses jamás
Arranque (strapping)0, 2, 5, 12, 15Cuidado con lo que les conectas
Consola serie (UART0)1 (TX), 3 (RX)Déjalos libres para cargar y depurar

Pines solo de entrada: 34, 35, 36 y 39

Estos cuatro pines no pueden ser salidas y tampoco tienen resistencias internas de pull-up o pull-down. Sirven para leer sensores analógicos o pulsadores, pero con un botón necesitas una resistencia externa:

const int BOTON = 34;     // solo entrada: necesita resistencia externa

void setup() {
  Serial.begin(115200);
  pinMode(BOTON, INPUT);  // INPUT_PULLUP no funciona en este pin
}

void loop() {
  Serial.println(digitalRead(BOTON));
  delay(200);
}

Conecta el botón entre el pin y 3,3 V, con una resistencia de unos 10 kΩ del pin a GND.

Pines de la memoria flash: 6 a 11

Los pines marcados CLK, D0, D1, D2, D3 y CMD (GPIO6 a GPIO11) son los que usa el ESP32 para leer su propio programa de la flash. Si los usas, el chip se reinicia o se cuelga. Las placas de 30 pines a veces los exponen: ignóralos.

Pines de arranque: 0, 2, 5, 12 y 15

Al encender, el chip lee el nivel de estos pines para decidir cómo iniciar:

GPIOQué decideProblema típico
0Modo de descarga si está a nivel bajo (botón BOOT)Un sensor lo mantiene a nivel bajo y la placa no arranca
2Debe estar bajo o al aire para cargar un programaEl LED integrado suele estar aquí
5Temporización de SDIOPoco problemático, pero evítalo si puedes
12Voltaje de la flashCon nivel alto al arrancar, falla el inicio en módulos de 3,3 V
15Muestra u oculta el registro de arranqueUn relé aquí puede cambiar el comportamiento

Pueden usarse como GPIO normales una vez arrancado, pero no conectes cargas, módulos o resistencias fuertes que fuercen un nivel. Si el ESP32 no se deja programar, comprueba primero estos pines.

ADC1 frente a ADC2

El ESP32 tiene dos convertidores analógicos (ADC):

  • ADC1: GPIO32, 33, 34, 35, 36 y 39.
  • ADC2: GPIO0, 2, 4, 12, 13, 14, 15, 25, 26 y 27.

El ADC2 no funciona mientras el Wi-Fi está activo. Con Wi-Fi, lee sensores analógicos solo en los pines de ADC1. Es la causa de "mi sensor funcionaba y dejó de funcionar al agregar el Wi-Fi".

const int SENSOR = 34;   // ADC1_6: válido con Wi-Fi

void loop() {
  int lectura = analogRead(SENSOR);   // 0 a 4095
  Serial.println(lectura);
  delay(500);
}

DAC y táctiles

  • DAC (salida analógica real de 8 bits): GPIO25 y GPIO26.
  • Sensores táctiles: GPIO4, 0, 2, 15, 13, 12, 14, 27, 33 y 32 (TOUCH0 a TOUCH9). Detectan un dedo sin pulsador.

Pines por defecto de I2C, SPI y UART

El ESP32 puede asignar casi cualquier periférico a cualquier pin libre, así que estos son solo los valores por defecto del núcleo de Arduino:

BusSeñalGPIO
I2CSDA / SCL21 / 22
SPI (VSPI)SS / MOSI / MISO / SCK5 / 23 / 19 / 18
UART0TX / RX1 / 3
UART2TX / RX17 / 16

Si cambias de placa o de versión del núcleo, escribe los pines en el código: Wire.begin(21, 22);.

Límites eléctricos

  • Los GPIO son de 3,3 V; con 5 V puedes dañarlos. Usa un divisor de tensión o un conversor de nivel.
  • No pidas más de unos 20 mA por pin. Para relés y motores usa un transistor o un módulo con optoacoplador. Más en cómo alimentar un ESP32.
  • El pin 5V (VIN) sale del USB; no es una entrada de señal.

Lista de pines seguros

Para un proyecto con Wi-Fi:

  • Salidas digitales y relés: 13, 14, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27.
  • Entradas digitales con pull-up: los mismos pines.
  • Entradas analógicas: 32, 33, 34, 35, 36 y 39.
  • Pulsadores y sensores: 4, 13, 14, 27, 32 y 33.

Preguntas frecuentes

¿Cuántos pines puedo usar realmente?

Una DevKitC de 38 pines expone unos 25 GPIO útiles. Descontando los de flash y los solo entrada, quedan unos 20 para salidas.

¿Por qué mi placa no arranca con algo conectado?

Casi siempre es un pin de arranque (0, 2, 5, 12 o 15) forzado por un módulo. Desconecta el módulo y reinicia.

¿Qué diferencia hay con el pinout del ESP32-S3?

El S3 tiene más GPIO, USB nativo y otros pines de arranque. Está explicado en pines del ESP32-S3.

ESP32 DevKitC WROOM-32

La placa de 38 pines de este diagrama.

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

Steven Carvajal

Escrito por

Steven Carvajal

Ingeniero de software y arquitecto de soluciones en Cali, Colombia. Explico en español cómo diseñar, desplegar y operar proyectos con ESP32, AWS y Java, con ejemplos que puedes probar.

LinkedInGitHubdev.to

Placas de este artículo

Sigue leyendo

Guía completa de esp32 y firmware: Qué es el ESP32: modelos, usos y cómo elegir el tuyo