Fotoschau mit ESP32, TFT und SD-Kartenleser




Ziele des Projekts

  • Fotos von einem SD-Kar­ten­le­ser laden und auf einem TFT anzei­gen
  • Beschrei­bung zum Foto anzei­gen

Verwendete Hardware

Pinbelegung des TFT-Displays mit 480×320 Pixeln

Die Pins für den SD-Kar­ten­le­ser (im Bei­spiel: SD-CS und SDO) müs­sen in der Pin-Leis­te vor­han­den sein:

Pin­be­le­gung am ESP32-Wroom

SD_CS: 15 (SD-Kar­ten­le­ser)
SDO (MISO): 19 (SD-Kar­ten­le­ser)
LED: 5V
SCK: 18
SDI (MOSI): 23
LCD_RS (DC): 2
LCD_RST (RST): 4
LCD_CS (CS): 5
GND
VCC: 5V

Die Rei­hen­fol­ge der Pins kann unter­schied­lich sein. Ach­te auf die Beschrif­tung der Pins.

Fotos erstellen

Du benö­tigst eine Mini-SD-Kar­te, sie muss mit FAT-32 for­ma­tiert sein. Bei neu gekauf­ten SD-Kar­ten ist das in der Regel der Fall. Fotos dür­fen maxi­mal das For­mat von 480×320 Pixeln haben und müs­sen im For­mat bmp vor­lie­gen. Du kannst belie­bi­ge Fotos ska­lie­ren und ent­spre­chend abspei­chern.

Ich ver­wen­de hier­zu das Pro­gramm GIMP. 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 480×320 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 480×320 Pixel

alle Fotos Hart­mut Wal­ler

koeln.bmpoverath_bahnhof.bmplindos.bmpbraunwald.bmpdresden_frauenkirche.bmp
chartres.bmpstrand.bmpberlin_olympia.bmpuni_bonn.bmpduenen.bmp
st_michelle.bmpijlst.bmpmonschau.bmpgaios.bmpkoeln_deutz.bmp

Sowohl das TFT-Dis­play als auch der SD-Kar­ten­le­ser ver­wen­den den SPI-Bus. Jedes Gerät benö­tigt aber eige­ne Daten­lei­tun­gen. Der ESP32-Wroom ver­fügt über zwei SPI-Bus­se, die gleich­zei­tig nutz­bar sind.

Benötigte Bibliotheken

Die ver­wen­de­te Biblio­thek für das Dis­play mit 480×320 Pixeln kann nicht über die Biblio­theks­ver­wal­tung instal­liert wer­den. Sie muss her­un­ter gela­den wer­den:
https://github.com/prenticedavid/Adafruit_ST7796S_kbv
und mit

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

instal­liert wer­den.

Benö­tig­te Biblio­thek für TFT-Dis­play mit 320×240 Pixeln

Das Programm

Bibliotheken einbinden und Variable definieren

Die SPI-Pins für das TFT-Dis­play ent­spre­chen der Stan­dard­kon­fi­gu­ra­ti­on VSPI und müs­sen nicht dekla­riert wer­den.
Für den SD-Kar­ten­le­ser sind eini­ge Para­me­ter erfor­der­lich:

  • der Typ der SD-Kar­te (3)
  • die Geschwin­dig­keit (SD_SCK_MHZ)
  • Der Daten­pin (CSPin)
  • die Fotos müs­sen im For­mat bmp in der maxi­ma­len Grö­ße 480×320 vor­lie­gen
  • die Fotos müs­sen im Root-Ver­zeich­nis der SD-Kar­te lie­gen
  • 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

Der setup-Teil

Der set­up-Teil star­tet den SD-Kar­ten­le­ser und das TFT-Dis­play. Der erfolg­rei­che Start des SD-Kar­ten­le­sers wird im Seri­el­len Moni­tor und auf dem TFT-Dis­play ange­zeigt.

Der loop-Teil

Jedes Foto muss mit drawBMP an das TFT-Dis­play (tft) mit den x- und y-Koor­di­na­ten des Start­punk­tes über­ge­ben wer­den.
Je nach Zustand des Para­me­ter Beschrei­bung (true/false) wird eine Infor­ma­ti­on zum Foto ange­zeigt.
Die Umlau­te müs­sen mit tft.write() und ⇒hexa­de­zi­ma­len Code defi­niert wer­den.


Quellen


Letzte Aktualisierung: Jan. 6, 2026 @ 21:38

Inhalt