In diesem Tutorial lernst du, wie du das GMT020-02 TFT-Display mit einem ESP32 ansteuerst und kontrollierst. Das GMT020-02 Display verwendet den ST7789 Treiber-IC, daher ist dieses Tutorial auch für andere TFT-Displays mit demselben Treiber-IC nützlich.
Das GMT020-02 ist ein schönes kleines 2,0″ TFT-Display mit einer Auflösung von 240×320 Pixeln und 262K Farben, das du günstig bei AliExpress bekommen kannst. Die Dokumentation ist jedoch spärlich und manchmal sogar irreführend, was die Nutzung des Displays unnötig erschwert. Ich hoffe, dieses kleine Tutorial hilft dir weiter.
Eigenschaften des GMT020-02 Displays
Das GMT020-02 Vers 1.1 ist ein Displaymodul mit integriertem SPI-Interface. Das Bild unten zeigt die Vorder- und Rückseite des Moduls.

Du findest es auf AliExpress, wo es als mit ST7735 Treiber-IC und für Arduino geeignet gekennzeichnet ist.

Treiber-IC für GMT020-02 Display
Das ist irreführend, da das Datenblatt angibt, dass der Treiber-IC ein ST7789 ist und das Modul mit 3,3V läuft. Laut Schaltplan gibt es keinen Pegelwandler auf dem Modul, was es riskant macht, es an ein Arduino UNO mit 5V Logik anzuschließen. Die Datenblätter für das GMT020-02 Modul und den ST7789 sind unten verlinkt.
Hintergrundbeleuchtung für GMT020-02 Display
Noch ein Wort zur Hintergrundbeleuchtung. Das GMT020-02 Modul hat eine Hintergrundbeleuchtung, die aber anscheinend fest verdrahtet ist (siehe LED+ und LED- im Schaltplan unten) und daher nicht per Software gesteuert werden kann. Du wirst feststellen, dass es auch keinen BLK- oder LED-Pin gibt, mit dem du die Hintergrundbeleuchtung extern steuern könntest.

Die einzige Möglichkeit wäre, die Stromversorgung des Moduls komplett zu unterbrechen. Da die Hintergrundbeleuchtungs-LED aber bereits 60mA zieht, kannst du VCC nicht direkt von einem GPIO-Ausgang liefern! Du musst einen Transistor/MOSFET verwenden, um die Stromversorgung (VCC) zu schalten!
Kommunikationsschnittstelle des GMT020-02 Displays
Übrigens sind die IM0, IM1 und IM2 Pins im obigen Schaltplan zur Auswahl der Kommunikationsschnittstelle (SPI oder 8-Bit Parallel). Aus der Tabelle unten und dem Schaltplan kannst du sehen, dass das Modul fest auf SPI verdrahtet ist:

Anschluss des GMT020-02 Displays an ESP32
Den GMT020-02 an einen ESP32 anzuschließen ist einfach, aber die Beschriftung der Pins auf dem GMT020-02 ist etwas verwirrend. Es sind SDA- und SCL-Pins angegeben, aber da es eine SPI-Schnittstelle verwendet, sind das nicht die SDA- und SCL-Pins für I2C!
Das folgende Schaltbild zeigt dir, wie du das GMT020-02 an einen WEMOS Lolin32 lite anschließt:

Und hier zur besseren Übersicht die benötigten Verbindungen als Tabelle:
| Display | ESP32 |
|---|---|
| CS / SS | 5 |
| RST | 17 |
| DC | 16 |
| SDA / MOSI | 23 |
| SCL / SCLK | 18 |
| GND | GND |
| VCC | 3,3V |
Je nach verwendetem ESP32 und Entwicklungsboard können diese Pins unterschiedlich sein. Du solltest die Pins für Hardware-SPI verwenden. Du findest sie, indem du dein Board in der Arduino IDE auswählst und dann den untenstehenden Code ausführst.
void setup() {
Serial.begin(115200);
Serial.print("MOSI: ");
Serial.println(SDA / MOSI);
Serial.print("MISO: ");
Serial.println(MISO);
Serial.print("SCL / SCK: ");
Serial.println(SCK);
Serial.print("CS / SS: ");
Serial.println(SS);
}
void loop() { }
Er gibt die Pins aus, die du für Hardware-SPI benötigst. Die übrigen Pins kannst du frei wählen.
Testcode für GMT020-02 Display
Wir verwenden die Adafruit-ST7735 Library, um auf das GMT020-02 Display zu schreiben und zu zeichnen. Zur Installation öffne einfach den Library Manager, suche nach „Adafruit-ST7735“ und klicke auf den grünen INSTALL Button:

Der Installer wird dich wahrscheinlich auffordern, auch die Abhängigkeiten zu installieren. Klicke auf INSTALL ALL:

Mit der installierten Bibliothek können wir nun das Display testen. Kompiliere und lade einfach den folgenden Code hoch. Er zeigt den Text „Makerguides“ auf dem Display an:
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>
// WEMOS LOLIN32 lite
#define TFT_CS 5
#define TFT_RST 17
#define TFT_DC 16
#define TFT_MOSI 23 // SDA, HW MOSI
#define TFT_SCLK 18 // SCL, HW SCLK
// #define TFT_MISO 19 // not used
//Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST); // Hardware SPI
void setup() {
tft.init(240, 320);
tft.setRotation(1);
tft.fillScreen(ST77XX_BLACK);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(3);
tft.setCursor(50, 100);
tft.println("Makerguides");
}
void loop() {
}
Wenn du das Display an die korrekten Hardware-SPI Pins deines ESP32 angeschlossen hast, musst du TFT_MOSI und TFT_SCLK nicht definieren und kannst den folgenden Konstruktor verwenden (wie im obigen Code):
Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);
Hardware-SPI ist schneller, aber wenn du Probleme hast, kannst du Software-SPI ausprobieren, indem du deine TFT_MOSI und TFT_SCLK Pins definierst und im Konstruktor verwendest.
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
In jedem Fall sollte die Ausgabe auf dem Display wie folgt aussehen:

Wenn das funktioniert, kannst du den graphicstest_st7789 Code ausführen, der mit der Adafruit-ST7735 Library mitgeliefert wird. Achte nur darauf, das richtige Display im Code auszuwählen und die Pins an deine Verkabelung anzupassen:
// OPTION 1 (recommended) is to use the HARDWARE SPI pins, which are unique // to each board and not reassignable. Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST); // OPTION 2 lets you interface the display using ANY TWO or THREE PINS, // tradeoff being that performance is not as fast as hardware SPI above. //Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
void setup(void) {
Serial.begin(9600);
Serial.print(F("Hello! ST77xx TFT Test"));
// Use this initializer (uncomment) if using a 1.3" or 1.54" 240x240 TFT:
// tft.init(240, 240); // Init ST7789 240x240
// OR use this initializer (uncomment) if using a 1.69" 280x240 TFT:
//tft.init(240, 280); // Init ST7789 280x240
// OR use this initializer (uncomment) if using a 2.0" 320x240 TFT:
tft.init(240, 320); // Init ST7789 320x240
// OR use this initializer (uncomment) if using a 1.14" 240x135 TFT:
//tft.init(135, 240); // Init ST7789 240x135
// OR use this initializer (uncomment) if using a 1.47" 172x320 TFT:
//tft.init(172, 320); // Init ST7789 172x320
// OR use this initializer (uncomment) if using a 1.9" 170x320 TFT:
//tft.init(170, 320); // Init ST7789 170x320
GMT020-02 Display mit TFT_eSPI Bibliothek
Wenn du die TFT_eSPI library statt der Adafruit-ST7735 Library verwenden möchtest, ist das auch möglich. Hier ist die tft_setup.h Datei mit der erforderlichen Konfiguration (wieder für einen WEMOS Lolin32 lite):
#define ST7789_DRIVER #define TFT_WIDTH 240 #define TFT_HEIGHT 320 #define TFT_RGB_ORDER TFT_BGR // WEMOS Lolin32 lite #define TFT_CS 5 #define TFT_RST 17 #define TFT_DC 16 #define TFT_MOSI 23 // SDA // HW MOSI #define TFT_SCLK 18 // SCL // HW SCLK // #define TFT_MISO 19 // not used #define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH #define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters #define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters #define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm #define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:. #define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. #define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts #define SMOOTH_FONT #define SPI_FREQUENCY 40000000 #define SPI_READ_FREQUENCY 20000000
und hier ein Codebeispiel, das wie zuvor den Text „Makerguides“ auf dem Display ausgibt:
#include "tft_setup.h"
#include"TFT_eSPI.h"
TFT_eSPI tft = TFT_eSPI();
void setup(void) {
tft.init();
tft.fillScreen(TFT_BLACK);
tft.setRotation(1);
tft.setCursor(100, 100, 2);
tft.setTextColor(TFT_WHITE, TFT_BLACK);
tft.setTextSize(2);
tft.println("Makerguides");
}
void loop() { }
Denke daran, dass die tft_setup.h Datei Teil des Projektordners sein muss. Wenn du mehr Details brauchst, schau dir das How to configure TFT_eSPI Library for TFT display Tutorial an.
Fazit
In diesem Tutorial hast du gelernt, wie du das GMT020-02 TFT-Display mit einem ESP32 ansteuerst und kontrollierst.
Für andere TFT-Displays schau dir die Interface TFT ILI9341 Touch Display with ESP32, die
Interface TFT ST7735 Display with ESP32, die Digital Clock on CrowPanel 1.28″ Round Display und die CrowPanel 2.8″ ESP32 Display : Easy Setup Guide Tutorials an.
Wenn du Kommentare hast, hinterlasse sie gerne im Kommentarbereich.
Viel Spaß beim Basteln ; )

