Neste tutorial, vais aprender a ligar um módulo de ecrã TFT de 1,3″ 240×240 com um driver de ecrã ST7789 a um ESP32 (WEMOS Lolin32 lite).
As instruções e o código funcionam com algumas pequenas alterações para outros ESP32 e TFT, desde que o ecrã utilize o driver ST7789.
Peças Necessárias
Vais precisar de um ESP32 e de um ecrã TFT de 1,3 polegadas com resolução de 240×240 pixels e um driver ST7789. Alguns cabos e uma breadboard também podem ser úteis.

Ecrã TFT ST7789 de 1,3″

ESP32 lite

Cabo USB de Dados

Conjunto de Fios Dupont

Breadboard
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 Ecrã TFT ST7789 de 1,3″
O módulo de ecrã TFT de 1,3″ que vamos usar tem uma resolução de 240×240 pixels com 65K cores RGB. A imagem abaixo mostra a frente e o verso do módulo de ecrã:

)
O módulo usa o chip driver ST7789 e é controlado via interface SPI de 4 fios. A tensão de operação é 3,3V e o ecrã consome cerca de 30mA no máximo. Note que existem várias versões diferentes deste tipo de ecrã TFT.
Alguns módulos de ecrã TFT têm um conversor logic level que permite ligar o módulo a um Arduino UNO que funciona a 5V. Este aqui não tem, o que significa que não podes ligá-lo diretamente a um Arduino! Por isso usamos um ESP32 que opera com lógica CMOS a 3,3V.
Se quiseres usar um Arduino, precisas de converter os níveis lógicos. Existem várias formas de fazer isso (divisor de tensão, optoacoplador, IC de mudança de nível), mas a forma mais fácil é usar um level shifting module.
Finalmente, existem ecrãs semelhantes que usam o driver ST7735S em vez do ST7789. A configuração deste tutorial é para ecrãs com o driver ST7789 e não funcionará com outros.
Ligação do Ecrã TFT ST7735 de 1,8″ ao ESP32
Ligar o ecrã TFT ao ESP32 é simples, mas a identificação dos pinos no ecrã é um pouco confusa. Mostra pinos SDA e SCL, mas como tem interface SPI, esses pinos deveriam estar identificados como MOSI e SCLK.
O diagrama de ligação seguinte mostra como ligar o módulo de ecrã TFT ST7789 de 1,3″ a um WEMOS Lolin32 lite:

Aqui estão as ligações necessárias em formato de tabela. Note que este módulo de ecrã não tem chip select (CS), portanto não é necessário um pino para isso.
| Ecrã | ESP32 |
|---|---|
| RST | 16 |
| DC | 17 |
| SDA / MOSI | 23 |
| SCL / SCLK | 18 |
| BKL/BL | 22 |
| GND | GND |
| VCC | 3.3V |
Certifica-te de ligar o VCC do ecrã a 3,3V! Também deves usar os pinos hardware SPI para MOSI e SCLK. Dependendo do microcontrolador, os pinos hardware SPI podem variar. Podes encontrá-los selecionando a tua placa no Arduino IDE e executando o código abaixo.
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 os pinos necessários para hardware SPI – especificamente MOSI e SCLK. Os restantes pinos podes escolher livremente e o MISO não é usado.
Código para Ecrã TFT ST7735 com a Biblioteca TFT_eSPI
Nesta secção, mostro como usar a TFT_eSPI library para controlar o ecrã. Para instalar esta biblioteca, abre o Library Manager, procura por “TFT_eSPI” e clica em “INSTALL”. Após a instalação, deverá ficar assim:

De seguida, precisamos de criar a estrutura correta de pastas do projeto. Abre o Arduino IDE e cria um projeto “tft_test” e guarda-o (Guardar Como …). Isto criará uma pasta “tft_test” com o ficheiro “tft_test.ino” dentro. Nesta pasta, cria outro ficheiro chamado “tft_setup.h“. A estrutura da pasta do teu projeto deverá ficar assim

Se quiseres aprender mais sobre esta configuração e outras opções para configurar um ecrã TFT com a biblioteca TFT_eSPI, dá uma vista de olhos ao tutorial How to configure TFT_eSPI Library for TFT display.
Depois de criar a pasta do projeto com os dois ficheiros, copia o seguinte código de configuração para o ecrã TFT no ficheiro 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
e o código do sketch vai para o ficheiro 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() { }
Note que tft_setup.h está incluído no topo do programa. O código em si é fácil de entender. Criamos um objeto TFT_eSPI e constantes para o centro (cw, ch) e o tamanho s dos objetos a desenhar.
Na função setup inicializamos o ecrã TFT, preenchemos o ecrã com preto e rodamos para modo retrato.
De seguida, definimos a fonte, o seu tamanho, cor e alinhamento, e escrevemos o texto “Makerguides” no ecrã. Nas três linhas seguintes desenhamos o círculo vermelho, o quadrado verde e o triângulo azul. A saída no teu ecrã TFT deverá ser semelhante a esta:

Se não for, então algo está errado nas configurações em ou na ligação do ecrã TFT. Dá uma vista de olhos ao tutorial How to configure TFT_eSPI Library for TFT display para ver outras configurações disponíveis e o que podes tentar para resolver o problema.tft_test.ino
Conclusões
Neste tutorial aprendeste a ligar um módulo de ecrã TFT com driver ST7789 a um ESP32.
Usei a TFT_eSPI Library para controlar o ecrã. Também tentei a Adafruit-ST7735 Library mas não consegui fazê-la funcionar. Outros relataram o mesmo problema e tiveram sucesso com a ST7789_AVR library. No entanto, a ST7789_AVR library funciona apenas com placas AVR, mas não com um ESP32, por exemplo.
Se tiveres dificuldades com a biblioteca TFT_eSPI, o nosso How to configure TFT_eSPI Library for TFT display pode ajudar.
Se tiveres algum comentário, sente-te à vontade para deixar na secção de comentários.
Boas experiências a criar ; )

