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.
Label | GPIO | Input | Output | Notes |
D0 | GPIO16 | sin interrupt | ni PWM ni I2C | ALTO at boot usado para activar desde suspensión profunda |
D1 | GPIO5 | OK | OK | usado como SCL (I2C) |
D2 | GPIO4 | OK | OK | usado como SDA (I2C) |
D3 | GPIO0 | resistor a ALTO | OK | conectado al botón FLASH, falla boot si se pone BAJO |
D4 | GPIO2 | resistor a ALTO | OK | ALTO en boot conectado al LED, falla boot si se pone BAJO |
D5 | GPIO14 | OK | OK | SPI (SCLK) |
D6 | GPIO12 | OK | OK | SPI (MISO) |
D7 | GPIO13 | OK | OK | SP I (MOSI) |
D8 | GPIO15 | resistor a GND | OK | SPI (CS) falla boot si se pone ALTO |
RX | GPIO3 | OK | RX pin | ALTO at boot |
TX | GPIO1 | pin TX | OK | ALTO en el boot salida debug en boot, falla boot si se pone a BAJO |
A0 | ADC0 | 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
Pingback: Referencia de distribución de pines: ESP8266, qué pines GPIO usar
Pingback: ESP8266 (WiFi): Hacer que parpadee un LED desde el IDE de Arduino
Pingback: Programar ESP8266 desde el IDE Arduino y con sus librerías
Pingback: Servidor web básico NodeMCU con IDE de Arduino