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


Lösungen für Adafruit-Bibliotheken

Biblio­thek ILI9341
Biblio­thek ST7789

Die Hardware

Bei den Modu­len ESP32-2432S028 und ESP32-JC2432W328C han­delt es sich um 2,8 Zoll gro­ße TFT-Dis­plays mit 320×240 Pixeln. Auf der Rück­sei­te sind ein ESP32-Wroom und ein SD-Kar­ten-Modul ver­baut. Der ESP32-Wroom ver­fügt über WiFi und Blue­tooth. Mit JST-Ste­ckern kön­nen Peri­phe­rie­ge­rä­te ange­schlos­sen wer­den.

Es gibt meh­re­re Ver­sio­nen:

  • mit Mikro-USB-Anschluss (ESP32-2432S028)
    Gra­fik­trei­ber ⇒ILI9341
  • mit USB-C-Anschluss (ESP32-2432S028 und ESP32-JC2432W328)
    Gra­fik­trei­ber ⇒ST7789

Konfiguration des Mikrocontrollers

Anschluss von Peripherie ESP32-2432S028

JST-Ste­cker 1,25 mm 4 Pins blau ein­ge­färbt (P3)
Pins
GND
35 nur als INPUT nutz­bar
22
21 nicht nutz­bar: Hin­ter­grund­be­leuch­tung

JST Ste­cker 1,25 mm 4 Pins gelb ein­ge­färbt (CN1)
Pins
GND
22
27
3,3 V

Mikro JST-Ste­cker 2 Pins Laut­spre­cher­an­schluss (grün ein­ge­färbt)
GND
26

Anschluss von Peripherie ESP32-JC2432W328

JST-Ste­cker 1,25 mm 4 Pins rot ein­ge­färbt (P6)
Pins (nicht zusam­men mit der RGB-LED nutz­bar)
GND
16
4
17

JST Ste­cker 1,25 mm 4 Pins gelb ein­ge­färbt (CN1)
Pins
GND
22 I²C
21 I²C
3,3 V

JST-Ste­cker 1,25 mm 4 Pins blau ein­ge­färbt (P3)
Pins
GND
35 nur als INPUT nutz­bar
22
21


Mikro JST-Ste­cker 2 Pins Laut­spre­cher­an­schluss (grün ein­ge­färbt)
GND
26

RGB-LED

Auf der Rück­sei­te (ESP32-2432S028) oder auf der Vor­der­sei­te (ESP32-JC2432W328) befin­det sich eine RGB-LED.
Die ver­schie­de­nen Far­ben leuch­ten bei LOW und sind bei HIGH aus­ge­schal­tet.

Lautsprecher

Ein Laut­spre­cher wird mit einem Mikro JST-Ste­cker mit 2 Pins ange­schlos­sen. Die Laut­stär­ke kann mit Hil­fe eine Wider­stands an einem der Dräh­te redu­ziert wer­den.

Laut­spre­cher-Anschluss mit 2 Pin Mikro-JST-Ste­cker
GND
26

SD-Karte

Das SD-Kar­ten­mo­dul nutzt den Stan­dard Hard­ware SPI-Bus (VSPI):

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

Das Bei­spiel­pro­gramm liest den Inhalt der SD-Kar­te und zeigt die Datei­en im Seri­el­len Moni­tor an.

Benö­tig­te Biblio­thek

WiFi

Bei­spiel: Ein­fa­cher Web­ser­ver

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 ange­zeigt.

Die­se Adres­se musst du in einem Brow­ser dei­ner Wahl ein­ge­ben.

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 Biblio­thek TFT_eSPI ver­wen­det.
Trei­ber und SPI-Pins wer­den in ⇒Steu­er­da­tei­en ange­ge­ben. Die Biblio­thek stellt auch ⇒inter­ne Schrif­ten zur Ver­fü­gung.

Wenn du statt­des­sen die Adafruit-Biblio­the­ken ver­wen­den willst:

Biblio­thek TFT_eSPI

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

Im Ver­zeich­nis /Arduino/libraries/TFT_eSPI muss die Datei User_Setup.h ange­passt 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)

Aller­dings wer­den die­se Datei­en beim Update der Biblio­thek über­schrie­ben. Es emp­fiehlt sich daher, sie an einem ande­ren Ort zu sichern.

Das Pro­gramm

Touch-Screen verwenden

Bei den Touch­screens wer­den resis­ti­ve oder kapa­zi­ti­ve Tech­ni­ken ver­wen­det:
Ein resis­ti­ver Touch­screen reagiert auf Druck mit einem Fin­ger oder einem Stift, bei einem kapa­zi­ti­ver Touch­screen reicht eine Berüh­rung um eine Reak­ti­on aus­zu­füh­ren. In der Regel ist aus Kos­ten­grün­den ein resis­ti­ver Touch­screen ver­baut.

