En la entrada anterior vimos los distintos pines del ESP8266 y sus funcionalidades. Pero ya comentamos, que no todos los pines son seguros de usar en nuestros proyectos.
Esto es debido a que algunos pines tienen funciones específicas o desempeñan un papel crucial en el proceso de arranque del dispositivo. Si no se utilizan correctamente, esto podemos generar un conflicto y conseguir que nuestro proyecto no arranque, o incluso romper algo.
De los 17 GPIO (0 a 16):
- 6 GPIO (GPIO6 a GPIO11) son usados para conectar por SPI con la memoria flash, por lo que no podemos usarlos.
- Los GPIO0, GPIO2 y GIPO15 intervienen en el arranque, con las consideraciones que hemos visto en el apartado anterior.
- Los GPIO1 y GPIO3 son usados para comunicación Serial (UART)
Más información sobre detalles del hardware del ESP8266, en especial sobre los pines de configuración en la entrada Detalles de hardware y pins del ESP8266
Resumen de los pines
Para evitar contratiempos y asegurarnos de utilizar los pines de manera adecuada, tenemos la siguiente tabla de referencia. Nos permite verificar de un vistazo qué pines son seguros para su uso y cuáles tienen funciones específicas que debemos tener en cuenta.
Antes de iniciar cualquier proyecto con el ESP8266, es altamente recomendable consultar esta tabla de referencia y familiarizarse con las características de cada pin. Esto nos permitirá tomar decisiones informadas y evitar posibles inconvenientes en el desarrollo de nuestros proyectos.
{ “columns”: [ { “key”: “gpio”, “header”: “GPIO”, “width”: “80px”, “class”: “gpio-num” }, { “key”: “name”, “header”: “Name”, “width”: “100px”, “class”: “pin-name” }, { “key”: “input”, “header”: “Input”, “width”: “1fr”, “type”: “text” }, { “key”: “output”, “header”: “Output”, “width”: “1fr”, “type”: “text” }, { “key”: “note”, “header”: “Notes”, “width”: “2fr”, “class”: “note-cell” } ], “filters”: [ { “label”: “All”, “value”: “ALL”, “active”: true }, { “label”: “Safe”, “value”: “safe” }, { “label”: “Caution”, “value”: “warn” }, { “label”: “Avoid”, “value”: “danger” }, { “label”: “I2C”, “value”: “I2C” }, { “label”: “SPI”, “value”: “SPI” } ], “data”: [ { “gpio”: 0, “name”: “D3”, “input”: [“⚠️Pulled Up”], “output”: [“✔️”], “note”: “Boot falla si pulled LOW. Conectado a botón FLASH.”, “status”: “warn” }, { “gpio”: 1, “name”: “TX”, “input”: [“⚠️TX”], “output”: [“✔️”], “note”: “HIGH durante boot. Boot falla si pulled LOW. Debug output en boot. No usable si se usa UART.”, “status”: “danger” }, { “gpio”: 2, “name”: “D4”, “input”: [“⚠️Pulled Up”], “output”: [“✔️”], “note”: “HIGH durante boot. Boot falla si pulled LOW. Built-in LED. TX1”, “status”: “warn” }, { “gpio”: 3, “name”: “RX”, “input”: [“✔️”], “output”: [“⚠️RX”], “note”: “HIGH durante boot. No usable si se usa UART.”, “status”: “warn” }, { “gpio”: 4, “name”: “D2”, “input”: [“✔️”], “output”: [“✔️”], “note”: “SDA (I2C)”, “status”: “safe” }, { “gpio”: 5, “name”: “D1”, “input”: [“✔️”], “output”: [“✔️”], “note”: “SCL (I2C)”, “status”: “safe” }, { “gpio”: 6, “name”: ”-”, “input”: [”❌”], “output”: [”❌”], “note”: “Usado por la memoria FLASH.”, “status”: “danger” }, { “gpio”: 7, “name”: ”-”, “input”: [”❌”], “output”: [”❌”], “note”: “Usado por la memoria FLASH.”, “status”: “danger” }, { “gpio”: 8, “name”: ”-”, “input”: [”❌”], “output”: [”❌”], “note”: “Usado por la memoria FLASH.”, “status”: “danger” }, { “gpio”: 9, “name”: ”-”, “input”: [”❌”], “output”: [”❌”], “note”: “Usado por la memoria FLASH.”, “status”: “danger” }, { “gpio”: 10, “name”: ”-”, “input”: [”❌”], “output”: [”❌”], “note”: “Usado por la memoria FLASH.”, “status”: “danger” }, { “gpio”: 11, “name”: ”-”, “input”: [”❌”], “output”: [”❌”], “note”: “Usado por la memoria FLASH.”, “status”: “danger” }, { “gpio”: 12, “name”: “D6”, “input”: [“✔️”], “output”: [“✔️”], “note”: “MISO (SPI)”, “status”: “safe” }, { “gpio”: 13, “name”: “D7”, “input”: [“✔️”], “output”: [“✔️”], “note”: “MOSI (SPI)”, “status”: “safe” }, { “gpio”: 14, “name”: “D5”, “input”: [“✔️”], “output”: [“✔️”], “note”: “SCLK (SPI)”, “status”: “safe” }, { “gpio”: 15, “name”: “D8”, “input”: [“⚠️Pulled to GND”], “output”: [“✔️”], “note”: “CS (SPI). LOW durante boot. Boot falla si pulled HIGH. No tiene Pull-Up.”, “status”: “warn” }, { “gpio”: 16, “name”: “D0”, “input”: [“⚠️No INT”], “output”: [“⚠️No PWM”, “⚠️No I2C”], “note”: “HIGH durante boot. Resistencia Pull-Down. Conectar a RST para Wake-Up.”, “status”: “warn” }, { “gpio”: “ADC0”, “name”: “A0”, “input”: [“⚠️Analog Input”], “output”: [”❌”], “note”: “Analog Input only.”, “status”: “warn” } ] }
En las próximas entradas iremos viendo distintas placas de placas de desarrollo como la NodeMCU que integran el ESP8266 y empezaremos su programación.

