Pinout del ESP8266
El ESP8266 ofrece la ventaja de disponer de una cantidad considerable de pines GPIO según tus necesidades. Sin embargo, es crucial prestar mucha atención a los detalles de la asignación de pines. No todos los pines GPIO del ESP8266 son seguros para usar.
Es importante mencionar que la referencia de pines que se proporciona a continuación corresponde a la ampliamente utilizada placa de desarrollo ESP8266 NodeMCU de 30 pines.

Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Periféricos y E/S de ESP8266
El ESP8266 NodeMCU cuenta con un total de 17 pines GPIO distribuidos a lo largo de ambos lados de la placa de desarrollo mediante cabeceras de pines. Estos pines son versátiles y pueden asignarse a diversas funciones periféricas, incluyendo:
- 9 pines de entrada/salida digitales:
- 1 canal ADC: Proporciona un único canal con precisión de 10 bits en un ADC SAR.
- 2 interfaces UART: Con soporte para control de flujo.
- 4 salidas PWM: Ofrecen cuatro pines PWM para regular aspectos como la velocidad del motor o el brillo de los LEDs.
- 2 interfaces SPI: Equipadas con dos interfaces SPI para conectar diversos sensores y periféricos.
- 1 interfaz I2C: Incorporando una interfaz I2C para conectar una variedad de sensores y periféricos.
- 1 interfaz I2S: Incluyendo una interfaz I2S para incorporar sonido en tu proyecto.
ESP8266 Esquema de pines
El ESP8266 NodeMCU cuenta con un total de 30 pines, organizados para una funcionalidad fácil de usar. Consulta el diagrama de pines a continuación para explorar la distribución:

Ahora, vamos a sumergirnos en los pines individuales del ESP8266 y desentrañar sus funciones específicas.
Pines de Entrada/Salida Digital
Entre los 30 pines de la placa ESP8266 NodeMCU, puedes usar 9 pines para la entrada/salida digital. Entre estos 9 pines, 5 pines son seguros para usar; los otros 4 pines también pueden usarse como entrada/salida digital, pero con precaución.
Dentro de los 30 pines de la placa ESP8266 NodeMCU, 9 pines pueden utilizarse para fines de entrada/salida digitales. En detalle:
- 5 pines son aptos para usar como pines de entrada/salida digitales.
- 4 pines también pueden usarse como pines de entrada/salida digitales, pero requieren un manejo cuidadoso.
- Todos los 9 pines pueden configurarse con resistencias de pull-up o pull-down internas (en el chip), o configurarse en alta impedancia.
La tabla de abajo muestra qué pines son seguros para usar y qué pines deben usarse con precaución.
| GPIO | Pin Label | Safe to use? | Reason |
|---|---|---|---|
| GPIO16 | D0 | HIGH at boot, used to wake up from deep sleep | |
| GPIO5 | D1 | ||
| GPIO4 | D2 | ||
| GPIO0 | D3 | connected to FLASH button, boot fails if pulled LOW. On-board 10k external pull-up resistor | |
| GPIO2 | D4 | HIGH at boot, boot fails if pulled LOW. On-board 10k external pull-up resistor | |
| GPIO14 | D5 | ||
| GPIO12 | D6 | ||
| GPIO13 | D7 | ||
| GPIO15 | D8 | Required for boot, boot fails if pulled HIGH. On-board 10k external pull-down resistor | |
| GPIO3 | RX | RX pin, used for flashing and debugging | |
| GPIO1 | TX | TX pin, used for flashing and debugging | |
| GPIO6 | CLK | Connected to Flash memory | |
| GPIO7 | SDO | Connected to Flash memory | |
| GPIO11 | CMD | Connected to Flash memory | |
| GPIO8 | SD1 | Connected to Flash memory | |
| GPIO9 | SD2 | Connected to Flash memory | |
| GPIO10 | SD3 | Connected to Flash memory | |
| ADC0 | A0 | Can be used as the analog input pin only. |
| Legend | |
|---|---|
| These are your top-priority pins, absolutely safe for use. No concerns here. | |
| Pay close attention because their behavior, particularly during boot, can be unpredictable. Also pay attention to their on-board external pull-up/pull-down resistors. Use them only when absolutely necessary. | |
| These pins should NOT be used as digital input/output pins. |
La imagen de abajo muestra qué pines GPIO se pueden usar como pines de entrada/salida digitales.

Cómo programar para pines de entrada/salida digitales de ESP8266.
Puede utilizar las siguientes funciones para manipular los pines de entrada/salida digitales del ESP8266.
Por favor, ten en cuenta que debes usar la etiqueta del pin en el código. Por ejemplo, el pin GPIO5 (D1):
Ejemplos de uso del pin de entrada digital del ESP8266:
Ejemplos de uso del pin de salida digital del ESP8266:
Pines del ADC
El ESP8266 viene equipado con un convertidor analógico-digital (ADC) de precisión de 10 bits, que le permite distinguir 1024 (2^10) niveles analógicos distintos. Esencialmente, convierte voltajes de entrada dentro del rango de 0 a 3,3 V (voltaje de operación) en valores enteros que van desde 0 hasta 1024. En consecuencia, esta configuración genera una resolución de 3,3 voltios divididos por 1024 unidades, equivalente a 0,0032 voltios (3,2 mV) por unidad.

