El ESP32 tiene muchos pines disponibles, pero no todos sirven para cualquier cosa. Algunos están asociados al arranque, otros tienen funciones internas, y otros sólo admiten entrada.
Sin embargo, al igual que pasaba con el ESP8266, no todos los pines del ESP32 son igualmente seguros para usar en nuestros proyectos.
Esto es debido debe a que algunos pines desempeñan roles específicos o participan en el proceso de arranque del dispositivo. Utilizar incorrectamente estos pines puede ocasionar conflictos que hagan que no funcione tu proyecto, o incluso que rompas algo.
Si estáis usando un ESP32-S3, tenéis un resumen similar en esta entrada Qué pines puedo usar en un ESP32-S3
Resumen de los pines
Por lo tanto, es muy útil tener una tabla de referencia que nos proporcione información clara y precisa sobre qué pines son seguros para su utilización y cuáles tienen funciones específicas.
Os aconsejo tener esta tabla a mano y consultarla antes de empezar un proyecto con un ESP32, para evitarnos sustos por haber empleado un pin que no deberíamos usar.
[ { “gpio”: 0, “name”: “IO0”, “funcs”: [“GPIO0”, “ADC2_CH1”, “TOUCH_CH1”, “PWM”], “tags”: [“Boot”, “PullUp”], “note”: “⚠️ HIGH al arranque. LOW para flasheo.”, “status”: “warn” }, { “gpio”: 1, “name”: “TX”, “funcs”: [“GPIO1”, “U0TXD”], “tags”: [“Debug”], “note”: ”❌ Pin TX. Salida debug al arranque.”, “status”: “danger” }, { “gpio”: 2, “name”: “IO2”, “funcs”: [“GPIO2”, “ADC2_CH2”, “TOUCH_CH2”], “tags”: [“LED”, “Boot”], “note”: “⚠️ Flotante/LOW para flasheo. Conectado a LED.”, “status”: “warn” }, { “gpio”: 3, “name”: “RX”, “funcs”: [“GPIO3”, “U0RXD”], “tags”: [“Debug”], “note”: ”❌ Pin RX. HIGH al arranque.”, “status”: “danger” }, { “gpio”: 4, “name”: “IO4”, “funcs”: [“GPIO4”, “ADC2_CH0”, “TOUCH_CH0”], “tags”: [], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 5, “name”: “IO5”, “funcs”: [“GPIO5”, “PWM”], “tags”: [“Boot”], “note”: “⚠️ Debe ser HIGH al arranque.”, “status”: “warn” }, { “gpio”: 6, “name”: “CLK”, “funcs”: [“GPIO6”, “SPI_CLK”], “tags”: [“Flash”], “note”: ”❌ Reservado Flash SPI.”, “status”: “danger” }, { “gpio”: 7, “name”: “D0”, “funcs”: [“GPIO7”, “SPI_Q”], “tags”: [“Flash”], “note”: ”❌ Reservado Flash SPI.”, “status”: “danger” }, { “gpio”: 8, “name”: “D1”, “funcs”: [“GPIO8”, “SPI_D”], “tags”: [“Flash”], “note”: ”❌ Reservado Flash SPI.”, “status”: “danger” }, { “gpio”: 9, “name”: “D2”, “funcs”: [“GPIO9”, “SPI_HD”], “tags”: [“Flash”], “note”: ”❌ Reservado Flash SPI.”, “status”: “danger” }, { “gpio”: 10, “name”: “D3”, “funcs”: [“GPIO10”, “SPI_WP”], “tags”: [“Flash”], “note”: ”❌ Reservado Flash SPI.”, “status”: “danger” }, { “gpio”: 11, “name”: “CMD”, “funcs”: [“GPIO11”, “SPI_CS0”], “tags”: [“Flash”], “note”: ”❌ Reservado Flash SPI.”, “status”: “danger” }, { “gpio”: 12, “name”: “IO12”, “funcs”: [“GPIO12”, “ADC2_CH5”, “TOUCH_CH5”, “MTDI”], “tags”: [“Boot”, “JTAG”], “note”: “⚠️ Debe ser LOW al arranque (LDO voltage).”, “status”: “warn” }, { “gpio”: 13, “name”: “IO13”, “funcs”: [“GPIO13”, “ADC2_CH4”, “TOUCH_CH4”, “MTCK”], “tags”: [“JTAG”], “note”: “✔️ Debug JTAG.”, “status”: “safe” }, { “gpio”: 14, “name”: “IO14”, “funcs”: [“GPIO14”, “ADC2_CH6”, “TOUCH_CH6”, “MTMS”, “PWM”], “tags”: [“JTAG”], “note”: “⚠️ PWM al arranque.”, “status”: “warn” }, { “gpio”: 15, “name”: “IO15”, “funcs”: [“GPIO15”, “ADC2_CH3”, “TOUCH_CH3”, “MTDO”], “tags”: [“Boot”, “JTAG”], “note”: “⚠️ Debe ser HIGH al arranque.”, “status”: “warn” }, { “gpio”: 16, “name”: “IO16”, “funcs”: [“GPIO16”], “tags”: [], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 17, “name”: “IO17”, “funcs”: [“GPIO17”], “tags”: [], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 18, “name”: “IO18”, “funcs”: [“GPIO18”], “tags”: [], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 19, “name”: “IO19”, “funcs”: [“GPIO19”], “tags”: [], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 21, “name”: “IO21”, “funcs”: [“GPIO21”, “I2C_SDA”], “tags”: [“I2C”], “note”: “✔️ Standard I2C SDA.”, “status”: “safe” }, { “gpio”: 22, “name”: “IO22”, “funcs”: [“GPIO22”, “I2C_SCL”], “tags”: [“I2C”], “note”: “✔️ Standard I2C SCL.”, “status”: “safe” }, { “gpio”: 23, “name”: “IO23”, “funcs”: [“GPIO23”], “tags”: [], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 25, “name”: “IO25”, “funcs”: [“GPIO25”, “ADC1_CH8”, “DAC_1”], “tags”: [“DAC”], “note”: “✔️ Seguro. Salida DAC.”, “status”: “safe” }, { “gpio”: 26, “name”: “IO26”, “funcs”: [“GPIO26”, “ADC2_CH9”, “DAC_2”], “tags”: [“DAC”], “note”: “✔️ Seguro. Salida DAC.”, “status”: “safe” }, { “gpio”: 27, “name”: “IO27”, “funcs”: [“GPIO27”, “ADC2_CH7”, “TOUCH_CH7”], “tags”: [], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 32, “name”: “IO32”, “funcs”: [“GPIO32”, “ADC1_CH4”, “TOUCH_CH9”], “tags”: [], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 33, “name”: “IO33”, “funcs”: [“GPIO33”, “ADC1_CH5”, “TOUCH_CH8”], “tags”: [], “note”: “✔️ Seguro para uso general.”, “status”: “safe” }, { “gpio”: 34, “name”: “IO34”, “funcs”: [“GPIO34”, “ADC1_CH6”], “tags”: [“InputOnly”], “note”: “⚠️ Solo Entrada (Input Only).”, “status”: “warn” }, { “gpio”: 35, “name”: “IO35”, “funcs”: [“GPIO35”, “ADC1_CH7”], “tags”: [“InputOnly”], “note”: “⚠️ Solo Entrada (Input Only).”, “status”: “warn” }, { “gpio”: 36, “name”: “VP”, “funcs”: [“GPIO36”, “ADC1_CH0”], “tags”: [“InputOnly”], “note”: “⚠️ Solo Entrada (Input Only).”, “status”: “warn” }, { “gpio”: 39, “name”: “VN”, “funcs”: [“GPIO39”, “ADC1_CH3”], “tags”: [“InputOnly”], “note”: “⚠️ Solo Entrada (Input Only).”, “status”: “warn” } ]

