En la entrada anterior, vimos en detalle los distintos pines del ESP32, así como sus funciones y utilidades específicas.
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 | NAME | FUNCIONES | PUEDES USARLO |
|---|---|---|---|
| 0 | IO0 | GPIO0, ADC2_CH1, TOUCH_CH1, Boot | ⚠️Pulled-UP. Debe ser HIGH al arranque. Debe ser LOW para flasheo. Genera PWM al arrancar |
| 1 | TX | GPIO1, U0TXD | ❌Pin TX. Salida de depuración al arrancar |
| 2 | IO2 | GPIO2, ADC2_CH2, TOUCH_CH2 | ⚠️Debe ser flotante o LOW para flasheo. Conectado al LED |
| 3 | RX | GPIO3, U0RXD | ❌Pin RX. En HIGH al arrancar |
| 4 | IO4 | GPIO4, ADC2_CH0, TOUCH_CH0 | ✔️ |
| 5 | IO5 | GPIO5 | ⚠️Debe ser HIGH al arrancar. Genera señal PWM al arrancar |
| 6 | CLK | GPIO6 | ❌FLASH SPI |
| 7 | D0 | GPIO7 | ❌FLASH SPI |
| 8 | D1 | GPIO8 | ❌FLASH SPI |
| 9 | D2 | GPIO9 | ❌FLASH SPI |
| 10 | D3 | GPIO10 | ❌FLASH SPI |
| 11 | CMD | GPIO11 | ❌FLASH SPI |
| 12 | IO12 | GPIO12, ADC2_CH5, TOUCH_CH5, MTDI | ⚠️Debe ser LOW al arrancar Debug JTAG |
| 13 | IO13 | GPIO13, ADC2_CH4, TOUCH_CH4, MTCK | 🟢Debug JTAG |
| 14 | IO14 | GPIO14, ADC2_CH6, TOUCH_CH6, MTMS | ⚠️Genera señal PWM al arrancar Debug JTAG |
| 15 | IO15 | GPIO15, ADC2_CH3, TOUCH_CH3, MTDO | ⚠️Debe ser HIGH al arrancar Debug JTAG |
| 16 | IO16 | GPIO16 | ✔️ |
| 17 | IO17 | GPIO17 | ✔️ |
| 18 | IO18 | GPIO18 | ✔️ |
| 19 | IO19 | GPIO19 | ✔️ |
| 21 | IO21 | GPIO21 | ✔️ |
| 22 | IO22 | GPIO22 | ✔️ |
| 23 | IO23 | GPIO23 | ✔️ |
| 25 | IO25 | GPIO25, ADC1_CH8, DAC_1 | ✔️ |
| 26 | IO26 | GPIO26, ADC2_CH9, DAC_2 | ✔️ |
| 27 | IO27 | GPIO27, ADC2_CH7, TOUCH_CH7 | ✔️ |
| 32 | IO32 | GPIO32, ADC1_CH4, TOUCH_CH9, XTAL_32K_P | ✔️ |
| 33 | IO33 | GPIO33, ADC1_CH5, TOUCH_CH8, XTAL_32K_N | ✔️ |
| 34 | IO34 | GPIO34, ADC1_CH6, VDET_1 | ⚠️Solo entrada |
| 35 | IO35 | GPIO35, ADC1_CH7, VDET_2 | ⚠️Solo entrada |
| 36 | VP | GPIO36, ADC1_CH0, S_VP | ⚠️Solo entrada |
| 37 | VP | GPIO37 | ⚠️Solo entrada |
| 38 | VP | GPIO38 | ⚠️Solo entrada |
| 39 | VN | GPIO39, ADC1_CH3, S_VN | ⚠️Solo entrada |
| EN | EN | CHIP_PU, Reset | ❌ |
