Referencia de distribución de pines: ESP8266, qué pines GPIO usar

Este artículo es una guía para utilizar los GPIO del ESP8266: diagramas de pinout, sus funciones y cómo usarlos.

El chip ESP8266 12-E viene con 17 pines GPIO. No todos los GPIO están disponibles externamente en todas las placas de desarrollo ESP8266, no se recomienda el uso de algunos GPIO y otros tienen funciones muy específicas.

Con esta guía se aprende a utilizar correctamente los GPIO ESP8266, evitando horas de frustración al utilizar los pines más adecuados para sus proyectos.

Configuración de pines del chip ESP8266 12-E

La siguiente figura ilustra el pinout del módulo ESP8266 12-E. Este diagrama sirve si se utiliza un chip básico ESP8266 en los proyectos.

Actualmente, existe una gran variedad de placas de desarrollo con el chip ESP8266, que se diferencian en la cantidad de GPIO accesibles, eltamaño, factor de forma, etc...

Las placas ESP8266 más utilizadas son ESP-01, ESP8266-12E NodeMCU Kit y el Wemos D1 Mini.

ESP8266-01 Configuración de pines

Si está usando un módulo ESP8266-01, puede usar el siguiente diagrama GPIO como referencia.

Kit NodeMCU con ESP8266 12-E

A continuación se muestra el diagrama de pines del kit NodeMCU con el módulo ESP8266 12-E.

Pines de Wemos D1 Mini

La siguiente figura muestra el pinout de WeMos D1 Mini.

ESP8266 Periféricos

Esta es la lista de periféricos disponibles en un ESP8266:

  • 17 GPIO (General Purpuse Input/Output)
  • SPI (Serial Peripheral Interface)
  • I2C (implementado por software)
  • Interfaces I2S (Integrated Interchip Sound) con DMA (Direct Memory Access)
  • UART (Universal Asynchronous Receiver-Transmitter)
  • ADC de 10 bits (Analog Digital Converter)

Los mejores pines para utilizar en ESP8266

Una cosa importante a tener en cuenta sobre ESP8266 es que el número de GPIO no coincide con la etiqueta en la serigrafía de la placa. Por ejemplo, D0 corresponde a GPIO16 y D1 corresponde a GPIO5.

La siguiente tabla muestra la correspondencia entre las etiquetas de la serigrafía y el número GPIO, así como qué pines son los mejores para usar en tus proyectos y con cuáles debes tener cuidado.

Está bien usar los pines resaltados en verde. Los resaltados en amarillo se pueden usar, pero se debe prestar atención porque pueden tener un comportamiento inesperado, principalmente en el arranque. No se recomienda utilizar los pines resaltados en rojo como entradas o salidas.

LabelGPIOInputOutputNotes
D0GPIO16sin interruptni PWM ni I2C ALTO at boot 
usado para activar
desde suspensión profunda
D1GPIO5 OK  OK usado como  SCL  (I2C)
D2GPIO4 OK  OK usado como  SDA  (I2C)
D3GPIO0resistor a ALTO OK conectado al botón FLASH,
falla boot si se pone BAJO
D4GPIO2resistor a ALTO OK  ALTO en boot 
conectado al LED,
falla boot si se pone BAJO
D5GPIO14 OK  OK  SPI  (SCLK)
D6GPIO12 OK  OK  SPI  (MISO)
D7GPIO13 OK  OK  SP I (MOSI)
D8GPIO15resistor a GND OK  SPI  (CS)
falla boot si se pone ALTO
RXGPIO3 OK  RX pin  ALTO at boot 
TXGPIO1 pin TX  OK  ALTO en el boot 
salida debug en boot,
falla boot si se pone a BAJO
A0ADC0 Entrada Analógica  X 

Continuamos con un análisis más detallado de los GPIO ESP8266 y sus funciones.

GPIO conectados al chip de memoria Flash

GPIO6 a GPIO11 se conectan generalmente a un chip de memoria flash en las placas ESP8266. Por lo tanto, no se recomienda el uso de estos pines.

Pines utilizados durante el arranque

Puede ocurrir que el ESP8266 no arranque si algunos pines se colocan en BAJO o ALTO. La siguiente lista muestra el estado de los pines en BOOT:

  • GPIO16: el pin está alto en BOOT
  • GPIO0: error de arranque si pone en BAJO
  • GPIO2: el pin está alto en BOOT, falla el arranque si se pone a BAJO
  • GPIO15: error de arranque si se pone a ALTO
  • GPIO3: el pin está alto en BOOT
  • GPIO1: el pin está alto en el ARRANQUE, el arranque falla si se pone BAJO
  • GPIO10: el pin está alto en BOOT
  • GPIO9: el pin está alto en BOOT

Pines ALTOS en el arranque