Beim ESP32-2432S028 konn­te ich mit der Biblio­thek XPT2046_Touchscreen_TT den Touch­screen anspre­chen.

Das Bei­spiel­pro­gramm erstellt zwei far­bi­ge But­tons. Beim Klick auf einen der But­tons ändert sich die Far­be und die Koor­di­na­ten des Punk­tes wer­den ange­zeigt. Du musst tes­ten, ob die Aus­rich­tung des TFTs mit der Aus­rich­tung des Touch-Screens über­ein­stimmt. In der lin­ken obe­ren Ecke müs­sen x und y-Koor­di­na­ten etwas grö­ßer als 1 sein, in der rech­ten unte­ren Ecke müs­sen sie sich in der Nähe von 320 (x-Koor­di­na­te) und 240 (y-Kor­di­na­te) befin­den. Ist das nicht der Fall, musst du die Aus­rich­tung des Touch-Screens (touchscreen.setRotation(0 … 3) anpas­sen.

Benö­tig­te Biblio­thek

Die Biblio­thek TFT_eSPI muss ⇒kor­rekt kon­fi­gu­riert wer­den.

Beispielprogramme mit der Bibliothek TFT_eSPI

Analoge Uhr

Die im Pro­gramm ver­wen­de­te Biblio­thek U8g2_for_TFT_eSPI kann nicht über die Biblio­theks­ver­wal­tung instal­liert wer­den, sie muss her­un­ter­ge­la­den

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

und mit

Sketch -> Biblio­thek ein­bin­den -> zip-Biblio­­thek hin­zu­fü­gen

instal­liert wer­den.

Das Pro­gramm kann auf viel­fäl­ti­ge Wei­se ange­passt wer­den:

  • die Far­be der Zei­ger (Zeig­erfar­be)
    die Far­ben kannst du dem Kopf des Pro­gramms ent­neh­men
  • die Far­be des inne­ren Krei­ses (Kreis­far­be)
  • die Far­be der äuße­ren Umran­dung (Rand­far­be)
  • Anzei­ge des Datums (Datu­m­An­zei­gen)
    true: Datum anzei­gen, fal­se: Datum ver­ber­gen
  • Sekun­den­zei­ger voll­stän­dig oder nur als Kreis anzei­gen (Sekun­den­zei­ger­Kreis)
    true: nur den Kreis anzei­gen, fal­se: Sekun­den­zei­ger als Linie mit Kreis am Ende der Linie anzei­gen
  • die Anzei­ge der Stun­den­mar­kie­run­gen 12, 3, 6 und 9 (Zif­fern­an­zei­gen)
    true: Zif­fern anzei­gen, fal­se: 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 kei­ne Ver­bin­dung zu einem Zeit­ser­ver her­ge­stellt wer­den konn­te, wird das Pro­gramm been­det. Nach einem erneu­ten Hoch­la­den kommt zumeist die Ver­bin­dung schnell zustan­de.

Analoge Uhr mit Messdaten von DHT

Wei­te­re Biblio­thek hin­zu­fü­gen:

Analoge Uhr mit Messdaten von BMP280

Zusätz­li­che Biblio­thek instal­lie­ren

Anzeige Messdaten DHT-Sensor

JST-Ste­cker 1,25 mm mit vier Pins

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

Anzeige Messdaten DHT-Sensor und Touchscreen-Bedienung

Bit­maps erstel­len

Anzeige Messdaten von BMP280

JST-Ste­cker 1,25 mm mit vier Pins

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

ESP32-2432S028

Der BMP280 wird mit I²C ange­schlos­sen. Der nor­ma­le I²C-Pin 21 kann nicht ver­wen­det wer­den, weil er die Hin­ter­grund­be­leuch­tung des Dis­plays ein­schal­tet. Die I²C-Pins müs­sen daher „umge­lenkt“ wer­den.

ESP32-JC2432W328

Beim ESP32-JC2432W328 wur­de der Pin für die Hin­ter­grund­be­leuch­tung auf Pin 27 gesetzt. Daher kön­nen die Stan­dard-I²C-Pins ver­wen­det wer­den.

Die Stan­dard-HEX-Adres­se des BMP280 ist 0x77. In die­sem Fall genügt der Auf­ruf bmp.begin().
Wenn das nicht funk­tio­niert, kannst du die HEX-Adres­se mit fol­gen­den Pro­gramm her­aus­fin­den.
Dem Auf­ruf von bmp.begin muss dann in den Klam­mern die HEX-Adres­se mit­ge­teilt wer­den.

Das Pro­gramm

Wecker mit Touch-Bedienung

Laut­spre­cher-Anschluss mit 2 Pin Mikro-JST-Ste­cker
26
GND

Geburtstagskalender

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

Du musst die Anzahl der Daten­sät­ze in der Varia­blen Daten­Max fest­le­gen. Jeder Daten­satz besteht aus dem Datum und dem Namen jeweils in Anfüh­rungs­zei­chen und durch ein Kom­ma getrennt. Im Bei­spiel wird eine Array mit 20 Ele­men­ten erstellt. Wenn Tag oder Monat ein­stel­lig sind, muss eine 0 vor­an­ge­stellt wer­den. Die zeit­li­che Rei­hen­fol­ge muss nicht ein­ge­hal­ten wer­den.

Das Datum wird in der Funk­ti­on Kalen­der­durch­su­chen() mit dem aktu­el­len Datum ver­gli­chen, stim­men sie über­ein, wird der Name ange­zeigt.

Das voll­stän­di­ge Pro­gramm

Fotoschau

Für die­ses 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­de­te Fotos :

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

Wei­te­re Fotos

Benö­tig­te Biblio­the­ken instal­lie­ren

Wenn du zuvor die Biblio­thek SdFat instal­liert hast, musst du sie über die Biblio­theks­ver­wal­tung deinstal­lie­ren und statt­des­sen den Adafruit Fork instal­lie­ren.

Das Programm

  • die Fotos müs­sen im For­mat bmp in der maxi­ma­len Grö­ße 320×240 vor­lie­gen
  • die Fotos müs­sen im Root-Ver­zeich­nis der SD-Kar­te lie­gen
  • wenn die Beschrei­bung (Beschrei­bung = true) ange­zeigt wer­den soll, dür­fen die Maße höchs­tens 320×213 betra­gen, ansons­ten wird durch die Beschrei­bung der unte­re Teil des Bil­des ver­deckt
  • falls du klei­ne­re Fotos ver­wen­den willst, musst du vor dem Laden des Bil­des den Bild­schirm „löschen“:
    tft.fillScreen(SCHWARZ);
  • bei Ver­wen­dung eige­ner Fotos musst du den Datei­na­men aus­tau­schen und die Beschrei­bung anpas­sen:
    reader.drawBMP(„eigeneDatei.bmp“, tft, 0, 0);
    0, 0 sind die Start­punk­te des Fotos auf der x-/y-Ach­se
  • wenn kei­ne Beschrei­bung ange­zeigt wer­den soll, set­ze den Schal­ter Beschrei­bung auf fal­se

Eigene Fotos mit GIMP skalieren und umwandeln

Die Fotos dür­fen maxi­mal das For­mat von 320×240 Pixeln haben und müs­sen im For­mat bmp im 24-Bit-For­mat vor­lie­gen. Du kannst belie­bi­ge Fotos ska­lie­ren und ent­spre­chend abspei­chern.

Beach­te die not­wen­di­gen Ein­stel­lun­gen beim Spei­chern des Bil­des.

Natür­lich darf das Bild auch klei­ner als 320×240 Pixel sein. Bei der Funk­ti­on drawBMP kannst du die Start­po­si­ti­on auf der x- und y-Ach­se fest­le­gen.

Fotos mit Imagemagick skalieren und konvertieren

Mit image­ma­gick (🔗 https://imagemagick.org) kön­nen die­se Schrit­te ver­ein­facht wer­den.

Win­dows:

  • Sta­ti­sche Ver­si­on her­un­ter­la­den
  • zip-Datei in einem Ord­ner dei­ner Wahl ent­pa­cken
    alle Fotos in den glei­chen Ord­ner kopie­ren
  • die Kom­man­do­zei­le öff­nen und in den Ord­ner mit den Fotos wech­seln
  • Fotos ska­lie­ren
  • Fotos ins bmp-For­mat und ins 24-Bit-For­mat kon­ver­tie­ren
    die neu­en Datei­en wer­den durch­num­me­riert (Foto.bmp, Foto0.bmp, Foto1.bmp …)

Linux

Das Paket Image­ma­gick lässt sich mit Bord­mit­teln instal­lie­ren und ver­wen­den:

magick mogrify -resize  320x213 *
magick -verbose -depth 24 -type truecolor *.jpg  Foto.bmp

Bibliothek ST7789 (TFT mit USB-C-Anschluss)

Das Programm


Quellen


Letzte Aktualisierung: Feb. 5, 2026 @ 18:53

Inhalt