In questo tutorial imparerai come interfacciare un modulo display TFT da 1,3″ 240×240 con driver ST7789 con un ESP32 (WEMOS Lolin32 lite).
Le istruzioni e il codice funzioneranno con alcune piccole modifiche anche per altri ESP32 e TFT, purché il display utilizzi il driver ST7789.
Componenti necessari
Ti serviranno un ESP32 e un display TFT da 1,3 pollici con risoluzione 240×240 pixel e un driver ST7789. Potrebbero tornare utili anche alcuni cavi e una breadboard.

Display TFT ST7789 da 1,3″

ESP32 lite

Cavo dati USB

Set di fili 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.
Modulo display TFT ST7789 da 1,3″
Il modulo display TFT da 1,3″ che useremo ha una risoluzione di 240×240 pixel con 65K colori RGB. L’immagine sotto mostra il fronte e il retro del modulo display:

)
Il modulo utilizza il chip driver ST7789 ed è controllato tramite un’interfaccia SPI a 4 fili. La tensione di funzionamento è 3,3V e il display assorbe circa 30mA al massimo. Nota che esistono molte versioni diverse di questo tipo di display TFT.
Alcuni moduli display TFT hanno un convertitore logic level che permette di collegare il modulo a un Arduino UNO che funziona a 5V. Questo qui non lo ha, quindi non puoi collegarlo direttamente a un Arduino! Perciò usiamo un ESP32 che funziona con logica CMOS a 3,3V.
Se vuoi usare un Arduino devi convertire i livelli logici. Ci sono vari modi per farlo (partitore di tensione, optoisolatore, IC level-shifting), ma il più semplice è procurarsi un level shifting module.
Infine, esistono display simili che usano il driver ST7735S invece del ST7789. La configurazione in questo tutorial è per display con driver ST7789 e non funzionerà con altri.
Collegare un display TFT ST7735 da 1,8″ con ESP32
Collegare il display TFT all’ESP32 è semplice, ma l’etichettatura dei pin sul display è un po’ confusa. Mostra i pin SDA e SCL, ma dato che ha un’interfaccia SPI, questi pin dovrebbero essere etichettati MOSI e SCLK.
Lo schema di collegamento seguente mostra come collegare il modulo display TFT ST7789 da 1,3″ a un WEMOS Lolin32 lite:

Ecco di nuovo le connessioni necessarie in forma tabellare. Nota che questo modulo display non ha chip select (CS) e quindi non serve un pin per questo.
| Display | ESP32 |
|---|---|
| RST | 16 |
| DC | 17 |
| SDA / MOSI | 23 |
| SCL / SCLK | 18 |
| BKL/BL | 22 |
| GND | GND |
| VCC | 3.3V |
Assicurati di collegare il VCC del display a 3,3V! Inoltre dovresti usare i pin hardware SPI per MOSI e SCLK. A seconda del microcontrollore i pin hardware SPI variano. Puoi trovarli selezionando la tua scheda nell’IDE Arduino e poi eseguendo il codice qui sotto.
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() { }
Il codice stampa i pin necessari per l’hardware SPI – specificamente MOSI e SCLK. Gli altri pin puoi sceglierli liberamente e MISO non è usato.
Codice per display TFT ST7735 con libreria TFT_eSPI
In questa sezione ti mostro come usare la TFT_eSPI library per controllare il display. Per installare questa libreria apri il Library Manager, cerca “TFT_eSPI” e premi “INSTALL”. Dopo l’installazione dovrebbe apparire così:

Ora dobbiamo creare la struttura corretta della cartella progetto. Apri l’IDE Arduino e crea un progetto “tft_test” e salvalo (Salva con nome …). Questo creerà una cartella “tft_test” con il file “tft_test.ino” al suo interno. In questa cartella crea un altro file chiamato “tft_setup.h“. La tua cartella progetto dovrebbe apparire così

Se vuoi saperne di più su questa configurazione e altre opzioni per configurare un display TFT con la libreria TFT_eSPI dai un’occhiata al tutorial How to configure TFT_eSPI Library for TFT display.
Dopo aver creato la cartella progetto con i due file, copia il seguente codice di configurazione per il display TFT nel file 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 il codice dello sketch nel file 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() { }
Nota che tft_setup.h è incluso in cima al programma. Il codice è facile da capire. Creiamo un oggetto TFT_eSPI e costanti per il centro (cw, ch) e la dimensione s degli oggetti da disegnare.
Nella funzione setup inizializziamo lo schermo TFT, lo riempiamo di nero e lo ruotiamo in modalità verticale.
Poi impostiamo il font, la sua dimensione, colore e allineamento, e scriviamo il testo “Makerguides” sullo schermo. Nelle tre righe successive disegniamo il cerchio rosso, il quadrato verde e il triangolo blu. L’output sul tuo schermo TFT dovrebbe essere simile a questo:

Se non è così, c’è qualcosa che non va nelle impostazioni di o nel cablaggio del display TFT. Dai un’occhiata al tutorial How to configure TFT_eSPI Library for TFT display per vedere quali altre impostazioni sono disponibili e cosa potresti provare per risolvere il problema.tft_test.ino
Conclusioni
In questo tutorial hai imparato come interfacciare un modulo display TFT con driver ST7789 con un ESP32.
Ho usato la TFT_eSPI Library per controllare il display. Ho anche provato la Adafruit-ST7735 Library ma non sono riuscito a farla funzionare. Altri hanno riportato lo stesso problema e sono riusciti con la ST7789_AVR library invece. Tuttavia, la ST7789_AVR library funziona solo con schede AVR ma non con un ESP32, per esempio.
Se hai difficoltà con la libreria TFT_eSPI, il nostro How to configure TFT_eSPI Library for TFT display potrebbe aiutarti.
Se hai commenti, sentiti libero di lasciarli nella sezione commenti.
Buon divertimento con il tinkering ; )

