¿Estás buscando aprovechar al máximo tu ESP32 pero no estás seguro de qué pines GPIO son los más adecuados para tus proyectos? En esta guía de referencia de distribución de pines de ESP32 te mostraremos cuáles son los pines que debes utilizar para garantizar un funcionamiento óptimo de tu dispositivo. ¡Sigue leyendo para descubrir todo lo que necesitas saber!
El chip ESP32 tiene 48 pines con múltiples funciones. No todos los pines están disponibles en todas las placas de desarrollo ESP32 y algunos pines no se pueden utilizar.
Hay muchas preguntas sobre el uso de los GPIO ESP32. ¿Qué pines deberías usar? ¿Qué pines deberías evitar en tus proyectos? Esta publicación pretende ser una referencia simple y fácil de entender para los GPIO ESP32.
La siguiente figura muestra la distribución de pines del ESP-WROOM-32. Puedes usarlos como referencia si tienes uno. Chip desnudo ESP32 Para crear un tablero personalizado:
Nota: No se puede acceder a todos los GPIO en todas las placas de desarrollo, pero cada GPIO específico funciona de la misma manera independientemente de la placa de desarrollo utilizada. Si recién está comenzando con ESP32, le recomendamos leer nuestra guía: Introducción a la placa de desarrollo ESP32.
Periféricos ESP32
Los periféricos 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 sensores capacitivos
Las funciones ADC (convertidor analógico a digital) y DAC (convertidor digital a analógico) están asignadas a pines estáticos específicos. Sin embargo, puedes decidir qué pines son UART, I2C, SPI, PWM, etc.; solo necesitas asignarlos en el código. Esto es posible gracias a la función de multiplexación del chip ESP32.
Aunque puede definir las propiedades de los pines en el software, hay pines asignados de forma predeterminada, como se muestra en la siguiente figura (este es un ejemplo de la Placa ESP32 DEVKIT V1 DOIT con 36 pines (la disposición de los pines puede variar según el fabricante).
Además, existen pines con características específicas que los hacen aptos o no para un proyecto en particular. La siguiente tabla muestra qué pines se utilizan mejor como entradas y salidas y con cuáles debe tener cuidado.
Se pueden utilizar los pines marcados en verde. Se pueden utilizar los pines marcados en amarillo, pero hay que tener cuidado ya que pueden presentar un comportamiento inesperado, especialmente al arrancar. Los pines marcados en rojo no deben usarse como entradas ni salidas.
GPIO | Entrada | producción | Observaciones |
0 | tirado hacia arriba | DE ACUERDO | emite una señal PWM al arrancar, debe estar BAJA para ingresar al modo intermitente |
1 | pasador TX | DE ACUERDO | Salida de depuración al arrancar |
2 | DE ACUERDO | DE ACUERDO | conectado con LED incorporado, debe dejarse flotante o BAJO para ingresar al modo intermitente |
3 | DE ACUERDO | pin RX | ALTO al arrancar |
4 | DE ACUERDO | DE ACUERDO | |
5 | DE ACUERDO | DE ACUERDO | emite señal PWM al arrancar, pasador de flejado |
6 | X | X | conectado al flash SPI integrado |
7 | X | X | conectado al flash SPI integrado |
octavo | X | X | conectado al flash SPI integrado |
9 | X | X | conectado al flash SPI integrado |
10 | X | X | conectado al flash SPI integrado |
11 | X | X | conectado al flash SPI integrado |
12 | DE ACUERDO | DE ACUERDO | La bota falla cuando se levanta, pasador de sujeción |
13 | DE ACUERDO | DE ACUERDO | |
14 | DE ACUERDO | DE ACUERDO | emite una señal PWM al arrancar |
15 | DE ACUERDO | DE ACUERDO | emite señal PWM al arrancar, pasador de flejado |
dieciséis | DE ACUERDO | DE ACUERDO | |
17 | DE ACUERDO | DE ACUERDO | |
18 | DE ACUERDO | DE ACUERDO | |
19 | DE ACUERDO | DE ACUERDO | |
21 | DE ACUERDO | DE ACUERDO | |
22 | DE ACUERDO | DE ACUERDO | |
23 | DE ACUERDO | DE ACUERDO | |
25 | DE ACUERDO | DE ACUERDO | |
26 | DE ACUERDO | DE ACUERDO | |
27 | DE ACUERDO | DE ACUERDO | |
32 | DE ACUERDO | DE ACUERDO | |
33 | DE ACUERDO | DE ACUERDO | |
34 | DE ACUERDO | solo ingresa | |
35 | DE ACUERDO | solo ingresa | |
36 | DE ACUERDO | solo ingresa | |
39 | DE ACUERDO | solo ingresa |
Siga leyendo para obtener un análisis más detallado y profundo de los GPIO ESP32 y sus características.
Solo pines de entrada
Los GPIO 34 a 39 son GPI: pines de entrada puros. Estos pines no tienen resistencias internas de pull-up o pull-down. No se pueden usar como salidas, así que use estos pines solo como entradas:
- GPIO34
- GPIO35
- GPIO36
- GPIO39
Flash SPI integrado en el ESP-WROOM-32
GPIO 6 a GPIO 11 están disponibles en algunas placas de desarrollo ESP32. Sin embargo, estos pines están conectados al flash SPI integrado en el chip ESP-WROOM-32 y no se recomiendan para otros fines. Así que no uses estos pines 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. Estos pueden detectar cambios en cualquier cosa que lleve una carga eléctrica, como la piel humana. Esto les permite detectar cambios causados al tocar los GPIO con un dedo. Estos pines se pueden integrar fácilmente en almohadillas capacitivas y reemplazar las teclas mecánicas. Los pines táctiles capacitivos también se pueden utilizar para despertar el ESP32 del sueño profundo.
Estos sensores táctiles internos están conectados a estos GPIO:
- T0 (GPIO4)
- T1 (GPIO 0)
- T2 (GPIO 2)
- T3 (GPIO15)
- T4 (GPIO 13)
- T5 (GPIO12)
- T6 (GPIO 14)
- T7 (GPIO 27)
- T8 (GPIO 33)
- T9 (GPIO 32)
Aprenda a utilizar los pines táctiles con Arduino IDE: Pines táctiles ESP32 con Arduino IDE
Convertidor analógico a digital (ADC)
El ESP32 tiene canales de entrada ADC de 18 x 12 bits (mientras que el ESP8266 solo tiene 1 ADC de 10 bits). Estos son los GPIO que se pueden utilizar como ADC y canales correspondientes:
- ADC1_CH0 (GPIO 36)
- ADC1_CH1 (GPIO 37)
- ADC1_CH2 (GPIO 38)
- ADC1_CH3 (GPIO 39)
- ADC1_CH4 (GPIO 32)
- ADC1_CH5 (GPIO 33)
- ADC1_CH6 (GPIO 34)
- ADC1_CH7 (GPIO35)
- ADC2_CH0 (GPIO4)
- ADC2_CH1 (GPIO 0)
- ADC2_CH2 (GPIO2)
- ADC2_CH3 (GPIO15)
- ADC2_CH4 (GPIO 13)
- ADC2_CH5 (GPIO12)
- ADC2_CH6 (GPIO 14)
- ADC2_CH7 (GPIO27)
- ADC2_CH8 (GPIO25)
- ADC2_CH9 (GPIO26)
Aprenda a utilizar los pines ESP32 ADC:
- Pines ESP32 ADC con Arduino IDE
- Pines ESP32 ADC con MicroPython
Nota: Los pines ADC2 no se pueden utilizar cuando se utiliza Wi-Fi. Entonces, si está usando Wi-Fi y tiene problemas para obtener el valor de un GPIO ADC2, puede considerar usar un GPIO ADC1 en su lugar. Esto debería solucionar tu problema.
Los canales de entrada del ADC tienen una resolución de 12 bits. Esto significa que puede obtener lecturas analógicas en el rango de 0 a 4095, donde 0 es 0 V y 4095 es 3,3 V. También puede ajustar la resolución de sus canales según el código y el rango de ADC.
Los pines ESP32 ADC no tienen comportamiento lineal. Probablemente no podrá distinguir entre 0 y 0,1 V o entre 3,2 y 3,3 V. Debes tener esto en cuenta al utilizar los pines del ADC. Obtendrá un comportamiento similar al que se muestra en la siguiente imagen.
Convertidor digital a analógico (DAC)
Hay 2 canales DAC de 8 bits en el ESP32 para convertir señales digitales en salidas de señales de voltaje analógicas. Estos son los canales DAC:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
GPIO RTC
Hay soporte RTC GPIO en el ESP32. Los GPIO reenviados al subsistema de baja potencia RTC se pueden usar cuando el ESP32 está en suspensión profunda. Estos GPIO RTC se pueden utilizar para despertar el ESP32 del modo de suspensión profunda cuando el coprocesador de potencia ultrabaja (ULP) está en ejecución. Los siguientes GPIO se pueden utilizar como fuente de activación externa.
- RTC_GPIO0 (GPIO36)
- RTC_GPIO3 (GPIO39)
- RTC_GPIO4 (GPIO34)
- RTC_GPIO5 (GPIO35)
- RTC_GPIO6 (GPIO25)
- RTC_GPIO7 (GPIO26)
- RTC_GPIO8 (GPIO33)
- RTC_GPIO9 (GPIO32)
- RTC_GPIO10 (GPIO4)
- RTC_GPIO11 (GPIO0)
- RTC_GPIO12 (GPIO2)
- RTC_GPIO13 (GPIO15)
- RTC_GPIO14 (GPIO13)
- RTC_GPIO15 (GPIO12)
- RTC_GPIO16 (GPIO14)
- RTC_GPIO17 (GPIO27)
Aprenda a utilizar los GPIO de RTC para despertar el ESP32 del sueño profundo: ESP32 Deep Sleep con Arduino IDE y fuentes de activación
PWM
El controlador ESP32 LED PWM tiene 16 canales independientes que se pueden configurar para generar señales PWM con diferentes características. Todos los pines que pueden actuar como salidas se pueden utilizar como pines PWM (los GPIO 34 a 39 no pueden generar PWM).
Para configurar una señal PWM, debe definir estos parámetros en el código:
- frecuencia de la señal;
- tasa de uso;
- canal PWM;
- GPIO donde desea enviar la señal.
Aprenda a usar ESP32 PWM con Arduino IDE: ESP32 PWM con Arduino IDE
I2C
El ESP32 tiene dos canales I2C y cada pin se puede configurar como SDA o SCL. Cuando se utiliza el ESP32 con el IDE de Arduino, los pines I2C estándar son:
- GPIO 21 (SDA)
- GPIO 22 (SCL)
Si desea utilizar otros pines cuando utilice la biblioteca Wire, todo lo que necesita hacer es llamar:
Wire.begin(SDA, SCL);
Obtenga más información sobre el protocolo de comunicación I2C con ESP32 usando el IDE de Arduino: Comunicación ESP32 I2C (pines de configuración, múltiples interfaces de bus y periféricos)
Más tutoriales de I2C con el ESP32:
- ESP32 I2C Maestro y Esclavo (comunicación I2C entre dos ESP32) – Arduino IDE
- ESP32: Escáner I2C (Arduino IDE): determina la dirección de los dispositivos I2C
- Instrucciones para el multiplexor I2C TCA9548A con ESP32
SPI
De forma predeterminada, la asignación de pines para SPI es:
SPI | MOSI | MISO | CLK | ÉL |
VSPI | GPIO23 | GPIO 19 | GPIO 18 | GPIO5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
Obtenga más información sobre el protocolo de comunicación SPI con ESP32 usando el IDE de Arduino: Comunicación ESP32 SPI: configuración de pines, múltiples interfaces de bus SPI y periféricos (Arduino IDE)
Interrupciones
Todos los GPIO se pueden configurar como interrupciones.
Aprenda a usar interrupciones con el ESP32:
- ESP32 interrumpe con Arduino IDE
- ESP32 interrumpe con MicroPython
pasadores de flejado
El chip ESP32 tiene los siguientes pasadores de sujeción:
- GPIO 0 (debe estar BAJO para ingresar al modo de inicio)
- GPIO 2 (debe estar flotante o BAJO durante el arranque)
- GPIO4
- GPIO 5 (debe estar ALTO durante el arranque)
- GPIO 12 (debe estar BAJO durante el arranque)
- GPIO 15 (debe estar ALTO durante el arranque)
Estos se utilizan para poner el ESP32 en modo de gestor de arranque o flash. Para la mayoría de las placas de desarrollo con un puerto serie/USB integrado, no necesita preocuparse por el estado de estos pines. La placa coloca los pines en el estado correcto para el modo flash o de arranque. Puede encontrar más información en el La selección del modo de arranque ESP32 se puede encontrar aquí.
Sin embargo, si tiene periféricos conectados a estos pines, puede tener problemas para cargar código nuevo, actualizar el ESP32 con firmware nuevo o restablecer la placa. Si tiene periféricos conectados a los pasadores de fleje y tiene problemas para cargar el código o actualizar el ESP32, puede deberse a que estos periféricos impiden que el ESP32 ingrese al modo correcto. Leer el Documentación para seleccionar el modo de arranque. para guiarte en la dirección correcta. Después de reiniciar, flashear o iniciar, estos pines funcionan como se esperaba.
Pines ALTOS en el maletero
Algunos GPIO cambian de estado a ALTO o emiten señales PWM al iniciar o reiniciar. Esto significa que puede obtener resultados inesperados al restablecer o iniciar el ESP32 si tiene salidas conectadas a estos GPIO.
- GPIO1
- GPIO3
- GPIO5
- GPIO 6 a GPIO 11 (conectado a la memoria flash SPI integrada del ESP32; no se recomienda su uso).
- GPIO 14
- GPIO 15
Activar (DE)
Habilitar (EN) es el pin de habilitación del regulador de 3,3 V. Está elevado, así que conéctelo a tierra para desactivar el regulador de 3,3 V. Esto significa que puedes usar este pin, conectado a un pulsador, para reiniciar tu ESP32, por ejemplo.
Consumo de energía GPIO
El requisito de corriente máximo absoluto por GPIO es 40 mA según la sección «Condiciones de funcionamiento recomendadas» en la hoja de datos de ESP32.
Sensor de efecto Hall incorporado en ESP32
El ESP32 también tiene un sensor de efecto Hall integrado que detecta cambios en el campo magnético a su alrededor.
Envolver
Esperamos que esta guía de referencia para los GPIO ESP32 le haya resultado útil. Si tiene otros consejos sobre los GPIO ESP32, deje un comentario a continuación.
Si recién estás comenzando con el ESP32, tenemos contenido excelente para ayudarte:
- Aprendiendo ESP32 con Arduino IDE
- Comenzando con la placa de desarrollo ESP32
- Más de 20 proyectos y tutoriales de ESP32
- Tutorial del servidor web ESP32
- ESP32 vs ESP8266: pros y contras
Gracias por leer.
Referencia de distribución de pines de ESP32: ¿Qué pines GPIO debería utilizar?
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.
Hay muchas preguntas sobre cómo utilizar los GPIOs del ESP32. ¿Qué pines deberías utilizar? ¿Qué pines deberías evitar utilizar en tus proyectos? Esta publicación tiene como objetivo ser una guía de referencia simple y fácil de seguir para los GPIOs del ESP32.
Periféricos ESP32
Los periféricos del ESP32 incluyen:
- 18 canales de conversor analógico a digital (ADC)
- 3 interfaces SPI
- 3 interfaces UART
- 2 interfaces I2C
- 16 canales de salida PWM
- 2 convertidores digital-analógico (DAC)
- 2 interfaces I2S
- 10 GPIOs de detección capacitiva
Los ADC (convertidores analógico a digital) y DAC (convertidores digital a analógico) están asignados a pines estáticos específicos. Sin embargo, puedes decidir qué pines son UART, I2C, SPI, PWM, etc. – solo necesitas asignarlos en el código. Esto es posible gracias a la función de multiplexación del chip ESP32.
Aunque puedes definir las propiedades de los pines en el software, hay pines asignados por defecto como se muestra en la siguiente figura:
Además, hay pines con características específicas que los hacen adecuados o no para un proyecto en particular. La siguiente tabla muestra qué pines son los mejores para usar como entradas, salidas y cuáles debes tener precaución.
Los pines resaltados en verde son adecuados para usar. Los resaltados en amarillo son adecuados para usar, pero necesitas prestar atención porque pueden tener un comportamiento inesperado principalmente al arrancar. Los resaltados en rojo no se recomiendan para usar como entradas o salidas.
- GPIO: 0 – Entradas: OK / Salidas: Pulled up
- GPIO: 1 – Entradas: TX pin / Salidas: OK
- GPIO: 2 – Entradas: OK / Salidas: OK
- GPIO: 3 – Entradas: OK / Salidas: RX pin
- GPIO: 4 – Entradas: OK / Salidas: OK
- GPIO: 5 – Entradas: OK / Salidas: OK
…
Esperamos que esta guía de referencia para los GPIOs del ESP32 te haya resultado útil. Si tienes más consejos sobre los GPIOs del ESP32, por favor compártelos escribiendo un comentario abajo.
Si recién estás empezando con el ESP32, tenemos contenido excelente para que comiences:
¡Esta guía es súper útil para saber qué pines GPIO utilizar en mi ESP32! ¡Gracias por compartir! 🙌🏼