Ejemplo de código para usar el ADC en ESP8266:
Ejemplos de sensores analógicos que utilizan el pin A0 del ESP8266:
Pines SPI
El ESP8266 dispone de dos interfaces SPI (SPI y HSPI) en modos maestro y esclavo. Estas interfaces SPI también soportan las características SPI de uso general que se enumeran a continuación:
- 4 modos de temporización de la transferencia en formato SPI
- Hasta 80 MHz y los relojes divididos de 80 MHz
- FIFO de 64 bytes

Ejemplos de uso de los pines SPI del ESP8266:
Pines I2C
El ESP8266 no tiene pines I2C integrados, pero aún puedes hacer que funcione mediante 'bitbanging'. Funciona bien, y el ESP8266 es lo suficientemente rápido como para igualar el rendimiento que se espera de Arduino.
Por defecto, GPIO4 (SDA) y GPIO5 (SCL) se configuran como pines I2C para simplificar las cosas para quienes usan código Arduino existente, bibliotecas y sketches.
Sin embargo, tienes la libertad de elegir otros dos pines GPIO para I2C utilizando wire.begin(SDA, SCL) en el IDE de Arduino.

Ejemplos de uso de los pines I2C del ESP8266:
Pines UART
El ESP8266 cuenta con dos interfaces UART, UART0 y UART2, que permiten la comunicación asíncrona (RS232 y RS485) a velocidades impresionantes de hasta 4,5 Mbps. Esta capacidad los hace adecuados para aplicaciones de transferencia de datos de alta velocidad.
- UART0 (los pines TXD0, RXD0, RST0 y CTS0) se utiliza para la comunicación.
- UART1 (el pin TXD1) solo presenta una señal de transmisión de datos y normalmente se utiliza para imprimir registros.

RXD0 y TXD0 funcionan como los pines de control serie y de arranque para el módulo ESP, desempeñando un papel crucial en la comunicación con el módulo. Son especialmente importantes durante el proceso de carga del bootloader. Por lo tanto, debes tener cuidado al usarlos, ya que están conectados al convertidor USB-serial y, por lo tanto, recibirán tráfico USB.
Pines PWM
Cada pin GPIO del ESP8266, que va desde GPIO0 hasta GPIO15, es programable para generar salidas de modulación por ancho de pulso (PWM).
La señal PWM en el ESP8266 ofrece una resolución de 10 bits, brindando un control preciso de la salida. Además, el rango de frecuencia del PWM es configurable, variando desde 1000 μs hasta 10000 μs, lo que equivale a un rango de frecuencia flexible entre 100 Hz y 1 kHz. Esta adaptabilidad la hace adecuada para una amplia gama de aplicaciones que requieren diferentes configuraciones de PWM.
Pines de alimentación
- El pin VIN ofrece una opción conveniente para alimentar directamente el ESP8266 y sus periféricos cuando se suministra una fuente de alimentación regulada de 5 V.
- El pin 3V3 sirve como la salida del regulador de voltaje a bordo, capaz de proporcionar un sustancial 600 mA. Esto lo convierte en una fuente confiable para alimentar dispositivos y componentes conectados.
- GND funciona como el pin de tierra, estableciendo el punto de referencia eléctrico para el ESP8266 y los dispositivos conectados. Garantiza una tierra común para el sistema, manteniendo conexiones eléctricas estables y adecuadas.
Pines de interrupción
Cada GPIO (Entrada/Salida de Propósito General) en el ESP8266, excepto GPIO16, puede configurarse como una interrupción.
Esto significa que cada GPIO, desde GPIO0 hasta GPIO15, puede configurarse para activar una interrupción, lo que permite al ESP8266 responder a eventos específicos o cambios en los estados de entrada. GPIO16, sin embargo, no admite esta configuración de interrupción. Esta flexibilidad en el uso de interrupciones mejora la versatilidad del ESP8266 para manejar eventos en tiempo real e interacciones con dispositivos externos.
Pines SDIO
El ESP8266 está equipado con una única interfaz SDIO esclava (Secure Digital Input/Output Interface) diseñada para conectar tarjetas SD. Soporta tanto SDIO v1.1 en modo de 4 bits a 25 MHz como SDIO v2.0 en modo de 4 bits a 50 MHz.
Esta característica permite una integración fluida de las tarjetas SD con el ESP8266, proporcionando capacidades de transferencia de datos a alta velocidad y compatibilidad con diferentes versiones de SDIO. Ya sea utilizando SDIO v1.1 o v2.0, el ESP8266 ofrece versatilidad para conectar y acceder a los datos de las tarjetas SD de manera eficiente.
Pines de control
- El pin EN (también conocido como CH_PD o Chip Power Down) actúa como el pin de habilitación para el ESP8266 y se mantiene en alto por defecto. Cuando se establece en ALTO, el chip queda habilitado, permitiendo su funcionamiento normal. Por el contrario, cuando se lleva a BAJO, el chip se desactiva, apagándolo efectivamente.
- El pin RST funciona como el pin de reinicio para el ESP8266, y se mantiene en alto por defecto. Cuando se lleva brevemente a tierra, se activa un reinicio para el ESP8266, similar a pulsar el botón RST en la placa.
- El pin FLASH es utilizado por el ESP8266 para determinar si debe arrancar en el bootloader. Mantener el pin en BAJO durante el encendido inicia el proceso de arranque en el bootloader, similar a pulsar el botón FLASH en la placa.
- El pin WAKE se emplea para despertar el ESP8266 del modo de sueño profundo, permitiendo que el dispositivo reanude su funcionamiento normal después de haber estado en un estado de bajo consumo.