De los nombres D a los números GPIO
D0 es el GPIO16, D1 el GPIO5, D2 el GPIO4, D3 el GPIO0, D4 el GPIO2, D5 el GPIO14, D6 el GPIO12, D7 el GPIO13 y D8 el GPIO15. En el core de Arduino para el ESP8266 puedes escribir D5 o 14: con la placa D1 mini seleccionada, las constantes D apuntan al GPIO correcto.
D3, D4 y D8: pines de arranque
El ESP8266 lee tres pines en el reset: para ejecutar tu sketch, el GPIO0 (D3) y el GPIO2 (D4) deben estar en ALTO y el GPIO15 (D8) en BAJO. La placa ya fija esos niveles con resistencias, así que los pines sirven como salidas y para botones siempre que nada fuerce el nivel equivocado al encender. D4 también controla el LED azul del módulo, encendido cuando el pin está en BAJO.
| Pin | En la D1 mini | Nivel en el reset | En la práctica |
|---|---|---|---|
| D3 · GPIO0 | En ALTO | ALTO ejecuta el sketch, BAJO entra en modo de programación | Un botón a GND vale |
| D4 · GPIO2 | En ALTO, LED | ALTO | No lo pongas en BAJO al encender |
| D8 · GPIO15 | En BAJO | BAJO | Sin pull-up ni módulos que lo lleven a ALTO |
D0, el pin especial
El GPIO16 (D0) no puede generar interrupciones y no tiene pull-up interno, solo un pull-down. Su tarea principal es despertar la placa del deep sleep: conecta D0 a RST y ESP.deepSleep() despierta la placa con su temporizador. WEMOS lo indica como el único pin sin interrupciones, PWM, I²C ni 1-Wire.
Entrada analógica y buses
A0 es la única entrada analógica. El ESP8266 solo admite de 0 a 1,0 V, y la D1 mini tiene un divisor que amplía el rango hasta unos 3,2 V. El I²C funciona por software en casi cualquier pin, por defecto D2 (SDA) y D1 (SCL). El SPI usa los pines de hardware fijos D5 (SCK), D6 (MISO) y D7 (MOSI), con el CS en D8 por defecto. TX y RX van al conversor USB-serie.
Tabla completa de pines de la D1 mini
| Pin | GPIO | Estado | Analógico | Funciones | Notas |
|---|---|---|---|---|---|
| D3 | GPIO0 | Con cuidado | No | PWM (analogWrite) | arranque: ALTO |
| TX | GPIO1 | Con cuidado | No | PWM (analogWrite), U0TXD | TX serie, UART TX |
| D4 | GPIO2 | Con cuidado | No | PWM (analogWrite), U1TXD (Serial1) | arranque: ALTO, LED |
| RX | GPIO3 | Con cuidado | No | PWM (analogWrite), U0RXD | RX serie, UART RX |
| D2 | GPIO4 | Libre | No | PWM (analogWrite) | I²C SDA |
| D1 | GPIO5 | Libre | No | PWM (analogWrite) | I²C SCL |
| D6 | GPIO12 | Libre | No | PWM (analogWrite), HSPI MISO | SPI MISO (RX) |
| D7 | GPIO13 | Libre | No | PWM (analogWrite), HSPI MOSI, RXD2 (Serial.swap) | SPI MOSI (TX) |
| D5 | GPIO14 | Libre | No | PWM (analogWrite), HSPI SCK | SPI SCK |
| D8 | GPIO15 | Con cuidado | No | PWM (analogWrite), HSPI CS, TXD2 (Serial.swap) | arranque: BAJO, SPI CS |
| D0 | GPIO16 | Con cuidado | No | PWM (analogWrite) | sin interrupciones, despertar del deep sleep |
| A0 | No | Solo entrada | ADC (TOUT) | No | solo analógico, de 0 a 3,2 V |
Los GPIO del 6 al 11 están conectados a la flash del módulo y no están en el conector. Los pines trabajan a 3,3 V y no están garantizados para 5 V, así que para señales de 5 V usa un conversor de nivel.
Preguntas frecuentes
¿Qué pines de la D1 mini puedo usar sin problemas?
D1, D2, D5, D6 y D7 (GPIO 5, 4, 14, 12 y 13) no tienen función en el arranque y admiten interrupciones y PWM. D3, D4 y D8 son pines de arranque, D0 tiene límites, y TX y RX pertenecen al puerto serie.
¿Cuál es la tensión máxima en A0 de la D1 mini?
Unos 3,2 V, gracias al divisor de la placa. El ESP8266 por sí solo admite de 0 a 1,0 V en su ADC, así que los módulos sueltos necesitan su propio divisor.
¿Cómo despierto la D1 mini del deep sleep?
Conecta D0 (GPIO16) a RST y llama a ESP.deepSleep() con el tiempo de sueño en microsegundos. Cuando se cumple el tiempo, el GPIO16 pone RST en BAJO y la placa se reinicia.
¿Por qué mi D1 mini no arranca con algo conectado a D8?
D8 es el GPIO15, que debe estar en BAJO durante el reset. Un módulo o un pull-up externo que lo mantenga en ALTO hace que el ESP8266 elija otro modo de arranque. Pasa esa conexión a D1, D2 o de D5 a D7.
¿Cuáles son los pines I2C y SPI de la D1 mini?
El I²C usa por defecto D2 (SDA) y D1 (SCL), y Wire.begin(SDA, SCL) lo lleva a casi cualquier otro pin. El SPI usa D5 (SCK), D6 (MISO) y D7 (MOSI), con el CS normalmente en D8.