El chip ESP32 viene con 48 pines con múltiples funciones. No todos los pines están expuestos en todas las placas de desarrollo ESP32 y algunos pines no se pueden utilizar. Esta guía de referencia te ayudará a saber exactamente qué pines GPIO podés usar, cuáles evitar y cuáles requieren atención especial.
⚠️ Nota: No todos los GPIO son accesibles en todas las placas de desarrollo, pero cada GPIO específico funciona de la misma manera independientemente de la placa que estés utilizando.
Periféricos ESP32
Los periféricos del ESP32 incluyen:
- 18 canales de convertidor analógico a digital (ADC)
- 3 interfaces SPI
- 3 interfaces UART
- 2 interfaces I2C
- 16 canales de salida PWM
- 2 convertidores de digital a analógico (DAC)
- 2 interfaces I2S
- 10 GPIO de detección capacitiva
Las funciones ADC y DAC se asignan a pines estáticos específicos. Sin embargo, podés decidir qué pines son UART, I2C, SPI o PWM, simplemente asignándolos en el código gracias a la función de multiplexación del chip ESP32.
Tabla de referencia GPIO
La siguiente tabla muestra qué pines son seguros para usar como entradas y salidas, y cuáles requieren precaución:
- 🟢 Verde: seguros para usar sin restricciones.
- 🟡 Amarillo: usables, pero con comportamiento especial al arrancar.
- 🔴 Rojo: no se recomienda usarlos como entradas o salidas.
| GPIO | Entrada | Salida | Notas |
|---|---|---|---|
| 0 | 🟡 con cuidado | 🟡 OK | Emite señal PWM al arrancar. Debe ser BAJA para entrar en modo intermitente. |
| 1 | 🔴 Pin TX | 🟡 OK | Salida de depuración en el arranque. |
| 2 | 🟢 OK | 🟢 OK | Conectado al LED integrado. Debe estar flotando o en BAJO para el modo intermitente. |
| 3 | 🟢 OK | 🔴 Pin RX | ALTO en el arranque. |
| 4 | 🟢 OK | 🟢 OK | |
| 5 | 🟢 OK | 🟢 OK | Emite PWM en el arranque. Pin de sujeción. |
| 6 | 🔴 x | 🔴 x | Conectado al flash SPI integrado. NO USAR. |
| 7 | 🔴 x | 🔴 x | Conectado al flash SPI integrado. NO USAR. |
| 8 | 🔴 x | 🔴 x | Conectado al flash SPI integrado. NO USAR. |
| 9 | 🔴 x | 🔴 x | Conectado al flash SPI integrado. NO USAR. |
| 10 | 🔴 x | 🔴 x | Conectado al flash SPI integrado. NO USAR. |
| 11 | 🔴 x | 🔴 x | Conectado al flash SPI integrado. NO USAR. |
| 12 | 🟢 OK | 🟢 OK | Falla al arrancar si está en ALTO. Pin de sujeción. |
| 13 | 🟢 OK | 🟢 OK | |
| 14 | 🟢 OK | 🟢 OK | Emite PWM en el arranque. |
| 15 | 🟢 OK | 🟢 OK | Emite PWM en el arranque. Pin de sujeción. |
| 16 | 🟢 OK | 🟢 OK | |
| 17 | 🟢 OK | 🟢 OK | |
| 18 | 🟢 OK | 🟢 OK | |
| 19 | 🟢 OK | 🟢 OK | |
| 21 | 🟢 OK | 🟢 OK | |
| 22 | 🟢 OK | 🟢 OK | |
| 23 | 🟢 OK | 🟢 OK | |
| 25 | 🟢 OK | 🟢 OK | |
| 26 | 🟢 OK | 🟢 OK | |
| 27 | 🟢 OK | 🟢 OK | |
| 32 | 🟢 OK | 🟢 OK | |
| 33 | 🟢 OK | 🟢 OK | |
| 34 | 🟢 OK | 🔴 Solo entrada | Sin resistencia pull-up/pull-down interna. |
| 35 | 🟢 OK | 🔴 Solo entrada | Sin resistencia pull-up/pull-down interna. |
| 36 | 🟢 OK | 🔴 Solo entrada | Sin resistencia pull-up/pull-down interna. |
| 39 | 🟢 OK | 🔴 Solo entrada | Sin resistencia pull-up/pull-down interna. |
Pines de solo entrada (GPIO 34 a 39)
Los GPIO 34 a 39 son GPI — pines de solo entrada. No tienen resistencias pull-up o pull-down internas y no se pueden utilizar como salidas:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
Flash SPI integrado (GPIO 6 a 11) — NO USAR
Aunque algunos GPIO del 6 al 11 aparecen en ciertas placas de desarrollo, están conectados al flash SPI integrado del chip ESP-WROOM-32. No los uses en tus proyectos:
- GPIO 6 — SCK/CLK
- GPIO 7 — SDO/SD0
- GPIO 8 — SDI/SD1
- GPIO 9 — SHD/SD2
- GPIO 10 — SWP/SD3
- GPIO 11 — CSC/CMD
GPIO táctiles capacitivos
El ESP32 tiene 10 sensores táctiles capacitivos internos que detectan variaciones de carga eléctrica (como el contacto con la piel humana). También pueden usarse para despertar el ESP32 del modo de sueño profundo:
| Sensor táctil | GPIO |
|---|---|
| T0 | GPIO 4 |
| T1 | GPIO 0 |
| T2 | GPIO 2 |
| T3 | GPIO 15 |
| T4 | GPIO 13 |
| T5 | GPIO 12 |
| T6 | GPIO 14 |
| T7 | GPIO 27 |
| T8 | GPIO 33 |
| T9 | GPIO 32 |
Convertidor Analógico a Digital (ADC)
El ESP32 tiene 18 canales ADC de 12 bits (el ESP8266 solo tenía 1 de 10 bits). Esto permite lecturas analógicas de 0 a 4095, donde 0 = 0V y 4095 = 3,3V.
⚠️ Importante: los pines ADC2 no se pueden usar mientras se usa Wi-Fi. Si tenés problemas con lecturas analógicas en proyectos con Wi-Fi, usá un pin ADC1.
| Canal ADC | GPIO | Canal ADC | GPIO |
|---|---|---|---|
| ADC1_CH0 | GPIO 36 | ADC2_CH0 | GPIO 4 |
| ADC1_CH1 | GPIO 37 | ADC2_CH1 | GPIO 0 |
| ADC1_CH2 | GPIO 38 | ADC2_CH2 | GPIO 2 |
| ADC1_CH3 | GPIO 39 | ADC2_CH3 | GPIO 15 |
| ADC1_CH4 | GPIO 32 | ADC2_CH4 | GPIO 13 |
| ADC1_CH5 | GPIO 33 | ADC2_CH5 | GPIO 12 |
| ADC1_CH6 | GPIO 34 | ADC2_CH6 | GPIO 14 |
| ADC1_CH7 | GPIO 35 | ADC2_CH7 | GPIO 27 |
| ADC2_CH8 | GPIO 25 | ||
| ADC2_CH9 | GPIO 26 |
⚠️ Los pines ADC del ESP32 no tienen comportamiento lineal. No podrás distinguir con precisión entre 0 y 0,1V, ni entre 3,2V y 3,3V. Tené esto en cuenta al diseñar tus circuitos.
Convertidor Digital a Analógico (DAC)
El ESP32 tiene 2 canales DAC de 8 bits para convertir señales digitales en voltajes analógicos:
- DAC1 → GPIO 25
- DAC2 → GPIO 26
GPIO de RTC
Los GPIO enrutados al subsistema de baja potencia RTC pueden usarse cuando el ESP32 está en sueño profundo y sirven para despertar al ESP32 cuando el coprocesador ULP está activo:
| RTC GPIO | GPIO | RTC GPIO | GPIO |
|---|---|---|---|
| RTC_GPIO0 | GPIO 36 | RTC_GPIO10 | GPIO 4 |
| RTC_GPIO3 | GPIO 39 | RTC_GPIO11 | GPIO 0 |
| RTC_GPIO4 | GPIO 34 | RTC_GPIO12 | GPIO 2 |
| RTC_GPIO5 | GPIO 35 | RTC_GPIO13 | GPIO 15 |
| RTC_GPIO6 | GPIO 25 | RTC_GPIO14 | GPIO 13 |
| RTC_GPIO7 | GPIO 26 | RTC_GPIO15 | GPIO 12 |
| RTC_GPIO8 | GPIO 33 | RTC_GPIO16 | GPIO 14 |
| RTC_GPIO9 | GPIO 32 | RTC_GPIO17 | GPIO 27 |
PWM
El controlador PWM del ESP32 tiene 16 canales independientes. Todos los pines que pueden actuar como salidas pueden usarse como pines PWM, excepto los GPIO 34 a 39. Para configurar una señal PWM necesitás definir en el código:
- Frecuencia de la señal
- Ciclo de trabajo
- Canal PWM
- GPIO donde emitir la señal
I2C
El ESP32 tiene 2 canales I2C y cualquier pin puede configurarse como SDA o SCL. Los pines predeterminados con Arduino IDE son:
- SDA → GPIO 21
- SCL → GPIO 22
Para usar otros pines, llamá a Wire.begin(SDA, SCL); en tu código.
SPI
El mapeo de pines SPI predeterminado es:
| SPI | MOSI | MISO | CLK | CS |
|---|---|---|---|---|
| VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
| HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
UART
El ESP32 soporta hasta 3 interfaces UART. Los pines predeterminados son:
| Puerto | TX | RX | Observaciones |
|---|---|---|---|
| UART0 | GPIO 1 | GPIO 3 | Reservado para Monitor Serial y carga de código. También usable con otros dispositivos. |
| UART1 | GPIO 9 | GPIO 10 | ⚠️ Conectado al flash SPI. Debe asignarse a otros GPIO. |
| UART2 | GPIO 17 | GPIO 16 | Disponible para comunicación con dispositivos externos. |
Interrupciones
Todos los GPIO del ESP32 pueden configurarse como interrupciones.
Pines de sujeción (Strapping Pins)
Estos pines controlan el modo de arranque del ESP32. Si tenés periféricos conectados a ellos, podés tener problemas al cargar código nuevo:
- GPIO 0 — debe estar en BAJO para entrar en modo de arranque
- GPIO 2 — debe estar flotante o en BAJO durante el arranque
- GPIO 4
- GPIO 5 — debe estar en ALTO durante el arranque
- GPIO 12 — debe estar en BAJO durante el arranque
- GPIO 15 — debe estar en ALTO durante el arranque
En la mayoría de las placas con USB/Serial integrado, no necesitás preocuparte por estos pines ya que la placa los gestiona automáticamente.
Pines en ALTO al arrancar
Algunos GPIO cambian a ALTO o emiten señales PWM al arrancar o reiniciar. Tené cuidado si tenés salidas conectadas a estos pines:
- GPIO 1
- GPIO 3
- GPIO 5
- GPIO 6 a GPIO 11 (flash SPI — no usar)
- GPIO 14
- GPIO 15
Pin Enable (EN)
El pin EN es el pin de habilitación del regulador de 3,3V. Está levantado por defecto. Conectarlo a tierra desactiva el regulador, lo que permite usarlo conectado a un pulsador para reiniciar el ESP32.
Corriente máxima por GPIO
La corriente máxima absoluta que puede consumir un GPIO es de 40 mA, según las condiciones de funcionamiento recomendadas en la hoja de datos del ESP32. Respetá este límite para no dañar el chip.
Sensor de efecto Hall integrado
El ESP32 incluye un sensor de efecto Hall integrado que detecta cambios en el campo magnético del entorno, sin necesidad de hardware externo.
Resumen rápido
| Función | GPIO recomendados |
|---|---|
| Uso general seguro (entrada/salida) | 4, 5, 13, 14, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33 |
| Solo entrada | 34, 35, 36, 39 |
| NO USAR | 6, 7, 8, 9, 10, 11 |
| ADC1 (compatible con Wi-Fi) | 32, 33, 34, 35, 36, 39 |
| ADC2 (incompatible con Wi-Fi) | 0, 2, 4, 12, 13, 14, 15, 25, 26, 27 |
| DAC | 25, 26 |
| I2C (predeterminado) | SDA: 21 / SCL: 22 |
| VSPI (predeterminado) | MOSI: 23 / MISO: 19 / CLK: 18 / CS: 5 |
| HSPI (predeterminado) | MOSI: 13 / MISO: 12 / CLK: 14 / CS: 15 |
| Touch capacitivo | 0, 2, 4, 12, 13, 14, 15, 27, 32, 33 |
