Skip to Content

TFT ST7789 Display mit ESP32 verbinden

TFT ST7789 Display mit ESP32 verbinden

In diesem Tutorial lernst du, wie du ein 1,3″ 240×240 TFT-Displaymodul mit einem ST7789 Displaytreiber an einen ESP32 (WEMOS Lolin32 lite) anschließt.

Die Anleitungen und der Code funktionieren mit kleinen Anpassungen auch für andere ESP32-Boards und TFT-Displays, solange das Display den ST7789 Displaytreiber verwendet.

Benötigte Teile

Du benötigst einen ESP32 und ein 1,3 Zoll TFT-Display mit einer Auflösung von 240×240 Pixeln und einem ST7789 Displaytreiber-IC. Einige Kabel und ein Breadboard können ebenfalls nützlich sein.

1,3″ ST7789 TFT Display

ESP32 lite Lolin32

ESP32 lite

USB data cable

USB-Datenkabel

Dupont wire set

Dupont-Kabelset

Half_breadboard56a

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.

1,3″ TFT ST7789 Displaymodul

Das 1,3″ TFT-Displaymodul, das wir hier verwenden, hat eine Auflösung von 240×240 Pixeln mit 65K RGB-Farben. Das Bild unten zeigt die Vorder- und Rückseite des Displaymoduls:

Front and Back of 1.3" TFT ST7789  Display Module
Vorder- und Rückseite des 1,3″ TFT ST7789 Displaymoduls (source)

Das Modul verwendet den ST7789 Treiberchip und wird über eine SPI-4-Draht-Schnittstelle gesteuert. Die Betriebsspannung beträgt 3,3V und das Display zieht maximal etwa 30mA. Beachte, dass es viele verschiedene Versionen dieses TFT-Displays gibt.

Einige TFT-Displaymodule haben einen logic level Wandler, der es ermöglicht, das Displaymodul an ein Arduino UNO anzuschließen, das mit 5V arbeitet. Dieses hier nicht, das heißt du kannst es nicht direkt an ein Arduino anschließen! Wir verwenden daher einen ESP32, der mit CMOS 3,3V Logik arbeitet.

Wenn du ein Arduino verwenden möchtest, musst du die Logikpegel konvertieren. Es gibt verschiedene Möglichkeiten dies zu tun (Spannungsteiler, Optokoppler, Pegelwandler-IC), aber am einfachsten ist es, ein level shifting module zu besorgen.

Schließlich gibt es ähnliche Displays, die den ST7735S Treiber-IC anstelle des ST7789 verwenden. Die Konfiguration in diesem Tutorial ist für Displays mit dem ST7789 Treiber-IC und funktioniert nicht für andere.

Anschluss eines 1,8″ TFT ST7735 Displays an den ESP32

Den TFT-Bildschirm an den ESP32 anzuschließen ist einfach, aber die Beschriftung der Pins am Display ist etwas verwirrend. Es sind SDA- und SCL-Pins angegeben, aber da es eine SPI-Schnittstelle hat, sollten diese Pins MOSI und SCLK heißen.

Das folgende Schaltbild zeigt, wie du das 1,3″ TFT ST7789 Displaymodul an einen WEMOS Lolin32 lite anschließt:

Connecting TFT ST7789 Display with WEMOS Lolin ESP32 lite
Anschluss TFT ST7789 Display mit WEMOS Lolin ESP32 lite

Und hier sind die benötigten Verbindungen nochmal als Tabelle. Beachte, dass dieses Displaymodul keinen Chip Select (CS) hat und daher kein Pin dafür benötigt wird.

DisplayESP32
RST16
DC17
SDA / MOSI23
SCL / SCLK18
BKL/BL22
GNDGND
VCC3,3V

Achte darauf, VCC des Displays mit 3,3V zu verbinden! Außerdem solltest du die Hardware-SPI Pins für MOSI und SCLK verwenden. Je nach Mikrocontroller unterscheiden sich die Hardware-SPI-Pins. Du findest sie, indem du dein Board in der Arduino IDE auswählst und dann den folgenden Code ausführst.

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() { }

Dieser gibt die Pins aus, die du für Hardware-SPI brauchst – speziell MOSI und SCLK. Die übrigen Pins kannst du frei wählen, MISO wird nicht verwendet.

Code für TFT ST7735 Display mit TFT_eSPI Bibliothek

In diesem Abschnitt zeige ich dir, wie du die TFT_eSPI library benutzt, um das Display zu steuern. Um diese Bibliothek zu installieren, öffne den Library Manager, suche nach „TFT_eSPI“ und klicke auf „INSTALL“. Nach der Installation sollte es so aussehen:

TFT_eSPI library in Library Manager
TFT_eSPI Bibliothek im Library Manager

Als nächstes müssen wir die richtige Projektordnerstruktur erstellen. Öffne deine Arduino IDE und erstelle ein Projekt „tft_test“ und speichere es (Speichern unter …). Dadurch wird ein Ordner „tft_test“ mit der Datei „tft_test.ino“ darin erstellt. In diesem Ordner erstelle eine weitere Datei namens „tft_setup.h„. Dein Projektordner sollte so aussehen

Project Folder Structure
tft_test

Wenn du mehr über diese Einrichtung und weitere Optionen zur Konfiguration eines TFT-Displays für die TFT_eSPI Bibliothek erfahren möchtest, schau dir das How to configure TFT_eSPI Library for TFT display Tutorial an.

Nachdem der Projektordner mit den zwei Dateien erstellt wurde, kopiere den folgenden Konfigurationscode für das TFT-Display in die tft_setup.h Datei:

// 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

und den Code für den Sketch in die tft_test.ino Datei:

// 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() { }

Beachte, dass tft_setup.h am Anfang des Programms eingebunden wird. Der Code selbst ist leicht verständlich. Wir erstellen ein TFT_eSPI Objekt und Konstanten für die Mitte (cw, ch) und die Größe s der zu zeichnenden Objekte.

In der setup Funktion initialisieren wir den TFT-Bildschirm, füllen den Bildschirm mit Schwarz und drehen ihn in den Hochformatmodus.

Als nächstes setzen wir die Schriftart, deren Größe, Farbe und Ausrichtung und schreiben den Text „Makerguides“ auf den Bildschirm. In den nächsten drei Zeilen zeichnen wir den roten Kreis, das grüne Quadrat und das blaue Dreieck. Die Ausgabe auf deinem TFT-Bildschirm sollte ungefähr so aussehen:

Ausgabe des Testcodes auf dem TFT

Wenn nicht, stimmt etwas mit den Einstellungen in tft_test.ino oder der Verkabelung des TFT-Displays nicht. Schau dir das How to configure TFT_eSPI Library for TFT display Tutorial an, um zu sehen, welche anderen Einstellungen möglich sind und was du versuchen kannst, um das Problem zu lösen.

Fazit

In diesem Tutorial hast du gelernt, wie man ein TFT-Displaymodul mit einem ST7789 Displaytreiber an einen ESP32 anschließt.

Ich habe die TFT_eSPI Library verwendet, um das Display zu steuern. Ich habe auch die Adafruit-ST7735 Library ausprobiert, konnte sie aber nicht zum Laufen bringen. Andere haben dasselbe Problem berichtet und waren mit der ST7789_AVR library erfolgreich. Allerdings funktioniert die ST7789_AVR library nur mit AVR-Boards, aber nicht mit einem ESP32 zum Beispiel.

Wenn du Schwierigkeiten mit der TFT_eSPI Bibliothek hast, könnte unser How to configure TFT_eSPI Library for TFT display helfen.

Wenn du Kommentare hast, hinterlasse sie gerne im Kommentarbereich.

Viel Spaß beim Tüfteln ; )

Stephan

Monday 26th of January 2026

Danke, hat auf Anhieb funktioniert! (Nachdem ich erst mit EasyESP versucht hatte) Ergänzung, diese gab bei mir die richtigen Pins aus. // SPI Schnittstelle (Serial Peripheral Interface) Serial.println("\n[SPI Bus]"); Serial.print(" MOSI (Out): "); Serial.println(MOSI); Serial.print(" MISO (In): "); Serial.println(MISO); Serial.print(" SCK (Clock): "); Serial.println(SCK); Serial.print(" SS (Select):"); Serial.println(SS);