Blog
Pinout de GPIO del ESP32: ¿Qué Pines Son Seguros, Arriesgados o Prohibidos
La mayoría de los diagramas de pines del ESP32 son peligrosamente incompleto.
Ellos orgullosamente enumeran más de 30 GPIOs, pero omite las limitaciones que en realidad deciden si un producto funciona solo en el banco de pruebas o sobrevive en el campo: comportamiento de arranque, conflictos del bus SPI flash, acoplamiento de ruido ADC y limitaciones de pines de solo entrada.
Estas omisiones no causan fallos evidentes, sino fallos silenciosos: placas que se programan bien, arrancan de forma inconsistente, varían con la temperatura o fallan meses después de su despliegue.
Tras solucionar problemas en sistemas basados en ESP32 en instalaciones solares al aire libre, controladores industriales y despliegues de IoT de larga duración, una lección queda clara:
La robustez vive en los detalles de los pines.
Esta guía elimina el ruido de las hojas de datos y los diagramas de pines genéricos para ofrecer un clasificación de pines probada en campo — qué es seguro, qué es arriesgado y qué nunca se debe usar en una PCB de producción.
Esto no es una referencia para memorizar.
Es una guía de decisiones prácticas para ingenieros que se preocupan por la fiabilidad del arranque, la integridad de la señal y la estabilidad a largo plazo.
Sin teoría. Sin suposiciones solo de laboratorio.
Solo una perspectiva de ingeniería que puedes aplicar antes de enrutar tu próxima placa.
Por qué los diagramas de pines del ESP32 mienten
Pines de correaje (GPIO0, GPIO2, GPIO4, GPIO12, GPIO15)
Estos pines definen el configuración de arranque al encender.
Si son llevados a un nivel lógico incorrecto —incluso brevemente— el chip puede entrar en modo de descarga o fallar al iniciar por completo.
Los patrones de fallo comunes incluyen:
- GPIO0 mantenido bajo → arranca en modo de descarga UART
- GPIO2 flotante → fallo de arranque en ciertos modos de flash
- GPIO15 controlado incorrectamente → reconfiguración incorrecta del arranque SPI, lo que puede deshabilitar PSRAM o impedir el inicio normal en módulos WROVER
Estas fallas son a menudo intermitentes, lo que los hace especialmente difíciles de diagnosticar.
Fallo en el mundo real:
Un nodo sensor alimentado por batería se negó a despertar del modo de suspensión profunda.
La causa raíz fue GPIO15 conectado a un monitor LiPo, que sacó el pin alto durante el encendido y alteró la configuración de arranque.
Corregir:
Uso Resistencias pull-up de ≥10 kΩ en todos los pasadores de sujeción, y nunca los accione activamente durante el reinicio o el encendido.
Pines del bus Flash / SRAM (GPIO6–11)
En todos los módulos ESP32 —incluidos WROOM y WROVER— GPIO6 a GPIO11 están permanentemente conectados a la interfaz SPI flash.
Usar estos pines para E/S de propósito general hará acceso a flash corrupto, lo que lleva a fallos aleatorios o un dispositivo inutilizado.
Incluso si el firmware parece funcionar en un prototipo, diferencias de disposición y variación del tiempo de la señal casi garantizar el fracaso en producción.
Regla:
GPIO6–11 no son GPIO. Trátelos como intocables.
Pines de solo entrada (GPIO34–39)
Estos pernos Falta de drivers de salida y resistencias pull-up/pull-down internas.
Llamando
pinMode(34, INPUT_PULLUP)
compila exitosamente — pero no tiene ningún efecto.
Consecuencia
Las entradas flotan en hardware real, lo que lleva a fallos silenciosos en el campo, como botones que “nunca disparar”o sensores que se comportan de forma aleatoria.
Siempre proporciona resistencias de pull-up externas al usar los GPIO34–39.
Clasificación Práctica de Pines de ESP32 (Probado en Campo)
Pines de propósito general relativamente seguros
| Pines | Casos de uso típicos | Notas de Riesgo |
|---|---|---|
| 4, 5, 16–19, 21–23, 25–27, 32–33 | LEDs, relés, I²C, SPI, PWM | Estable durante reinicio y arranque; interacción mínima de arranque |
Estos pines son no sujetador de pasadores y no interfieran con la configuración de flash o de arranque, haciéndolos los primera opción para E/S general.
Usar con precaución
| Pines | Casos de uso típicos | Notas de Riesgo |
|---|---|---|
| 0, 2, 12, 13, 14, 15 | Botones, LEDs de estado, SPI secundario | Pines sensibles al arranque o multifuncionales |
Consideraciones clave:
- GPIO0, GPIO2, GPIO12, GPIO15 son pines de strapping → Deben estar en niveles lógicos seguros durante el reinicio.
- GPIO12 puede interrumpir el arranque de la flash si se pone a un nivel alto
- GPIO15 puede afectar la configuración de PSRAM / SPI en los módulos WROVER
- GPIO13 / 14 se reutilizan a menudo para señales SPI
Mejor práctica:
Añadir Resistores en serie ≥1 kΩ o asegure estos pines permanecer flotando / a prueba de arranque al encender.
Evitar E/S generales
| Pines | Razón |
|---|---|
| 1, 3 | Se utiliza para UART0 (programación / registros) |
| 6–11 | Conectado por cable al bus SPI flash |
| 34–39 | Solo entrada, sin resistencias de pull-up ni pull-down internas |
Regla general:
Si un pasador está atado a flash, arranque, o UART, es no de propósito general, sin importar lo que muestre el diagrama de pines.

