En este tutorial aprenderás cómo conectar un módulo de pantalla TFT de 1.3″ 240×240 con un controlador de pantalla ST7789 a un ESP32 (WEMOS Lolin32 lite).
Las instrucciones y el código funcionarán con algunos cambios menores para otros ESP32 y TFT, siempre que la pantalla use el controlador ST7789.
Partes necesarias
Necesitarás un ESP32 y una pantalla TFT de 1.3 pulgadas con resolución de 240×240 píxeles y un controlador ST7789. También pueden ser útiles algunos cables y una protoboard.

Pantalla TFT ST7789 de 1.3″

ESP32 lite

Cable USB de datos

Juego de cables Dupont

Protoboard
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Módulo de pantalla TFT ST7789 de 1.3″
El módulo de pantalla TFT de 1.3″ que vamos a usar tiene una resolución de 240×240 píxeles con 65K colores RGB. La imagen a continuación muestra el frente y la parte trasera del módulo:

)
El módulo usa el chip controlador ST7789 y se controla mediante una interfaz SPI de 4 hilos. El voltaje de operación es de 3.3V y la pantalla consume alrededor de 30mA como máximo. Ten en cuenta que existen muchas versiones diferentes de este tipo de pantalla TFT.
Algunos módulos de pantalla TFT tienen un logic level convertidor que permite conectar el módulo a un Arduino UNO que funciona a 5V. Este módulo no lo tiene, lo que significa que no puedes conectarlo directamente a un Arduino! Por eso usamos un ESP32 que funciona con lógica CMOS de 3.3V.
Si quieres usar un Arduino, necesitas convertir los niveles lógicos. Hay varias formas de hacerlo (divisor de voltaje, optoacoplador, IC de cambio de nivel), pero lo más sencillo es conseguir un level shifting module.
Finalmente, existen pantallas similares que usan el controlador ST7735S en lugar del ST7789. La configuración de este tutorial es para pantallas con el controlador ST7789 y no funcionará con otras.
Conexión de pantalla TFT ST7735 de 1.8″ con ESP32
Conectar la pantalla TFT al ESP32 es sencillo, pero el etiquetado de los pines en la pantalla puede ser confuso. Muestra pines SDA y SCL, pero como tiene interfaz SPI, estos pines deberían estar etiquetados como MOSI y SCLK.
El siguiente diagrama de conexiones muestra cómo conectar el módulo de pantalla TFT ST7789 de 1.3″ a un WEMOS Lolin32 lite:

Y aquí están las conexiones necesarias en forma de tabla. Ten en cuenta que este módulo de pantalla no tiene chip select (CS), por lo que no se necesita un pin para ello.
| Pantalla | ESP32 |
|---|---|
| RST | 16 |
| DC | 17 |
| SDA / MOSI | 23 |
| SCL / SCLK | 18 |
| BKL/BL | 22 |
| GND | GND |
| VCC | 3.3V |
Asegúrate de conectar el VCC de la pantalla a 3.3V. También deberías usar los pines hardware SPI para MOSI y SCLK. Dependiendo del microcontrolador, los pines hardware SPI pueden variar. Puedes encontrarlos seleccionando tu placa en el Arduino IDE y ejecutando el siguiente código.
void setup() {
Serial.begin(115200);
Serial.print("MOSI: ");
Serial.println(SDA / MOSI);
Serial.print("MISO: ");
Serial.println(MISO);
Serial.print("SCL / SCLK: ");
Serial.println(SCK);
Serial.print("CS / SS: ");
Serial.println(SS);
}
void loop() { }
Este código imprime los pines que necesitas para hardware SPI, específicamente MOSI y SCLK. Los demás pines puedes elegirlos libremente y MISO no se usa.
Código para pantalla TFT ST7735 con la biblioteca TFT_eSPI
En esta sección te muestro cómo usar la TFT_eSPI library para controlar la pantalla. Para instalar esta biblioteca abre el Library Manager, busca «TFT_eSPI» y pulsa «INSTALL». Tras la instalación debería verse así:

