Conexión del ESP8266 NodeMCU con la pantalla TFT ST7789
Este tutorial muestra cómo conectar la tarjeta ESP8266 NodeMCU (ESP-12E) con la pantalla TFT ST7789.
El módulo TFT ST7789 contiene un controlador de pantalla con el mismo nombre: ST7789. Es una pantalla a color que utiliza el protocolo de interfaz SPI y requiere 3, 4 o 5 pines de control; es de bajo costo y fácil de usar.
Esta pantalla es de tipo IPS, viene en distintos tamaños (1.3″, 1.54″ …) pero todas deben tener la misma resolución de 240×240 pixeles, lo que significa que tiene 57600 pixeles. Este módulo funciona únicamente con 3.3V y no admite 5V.
TFT: Thin-Film Transistor (transistor de película delgada).
SPI: Serial Peripheral Interface (interfaz periférica serial).
IPS: In-Plane Switching (conmutación en el plano).
La siguiente imagen muestra un módulo de pantalla ST7789 fabricado por Adafruit Industries:

A continuación se muestra otra versión del módulo de pantalla ST7789. Esta no tiene pin CS (chip select); está conectado internamente a GND:

Hardware necesario para el proyecto:
- Tarjeta NodeMCU
- Módulo de pantalla TFT ST7789 (1.3″, 1.54″ …)
- Cable Micro USB (para programar y alimentar todo el circuito)
- Protoboard
- Cables de conexión (jumpers)
Circuito del NodeMCU con la pantalla TFT ST7789:
El diagrama esquemático del circuito del proyecto se muestra a continuación.
El módulo de pantalla ST7789 mostrado en el diagrama del circuito tiene 7 pines (de derecha a izquierda): GND (tierra), VCC, SCL (reloj serial), SDA (datos serial), RES (reset), DC (o D/C: datos/comando) y BLK (retroiluminación).
Conectar el pin BLK es opcional. La retroiluminación se apaga cuando el pin BLK se conecta a tierra (GND).
El módulo de pantalla TFT ST7789 se conecta a la tarjeta NodeMCU de la siguiente manera:
GND se conecta al pin GND de la tarjeta NodeMCU,
VCC y BL se conectan al pin 3V3,
el pin SCL se conecta a D5 (ESP8266EX GPIO14),
el pin SDA se conecta a D7 (ESP8266EX GPIO13),
el pin RES se conecta a D2 (ESP8266EX GPIO4),
el pin DC se conecta a D1 (ESP8266EX GPIO5).
Si el módulo de pantalla tiene un pin CS (Chip Select), entonces debe conectarse al pin D8 (GPIO15) del NodeMCU.
Los pines D5 (GPIO14) y D7 (GPIO13) son los pines del módulo SPI por hardware del microcontrolador ESP8266EX, correspondientes a SCK (reloj serial) y MOSI (master-out slave-in).
Código del NodeMCU con la pantalla TFT ST7789:
El código de Arduino que se muestra a continuación requiere dos bibliotecas de Adafruit Industries:
La primera biblioteca es un controlador para la pantalla TFT ST7789 que se puede instalar desde el gestor de bibliotecas del IDE de Arduino (Sketch —> Include Library —> Manage Libraries …, en el cuadro de búsqueda escribe “st7789” e instala la de Adafruit).
La segunda biblioteca es la biblioteca de gráficos de Adafruit, que también se puede instalar desde el gestor de bibliotecas del IDE de Arduino.
Ambas bibliotecas se pueden instalar manualmente; primero descárgalas desde los siguientes 2 enlaces:
Biblioteca TFT ST7789 de Adafruit —-> enlace directo
Biblioteca de gráficos de Adafruit —-> enlace directo
Después de la descarga, ve al IDE de Arduino —> Sketch —> Include Library —> Add .ZIP Library … y busca el archivo .zip (descargado previamente).
Haz lo mismo con el otro archivo de biblioteca.
Notas:
Los 2 archivos de biblioteca se incluyen en el código principal como se muestra a continuación.
| #include <Adafruit_GFX.h> // Core graphics library #include <Adafruit_ST7789.h> // Hardware-specific library for ST7789 |
Las conexiones de los pines del módulo TFT ST7789 (CS, RST y DC) se definen como se muestra a continuación:
| // ST7789 TFT module connections #define TFT_DC D1 // TFT DC pin is connected to NodeMCU pin D1 (GPIO5) #define TFT_RST D2 // TFT RST pin is connected to NodeMCU pin D2 (GPIO4) #define TFT_CS D8 // TFT CS pin is connected to NodeMCU pin D8 (GPIO15) |
Los demás pines de la pantalla (SDA y SCL) se conectan a los pines SPI por hardware del NodeMCU (D7 y D5 respectivamente).
La biblioteca Adafruit ST7789 se inicializa con esta línea:
| // Initialize Adafruit ST7789 TFT library Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST); |
Y la pantalla TFT se inicializa mediante el siguiente comando:
| // if the display has CS pin try with SPI_MODE0 tft.init(240, 240, SPI_MODE2); // Init ST7789 display 240×240 pixel |
Es posible que la pantalla no funcione si tiene un pin CS; prueba con SPI_MODE0, que es el modo predeterminado de la biblioteca, o simplemente usa: tft.init(240, 240);
El resto del código se explica mediante los comentarios.
Código completo de Arduino:

