ESP32 mit 2,8 Zoll TFT (Cheap Yellow Display)

Lesezeit: 52 Minuten

Die Hardware

Bei den Mod­ulen ESP32-2432S028 und ESP32-JC2432W328C han­delt es sich um 2,8 Zoll große TFT-Dis­plays mit 320x240 Pix­eln. Auf der Rück­seite sind ein ESP32-Wroom und ein SD-Karten-Mod­ul ver­baut. Der ESP32-Wroom ver­fügt über WiFi und Blue­tooth. Mit JST-Steck­ern kön­nen Periph­eriegeräte angeschlossen wer­den.

Es gibt mehrere Ver­sio­nen:

  • mit Mikro-USB-Anschluss (ESP32-2432S028)
    Grafik­treiber ⇒ILI9341
  • mit USB-C-Anschluss (ESP32-2432S028 und ESP32-JC2432W328)
    Grafik­treiber ⇒ST7789

Konfiguration des Mikrocontrollers

Anschluss von Peripherie ESP32-2432S028

JST-Steck­er 1,25 mm 4 Pins blau einge­färbt (P3)
Pins
GND
35 nur als INPUT nutzbar
22
21 nicht nutzbar: Hin­ter­grund­beleuch­tung

JST Steck­er 1,25 mm 4 Pins gelb einge­färbt (CN1)
Pins
GND
22
27
3,3 V

Mikro JST-Steck­er 2 Pins Laut­sprecher­an­schluss (grün einge­färbt)
GND
26

Anschluss von Peripherie ESP32-JC2432W328

JST-Steck­er 1,25 mm 4 Pins rot einge­färbt (P6)
Pins (nicht zusam­men mit der RGB-LED nutzbar)
GND
16
4
17

JST Steck­er 1,25 mm 4 Pins gelb einge­färbt (CN1)
Pins
GND
22 I²C
21 I²C
3,3 V

JST-Steck­er 1,25 mm 4 Pins blau einge­färbt (P3)
Pins
GND
35 nur als INPUT nutzbar
22
21


Mikro JST-Steck­er 2 Pins Laut­sprecher­an­schluss (grün einge­färbt)
GND
26

RGB-LED

Auf der Rück­seite (ESP32-2432S028) oder auf der Vorder­seite (ESP32-JC2432W328) befind­et sich eine RGB-LED.
Die ver­schiede­nen Far­ben leucht­en bei LOW und sind bei HIGH aus­geschal­tet.

Lautsprecher

Ein Laut­sprech­er wird mit einem Mikro JST-Steck­er mit 2 Pins angeschlossen. Die Laut­stärke kann mit Hil­fe eine Wider­stands an einem der Drähte reduziert wer­den.

Laut­sprech­er-Anschluss mit 2 Pin Mikro-JST-Steck­er
GND
26

SD-Karte

Das SD-Karten­mod­ul nutzt den Stan­dard Hard­ware SPI-Bus (VSPI):

Pins VSPI
23 -> COPI (MOSI)
19 -> CIPO (MISO)
18 -> CLK
5 -> CS

Das Beispiel­pro­gramm liest den Inhalt der SD-Karte und zeigt die Dateien im Seriellen Mon­i­tor an.

Benötigte Bib­lio­thek

WiFi

Beispiel: Ein­fach­er Web­serv­er

Das Pro­gramm zeigt im Brow­ser 6 Zufalls­zah­len an.
Im Seri­el­len Moni­tor wird die mit DHCP ermit­tel­te IP des ESP32-Wroom angezeigt.

Diese Adresse musst du in einem Brows­er dein­er Wahl eingeben.

Grafische Funktionen

Das TFT-Dis­play ver­wen­det den Soft­ware SPI-Bus HSPI:

13 -> COPI (MOSI)
12 -> CIPO (MISO)
14 -> CLK
15 -> CS

Für die Ver­wen­dung des Dis­plays wird die Bib­lio­thek TFT_eSPI ver­wen­det.
Treiber und SPI-Pins wer­den in ⇒Steuer­dateien angegeben. Die Bib­lio­thek stellt auch ⇒interne Schriften zur Ver­fü­gung.

Wenn du stattdessen die Adafruit-Bib­lio­theken ver­wen­den willst:

Bib­lio­thek TFT_eSPI

Für das TFT mit einem Mikro-USB-Anschluss muss der Treiber ILI9341 ver­wen­det wer­den.
Das TFT mit USB-C-Anschluss wird mit dem Treiber ST7789 betrieben.

Im Verze­ich­nis /Arduino/libraries/TFT_eSPI muss die Datei User_Setup.h angepasst wer­den:

Datei User_Setup.h für ILI9341 (ESP32-2432S028 Mikro-USB-Anschluss)

Datei User_Setup.h für ST7789 (ESP32-2432S028 USB-C-Anschluss)

Datei User_Setup.h für ST7789 (ESP32-JC2432W328C)

Allerd­ings wer­den diese Dateien beim Update der Bib­lio­thek über­schrieben. Es emp­fiehlt sich daher, sie an einem anderen Ort zu sich­ern.

Das Pro­gramm

Touch-Screen verwenden

Bei den Touch­screens wer­den resis­tive oder kapaz­i­tive Tech­niken ver­wen­det:
Ein resis­tiv­er Touch­screen reagiert auf Druck mit einem Fin­ger oder einem Stift, bei einem kapaz­i­tiv­er Touch­screen reicht eine Berührung um eine Reak­tion auszuführen. In der Regel ist aus Kosten­grün­den ein resis­tiv­er Touch­screen ver­baut.

Beim ESP32-2432S028 kon­nte ich mit der Bib­lio­thek XPT2046_Touchscreen_TT den Touch­screen ansprechen.

Das Beispiel­pro­gramm erstellt zwei far­bige But­tons. Beim Klick auf einen der But­tons ändert sich die Farbe und die Koor­di­nat­en des Punk­tes wer­den angezeigt. Du musst testen, ob die Aus­rich­tung des TFTs mit der Aus­rich­tung des Touch-Screens übere­in­stimmt. In der linken oberen Ecke müssen x und y‑Koordinaten etwas größer als 1 sein, in der recht­en unteren Ecke müssen sie sich in der Nähe von 320 (x‑Koordinate) und 240 (y‑Kordinate) befind­en. Ist das nicht der Fall, musst du die Aus­rich­tung des Touch-Screens (touchscreen.setRotation(0 … 3) anpassen.

Benötigte Bib­lio­thek

Die Bib­lio­thek TFT_eSPI muss ⇒kor­rekt kon­fig­uri­ert wer­den.

Beispielprogramme mit der Bibliothek TFT_eSPI

Analoge Uhr

Die im Pro­gramm ver­wen­dete Bib­lio­thek U8g2_for_TFT_eSPI kann nicht über die Bib­lio­theksver­wal­tung instal­liert wer­den, sie muss herun­terge­laden

🔗https://github.com/Bodmer/U8g2_for_TFT_eSPI

und mit

Sketch -> Biblio­thek ein­bin­den -> zip-Bib­lio­thek hinzufü­gen

instal­liert wer­den.

Das Pro­gramm kann auf vielfältige Weise angepasst wer­den:

  • die Farbe der Zeiger (Zeiger­farbe)
    die Far­ben kannst du dem Kopf des Pro­gramms ent­nehmen
  • die Farbe des inneren Kreis­es (Kre­is­farbe)
  • die Farbe der äußeren Umran­dung (Rand­farbe)
  • Anzeige des Datums (Datu­mAnzeigen)
    true: Datum anzeigen, false: Datum ver­ber­gen
  • Sekun­den­zeiger voll­ständig oder nur als Kreis anzeigen (Sekun­den­zeigerKreis)
    true: nur den Kreis anzeigen, false: Sekun­den­zeiger als Lin­ie mit Kreis am Ende der Lin­ie anzeigen
  • die Anzeige der Stun­den­markierun­gen 12, 3, 6 und 9 (Zif­fer­nanzeigen)
    true: Zif­fern anzeigen, false: Zif­fern ver­ber­gen

Beim Start des Pro­gramms zei­gen die Mel­dun­gen ob Datum und Zeit kor­rekt sind. Wenn in 90 Sekun­den keine Verbindung zu einem Zeit­serv­er hergestellt wer­den kon­nte, wird das Pro­gramm been­det. Nach einem erneuten Hochladen kommt zumeist die Verbindung schnell zus­tande.

Analoge Uhr mit Temperatur-/Luftfeuchtigkeitsanzeige mit DHT

Weit­ere Bib­lio­thek hinzufü­gen:

Analoge Uhr mit Temperatur-/Luftdruckanzeige mit BMP280

Zusät­zliche Bib­lio­thek instal­lieren

Temperatur und Luftfeuchtigkeit mit DHT-Sensor

JST-Steck­er 1,25 mm mit vier Pins

schwarz -> GND DHT
blau (22) -> Daten­pin DHT
gelb (27) -> nicht angeschlossen
rot -> VCC DHT

Temperatur und Luftfeuchtigkeit mit DHT-Sensor und Touchscreen-Bedienung

Bitmaps erstellen

Temperatur und Luftdruck mit BMP280

JST-Steck­er 1,25 mm mit vier Pins

schwarz -> GND
blau -> SDA (22)
gelb -> SCL (27)
rot -> VCC

ESP32-2432S028

Der BMP280 wird mit I²C angeschlossen. Der nor­male I²C-Pin 21 kann nicht ver­wen­det wer­den, weil er die Hin­ter­grund­beleuch­tung des Dis­plays ein­schal­tet. Die I²C-Pins müssen daher “umge­lenkt” wer­den.

ESP32-JC2432W328

Beim ESP32-JC2432W328 wurde der Pin für die Hin­ter­grund­beleuch­tung auf Pin 27 geset­zt. Daher kön­nen die Stan­dard-I²C-Pins ver­wen­det wer­den.

Die Stan­dard-HEX-Adresse des BMP280 ist 0x77. In diesem Fall genügt der Aufruf bmp.begin().
Wenn das nicht funk­tion­iert, kannst du die HEX-Adresse mit fol­gen­den Pro­gramm her­aus­find­en.
Dem Aufruf von bmp.begin muss dann in den Klam­mern die HEX-Adresse mit­geteilt wer­den.

Das Pro­gramm

Analoge Uhr mit Messdaten BMP280 und AHT20

Zusät­zlich benötigte Bib­lio­thek

Wecker mit Touch-Bedienung

Weckzeit ein­stellen
link­er But­ton -> Stunde
mit­tlerer But­ton -> Minute
rechter But­ton -> Weckzeit ein-/auss­chal­ten

Laut­sprech­er-Anschluss mit 2 Pin Mikro-JST-Steck­er
26
GND

Geburtstagskalender

Der Kalen­der nutzt ein ⇒zwei­di­men­sion­ales Array für das Datum und die Namen.

Du musst die Anzahl der Daten­sätze in der Vari­ablen Daten­Max fes­tle­gen. Jed­er Daten­satz beste­ht aus dem Datum und dem Namen jew­eils in Anführungsze­ichen und durch ein Kom­ma getren­nt. Im Beispiel wird eine Array mit 20 Ele­menten erstellt. Wenn Tag oder Monat ein­stel­lig sind, muss eine 0 vor­angestellt wer­den. Die zeitliche Rei­hen­folge muss nicht einge­hal­ten wer­den.

Das Datum wird in der Funk­tion Kalen­der­durch­suchen() mit dem aktuellen Datum ver­glichen, stim­men sie übere­in, wird der Name angezeigt.

Das voll­ständi­ge Pro­gramm

Fotoschau

Für dieses Pro­gramm kann die Bibliothek_TFT_eSPI nicht ver­wen­det wer­den.

Bibliothek ILI9341 (TFT mit Mikro-USB-Anschluss)

Im Pro­gramm ver­wen­dete Fotos :

koeln.bmpstrand.bmpberlin_olympia.bmpwalhalla.bmpdresden_frauenkirche.bmp
chartres.bmpgaios.bmpbraunwald.bmpkoeln_deutz.bmpdhuenntalsperre.bmp

Weit­ere Fotos

Benötigte Bib­lio­theken instal­lieren

Wenn du zuvor die Bib­lio­thek SdFat instal­liert hast, musst du sie über die Bib­lio­theksver­wal­tung dein­stal­lieren und stattdessen den Adafruit Fork instal­lieren.

Das Programm

  • die Fotos müssen im For­mat bmp in der max­i­malen Größe 320x240 vor­liegen
  • die Fotos müssen im Root-Verze­ich­nis der SD-Karte liegen
  • wenn die Beschrei­bung (Beschrei­bung = true) angezeigt wer­den soll, dür­fen die Maße höch­stens 320x213 betra­gen, anson­sten wird durch die Beschrei­bung der untere Teil des Bildes verdeckt
  • falls du kleinere Fotos ver­wen­den willst, musst du vor dem Laden des Bildes den Bild­schirm “löschen”:
    tft.fillScreen(SCHWARZ);
  • bei Ver­wen­dung eigen­er Fotos musst du den Dateina­men aus­tauschen und die Beschrei­bung anpassen:
    reader.drawBMP(“eigeneDatei.bmp”, tft, 0, 0);
    0, 0 sind die Start­punk­te des Fotos auf der x-/y‑Achse
  • wenn keine Beschrei­bung angezeigt wer­den soll, set­ze den Schal­ter Beschrei­bung auf false

Eigene Fotos mit GIMP skalieren und umwandeln

Die Fotos dür­fen max­i­mal das For­mat von 320x240 Pix­eln haben und müssen im For­mat bmp im 24-Bit-For­mat vor­liegen. Du kannst beliebige Fotos skalieren und entsprechend abspe­ich­ern.

Beachte die notwendi­gen Ein­stel­lun­gen beim Spe­ich­ern des Bildes.

Natür­lich darf das Bild auch klein­er als 320x240 Pix­el sein. Bei der Funk­tion drawBMP kannst du die Start­po­si­tion auf der x- und y‑Achse fes­tle­gen.

Fotos mit Imagemagick skalieren und konvertieren

Mit imagemag­ick (🔗 https://imagemagick.org) kön­nen diese Schritte vere­in­facht wer­den.

Win­dows:

  • Sta­tis­che Ver­sion herun­ter­laden
  • zip-Datei in einem Ord­ner dein­er Wahl ent­pack­en
    alle Fotos in den gle­ichen Ord­ner kopieren
  • die Kom­man­dozeile öff­nen und in den Ord­ner mit den Fotos wech­seln
  • Fotos skalieren
  • Fotos ins bmp-For­mat und ins 24-Bit-For­mat kon­vertieren
    die neuen Dateien wer­den durch­num­meriert (Foto.bmp, Foto0.bmp, Foto1.bmp …)

Lin­ux

Das Paket Imagemag­ick lässt sich mit Bor­d­mit­teln instal­lieren und ver­wen­den:

Bibliothek ST7789 (TFT mit USB-C-Anschluss)

Das Programm


Quellen


Letzte Aktualisierung: Nov. 30, 2025 @ 17:53