A continuación necesitamos crear la estructura correcta de carpetas para el proyecto. Abre tu Arduino IDE y crea un proyecto llamado «tft_test» y guárdalo (Guardar como…). Esto creará una carpeta «tft_test» con el archivo «tft_test.ino» dentro. En esta carpeta crea otro archivo llamado «tft_setup.h«. La carpeta de tu proyecto debería verse así

Si quieres aprender más sobre esta configuración y otras opciones para configurar una pantalla TFT con la biblioteca TFT_eSPI, echa un vistazo al tutorial How to configure TFT_eSPI Library for TFT display.
Después de crear la carpeta del proyecto con los dos archivos, copia el siguiente código de configuración para la pantalla TFT en el archivo tft_setup.h:
// 1.3" TFT Display (GMT130 V.10), // no CS pin // 240x240, ST7789 // tft_setup.h #define ST7789_DRIVER #define TFT_WIDTH 240 #define TFT_HEIGHT 240 #define TFT_RGB_ORDER TFT_BGR #define TFT_CS -1 #define TFT_RST 16 #define TFT_DC 17 #define TFT_MOSI 23 // SDA // HW MOSI #define TFT_SCLK 18 // SCL // HW SCL #define TFT_MISO 19 // not used #define TFT_BL 22 // LED back-light #define TFT_BACKLIGHT_ON HIGH #define LOAD_GLCD #define LOAD_FONT2 #define LOAD_FONT4 #define LOAD_FONT6 #define LOAD_FONT7 #define LOAD_FONT8 #define LOAD_GFXFF #define SMOOTH_FONT #define SPI_FREQUENCY 27000000 #define SPI_READ_FREQUENCY 20000000 #define SPI_TOUCH_FREQUENCY 2500000
y el código para el sketch va en el archivo tft_test.ino:
// tft_test.ino
#include "tft_setup.h"
#include"TFT_eSPI.h"
TFT_eSPI tft = TFT_eSPI();
const int cw = tft.width()/2;
const int ch = tft.height()/2;
const int s = min(cw/4,ch/4);
void setup(void) {
tft.init();
tft.fillScreen(TFT_BLACK);
tft.setRotation(1);
tft.setTextFont(1);
tft.setTextSize(2);
tft.setTextColor(TFT_WHITE, TFT_BLACK);
tft.setTextDatum(CC_DATUM);
tft.drawString("Makerguides", ch, cw+s);
tft.fillCircle(ch, cw/2+s/2, s/2, TFT_RED);
tft.fillRect(1.5*ch-s, cw/2, s, s, TFT_GREEN);
tft.fillTriangle(ch/2, cw/2, ch/2+s, cw/2, ch/2, cw/2+s, TFT_BLUE);
}
void loop() { }
Ten en cuenta que tft_setup.h se incluye al inicio del programa. El código es fácil de entender. Creamos un objeto TFT_eSPI y constantes para el centro (cw, ch) y el tamaño s de los objetos a dibujar.
En la función setup inicializamos la pantalla TFT, la llenamos de negro y la rotamos a modo retrato.
Luego, configuramos la fuente, su tamaño, color y alineación, y escribimos el texto «Makerguides» en la pantalla. En las siguientes tres líneas dibujamos el círculo rojo, el cuadrado verde y el triángulo azul. La salida en tu pantalla TFT debería ser similar a esta:

Si no es así, algo está mal en la configuración de o en el cableado de la pantalla TFT. Consulta el tutorial How to configure TFT_eSPI Library for TFT display para ver qué otras configuraciones están disponibles y qué podrías probar para solucionar el problema.tft_test.ino
Conclusiones
En este tutorial aprendiste cómo conectar un módulo de pantalla TFT con controlador ST7789 a un ESP32.
Usé la TFT_eSPI Library para controlar la pantalla. También probé la Adafruit-ST7735 Library pero no pude hacerla funcionar. Otros han reportado el mismo problema y han tenido éxito con la ST7789_AVR library en su lugar. Sin embargo, la ST7789_AVR library solo funciona con placas AVR, pero no con un ESP32, por ejemplo.
Si tienes dificultades con la biblioteca TFT_eSPI, nuestro How to configure TFT_eSPI Library for TFT display podría ayudarte.
Si tienes algún comentario, no dudes en dejarlo en la sección de comentarios.
¡Feliz bricolaje ; )