Figura 1: ESP32 DevKit V1 – Zonas de Riesgo Codificadas por Color
Los 3 errores más comunes de los principiantes (y cómo solucionarlos)
Utilizando GPIO0 como salida de LED
¿Qué sucede?
Si el cátodo del LED está conectado a GND, GPIO0 se pone a bajo al arrancar, lo que hace que el ESP32 entre en modo de descarga y el boceto nunca se ejecute.
Caso real:
Índice de fallos del 28% en un lote de proyectos de estudiantes.
Corregir:
Usa GPIO2 en su lugar, pero añade una resistencia en serie de 1 kΩ para limitar la corriente al arrancar.
I²C en GPIO2/4 en lugar de 21/22
Por qué falla:
GPIO2 se usa para la coexistencia de Wi-Fi/BLE; GPIO4 es un pin de strapping. El ruido puede acoplarse al bus I²C, causando NACKs.
Datos:
Tasa de error I²C: 3,21 TP3T en GPIO21/22 frente a 22,71 TP3T en GPIO2/4 (10 000 transacciones, 25 °C).
Corregir:
Utiliza GPIO21 (SDA) / GPIO22 (SCL) – optimizado para bajo ruido.
analogRead() en GPIO36 con Wi-Fi Habilitado
¿Qué sucede?
GPIO36 (VP) comparte el ADC con la circuitería de RF. Con Wi-Fi encendido, el ruido salta >250 mV de pico a pico.
Prueba de osciloscopio:
La Fig. 2 muestra ruido de 410 mVpp en GPIO36 frente a 42 mVpp en GPIO34 (Wi-Fi apagado).
Corregir:
Muestra durante el sueño de Wi-Fi: WiFi.mode(WIFI_OFF) durante la lectura
O promedio de 100 muestras con filtro de mediana

Figura 2: Ruido ADC en GPIO36 – Wi-Fi ENCENDIDO vs. APAGADO
Perspectivas profesionales: más allá de lo básico
Los pines táctiles no son iguales
El ESP32 tiene 10 pines de toque capacitivo (T0–T9 → GPIO4, 0, 2, 15, 13, 12, 14, 27, 33, 32). Sin embargo:
- T9 (GPIO32) puede fallar si se habilita PSRAM en módulos WROVER, debido a un conflicto en el bus compartido.
- T0 (GPIO4) es el más estable, con un acoplamiento de RF mínimo.
Recomendación:
Para producción, usa solo T0–T7 para una detección táctil confiable.
Compromiso entre resolución PWM y frecuencia
analogWrite() por defecto 8 bits (256 niveles) a 5 kHz, pero un control más suave a menudo requiere mayor resolución.
- Para atenuación de 12 bits (4096 niveles):
ledcSetup(0, 1000, 12); // Canal 0, 1 kHz, 12 bits
ledcAttachPin(5, 0);
ledcWrite(0, 2048); // Relación de ciclo 50:30Crítico
No exceda los 40 kHz en los canales de alta resolución; el desbordamiento del temporizador provoca fallos.
Trampas de corriente de sueño profundo
Incluso con esp_deep_sleep_start(), una mala gestión de los pines puede consumir mA:
- Pines flotantes → ~80 µA cada uno
- Periféricos que quedan encendidos (por ejemplo, sensores) → 2–10 mA
Corregir:
Antes de dormir:
gpio_pad_select_gpio(36);
gpio_pad_unselect_gpio(36); // Desactivar ADC en VP
digitalWrite(27, LOW);
pinMode(27, OUTPUT); // Controlar la alimentación de los sensores
Propina:
Todos los pines no utilizados deben conectarse a tierra o configurarse como salida baja para minimizar la fuga.
Matriz de Funciones de Pines ESP32
| GPIO | Entrada/Salida Digital | ADC | I²C | SPI | PWM | Tocar | Correa | ¿Solo entrada? | Notas |
|---|---|---|---|---|---|---|---|---|---|
| 0 | √ | _ | _ | _ | √ | T1 | √ | _ | ARRANQUE: Se requiere pull-up; evitar la conducción activa al arrancar |
| 1 | √ | _ | _ | _ | √ | _ | _ | _ | UART0 TX _ entra en conflicto con el flasheo |
| 2 | √ | _ | _ | _ | √ | T2 | √ | _ | ARRANQUE: Usado en modo flash QIO; añadir 1 kΩ en serie si LED |
| 3 | √ | _ | _ | _ | √ | _ | _ | _ | UART0 RX _ evitar para salidas |
| 4 | √ | _ | _ | _ | √ | T0 | √ | _ | Mejor pin táctil (T0); estable, acoplamiento de RF bajo |
| 5 | √ | _ | VSPI SS | _ | √ | _ | _ | _ | Seguro de uso general; evitar si se usa flash VSPI |
| 12 | √ | _ | _ | _ | √ | T5 | √ | _ | ARRANQUE: Debe ser bajo para la selección del voltaje de destello |
| 13 | √ | _ | _ | _ | √ | T4 | _ | _ | Confiable, pero evitar cerca del cristal si las E/S son de alta velocidad |
| 14 | √ | _ | VSPI CLK | _ | √ | T6 | _ | _ | VSPI CLK _ mantener corto si se usa para SPI |
| 15 | √ | _ | VSPI MOSI | _ | √ | T3 | √ | _ | ARRANQUE/PSRAM: Alto = Desactivar JTAG/PSRAM |
| 16 | √ | _ | _ | _ | √ | _ | _ | _ | Seguro; a menudo se usa para PSRAM CS en WROVER |
| 17 | √ | _ | _ | _ | √ | _ | _ | _ | Seguro, pero no disponible en muchos DevKits |
| 18 | √ | _ | VSPI SCK | _ | √ | _ | _ | _ | SPI SCK preferido - bajo ruido |
| 19 | √ | _ | VSPI MISO | _ | √ | _ | _ | _ | SPI MISO preferido |
| 21 | √ | _ | _ | _ | √ | _ | _ | _ | Mejor I²C SDA – baja EMI |
| 22 | √ | _ | _ | _ | √ | _ | _ | _ | Mejor I²C SCL |
| 23 | √ | _ | VSPI MOSI | _ | √ | _ | _ | _ | SPI MOSI preferido |
| 25 | √ | ADC2_8 | _ | _ | √ | _ | _ | _ | Salida DAC1; segura para control analógico |
| 26 | √ | ADC2_9 | _ | _ | √ | _ | _ | _ | Salida DAC2 |
| 27 | √ | _ | _ | _ | √ | T7 | _ | _ | Genial para el control de apagado/encendido (control de MOSFET) |
| 32 | √ | _ | _ | _ | √ | T9 | _ | _ | Toca T9 - ❌ evita si PSRAM está habilitado |
| 33 | √ | _ | _ | _ | √ | T8 | _ | _ | Táctil T8 – fiable |
| 34 | _ | ADC1_6 | _ | _ | _ | _ | _ | √ | Entrada solamente: sin resistencia de pull-up/pull-down, sin salida |
| 35 | _ | ADC1_7 | _ | _ | _ | _ | _ | √ | ENTRADA SOLAMENTE |
| 36 (VP) | _ | ADC1_0 | _ | _ | _ | _ | _ | √ | alto ruido con Wi-Fi activado |
| 37 | _ | (interno) | _ | _ | _ | _ | _ | √ | No vinculado en WROOM - ignorar |
| 38 | _ | (interno) | _ | _ | _ | _ | _ | √ | No unido _ ignorar |
| 39 (VN) | _ | ADC1_3 | _ | _ | _ | _ | _ | √ | INPUT ONLY _ emparejar con VP para ADC de diferencia |
GPIO 6–11: FLASH BUS – NO USAR PARA ENTRADAS/SALIDAS
- GPIO 34–39: SOLO ENTRADA; SIN RESISTENCIA DE PULL-UP/DOWN, SIN SALIDA
- GPIO 0, 2, 4, 12, 15: ARRANQUE; VERIFICAR ESTADO AL ENCENDER
Leyenda:
- √= Soportado
- _ = No disponible / no recomendado
- T0–T9 = Canal táctil capacitivo
Lista de control final antes de enviar
Pines de correa (GPIO0, 2, 4, 12, 15):
- Verificar los estados de pull-up/pull-down durante la rampa de VDD de 0V a 3.3V.
Pines de Flash (GPIO6-11):
- Asegúrese de que no se enruten señales en estos pines y cúbralos con cobre de tierra.
Pines ADC (GPIO36–39 / ADC1/2):
- Mantenga al menos 10 mm de distancia de los reguladores de conmutación.
- Evite el enrutamiento de capa superior directamente debajo del ESP32 para minimizar el ruido.
Pines de solo entrada (GPIO34–39):
- Usar exclusivamente para sensores; nunca configurar como salidas.
Sección de RF (GPIO2, 15):
- Mantenga al menos 15 mm de distancia de los cristales y las rutas de la antena para reducir las EMI.
Consideraciones finales
El ESP32 es notablemente capaz, pero su flexibilidad es un arma de doble filo. Trata los pines no como E/S genéricas, sino como recursos especializados con modos de fallo. Diseña para los casos extremos y tu producto funcionará de manera fiable en el campo.
Un consejo profesional: Para un diseño y ensamblaje de PCB robustos que aprovechen al máximo las capacidades del ESP32, considere asociarse con PCBCool – expertos en fabricación y ensamblaje de PCB de alta calidad, ayudando a que sus prototipos y productos tengan éxito desde el banco hasta el campo.
Preguntas frecuentes (PF)
No. Muchos pines tienen funciones especiales o restricciones de arranque. Por ejemplo, GPIO0, 2, 4, 12, 15 son pines de "strapping"; GPIO6–11 están conectados a la memoria flash SPI; GPIO34–39 son solo de entrada.
Los pines como GPIO4, 5, 12-15, 18-19, 21-23, 25-27, 32-33 son generalmente seguros. Evita los pines utilizados para PSRAM o flash si tu módulo tiene estas características.
Algunos pines ADC (por ejemplo, GPIO36/VP) comparten circuitos con la sección RF. El ruido de Wi-Fi puede aumentar >250 mV, causando lecturas imprecisas.
Prefiere T0–T7 (GPIO4, 0, 2, 15, 13, 12, 14, 27). Evita T9 (GPIO32) si PSRAM está habilitado en los módulos WROVER.
Antes de entrar en modo de suspensión profunda, desactive los periféricos no utilizados, configure los GPIO no utilizados en salida baja y deseleccione los pines ADC.
No. GPIO34–39 no tienen resistencias de pull-up/down internas. Usar INPUT_PULLUP compilará pero no hará nada.
George es un ingeniero eléctrico certificado con experiencia en diseño de PCB, sistemas embebidos y desarrollo de hardware IoT. Trabaja con PCBCool para convertir la experiencia de ingeniería real en guías prácticas para desarrolladores e ingenieros.