Hay ciertos pines que se ponen a un nivel de 3,3 V cuando arranca el ESP8266. Esto puede ser problemático si se tiene relés u otros periféricos conectados a esos GPIO.

Los siguientes GPIO se ponen a un nivel ALTO en el arranque (boot):

  • GPIO16
  • GPIO3
  • GPIO1
  • GPIO10
  • GPIO9

Además, los otros GPIO, excepto GPIO5 y GPIO4, pueden ponerse a un nivel de bajo voltaje en el arranque, lo que puede ser problemático si están conectados a transistores o relés. A continuaci´m una tabla que detalla el estado y el comportamiento de cada GPIO en el arranque observados con osciloscopio.

Sumario de comportamiento de GPIOs

Este es el listado de los comportamientos de los GPIOs del ESP8266 medido con osciloscopio.

NodeMCU  
GPIO
ESP8266  
GPIO
Comportamiento
Modo Flash
Comportamiento
Programación Arduino
sin acciones
Comportamiento
Arduino pone
GPIOs en bajo
D0 16 Alto Alto durante boot, a bajo luego ~110ms (to ~1V?) Alto durante boot, a bajo luego ~110ms (to ~1V)
D1 5 Bajo Bajo Bajo
D2 4 Bajo Bajo Bajo
D3 0 Bajo luego fluctúa Varía, estabiliza en alto en ~100ms Varía, estabiliza en alto en ~110ms
D4 2 Varía, estabiliza en alto en ~60ms Varía, estabiliza en alto en ~70ms Varía, estabiliza en bajo en ~110ms
D5 14 Alto Alto, luego bajo en ~110ms Alto, luego bajo en ~110ms
D6 12 Alto Alto, luego bajo en ~110ms Alto, luego bajo en ~110ms
D7 13 Alto Alto, luego bajo en ~110ms Alto, luego bajo en ~110ms
D8 15 Bajo Bajo, con ruido, ~110ms Bajo, con ruido, ~110ms
D9 3 Bajo Bajo y luego de ~50ms Alto Bajo y luego de ~50ms Alto, ~110ms después bajo
D10 1 Bajo Bajo ~50ms luego Alto Bajo ~50ms luego Alto ~110ms luego Bajo

GPIO4 y GPIO5 son los GPIO más seguros para usar si desea operar relés.

Entrada analógica

El ESP8266 solo admite lectura analógica en un GPIO. Ese GPIO se llama ADC0 y suele estar marcado en la serigrafía como A0.

El voltaje de entrada máximo del pin ADC0 es de 0 a 1 V si se usa el chip básico ESP8266. Usando una placa de desarrollo como el kit ESP8266 12-E NodeMCU, el rango de entrada de voltaje es de 0 a 3,3 V, porque estas placas contienen un divisor de voltaje interno.

Puedes aprender a usar la lectura de señales analógicas con el ESP8266 con la siguiente guía:

LED integrado

La mayoría de las placas de desarrollo ESP8266 tienen un LED integrado. Este LED suele estar conectado a GPIO2.

El LED funciona con lógica invertida. Envíe una señal ALTA para apagarlo y una señal BAJA para encenderlo.

Pin RST

Cuando el pin RST se pone a BAJO, el ESP8266 se reinicia. Esto es lo mismo que presionar el botón integrado RESET.

GPIO0

Cuando GPIO0 se pone a BAJO se configura el ESP8266 en modo de carga en el arranque. Esto es lo mismo que presionar el botón integrado FLASH/BOOT.

GPIO16

GPIO16 se puede usar para despertar el ESP8266 del modo de suspensión profunda. Para activar el ESP8266 de la suspensión profunda, GPIO16 debe estar conectado al pin RST. Aprenda a poner el ESP8266 en modo de suspensión profunda:

I2C

El ESP8266 no tiene pines I2C en el hardware, pero se pueden implementar con el software. Entonces puede usar cualquier GPIO como I2C. Por lo general, los siguientes GPIO se utilizan como pines I2C:

  • GPIO5: SCL
  • GPIO4: SDA

SPI

Los pines utilizados como SPI en el ESP8266 son:

  • GPIO12: MISO
  • GPIO13: MOSI
  • GPIO14: SCLK
  • GPIO15: CS

Pines PWM

ESP8266 permite PWM por software en todos los pines de E/S: GPIO0 a GPIO15. Las señales PWM en ESP8266 tienen una resolución de 10 bits. Aprenda a usar los pines ESP8266 PWM:

Pines de interrupción

El ESP8266 admite interrupciones en cualquier GPIO, excepto en GPIO16.

Conclusión

Esperamos que haya encontrado útil esta guía para los GPIO ESP8266. Si tiene algunos consejos sobre cómo usar los GPIO ESP8266 correctamente, nos puede escribir un comentario a ecarletti@robots-argentina.com.ar