Fotoschau mit ESP32, TFT und SD-Kartenleser

Lesezeit: 4 Minuten


Ziele des Projekts

  • Fotos von einem SD-Karten­leser laden und auf einem TFT anzeigen
  • Beschrei­bung zum Foto anzeigen

Verwendete Hardware

Pinbelegung des TFT-Displays mit 480x320 Pixeln

Die Pins für den SD-Karten­leser (im Beispiel: SD-CS und SDO) müssen in der Pin-Leiste vorhan­den sein:

Pin­bele­gung am ESP32-Wroom

SD_CS: 15 (SD-Karten­leser)
SDO (MISO): 19 (SD-Karten­leser)
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­folge der Pins kann unter­schiedlich sein. Achte auf die Beschrif­tung der Pins.

Fotos erstellen

Du benötigst eine Mini-SD-Karte, sie muss mit FAT-32 for­matiert sein. Bei neu gekauften SD-Karten ist das in der Regel der Fall. Fotos dür­fen max­i­mal das For­mat von 480x320 Pix­eln haben und müssen im For­mat bmp vor­liegen. Du kannst beliebige Fotos skalieren und entsprechend abspe­ich­ern.

Ich ver­wende hierzu das Pro­gramm GIMP. Beachte die notwendi­gen Ein­stel­lun­gen beim Spe­ich­ern des Bildes.

Natür­lich darf das Bild auch klein­er als 480x320 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 480x320 Pixel

alle Fotos Hart­mut Waller

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-Karten­leser ver­wen­den den SPI-Bus. Jedes Gerät benötigt aber eigene Daten­leitun­gen. Der ESP32-Wroom ver­fügt über zwei SPI-Busse, die gle­ichzeit­ig nutzbar sind.

Benötigte Bibliotheken

Die ver­wen­dete Bib­lio­thek für das Dis­play mit 480x320 Pix­eln kann nicht über die Bib­lio­theksver­wal­tung instal­liert wer­den. Sie muss herunter geladen wer­den:
https://github.com/prenticedavid/Adafruit_ST7796S_kbv
und mit

Sketch -> Bib­lio­thek ein­binden -> zip-Bib­lio­thek hinzufü­gen

instal­liert wer­den.

Benötigte Bib­lio­thek für TFT-Dis­play mit 320x240 Pix­eln

Das Programm

Bibliotheken einbinden und Variable definieren

Die SPI-Pins für das TFT-Dis­play entsprechen der Stan­dard­kon­fig­u­ra­tion VSPI und müssen nicht deklar­i­ert wer­den.
Für den SD-Karten­leser sind einige Para­me­ter erforder­lich:

  • der Typ der SD-Karte (3)
  • die Geschwindigkeit (SD_SCK_MHZ)
  • Der Daten­pin (CSPin)
  • die Fotos müssen im For­mat bmp in der max­i­malen Größe 480x320 vor­liegen
  • die Fotos müssen im Root-Verze­ich­nis der SD-Karte liegen
  • 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

Der setup-Teil

Der set­up-Teil startet den SD-Karten­leser und das TFT-Dis­play. Der erfol­gre­iche Start des SD-Karten­le­sers wird im Seriellen Mon­i­tor und auf dem TFT-Dis­play angezeigt.

Der loop-Teil

Jedes Foto muss mit drawBMP an das TFT-Dis­play (tft) mit den x- und y‑Koordinaten des Start­punk­tes übergeben wer­den.
Je nach Zus­tand des Para­me­ter Beschrei­bung (true/false) wird eine Infor­ma­tion zum Foto angezeigt.
Die Umlaute müssen mit tft.write() und ⇒hexa­dez­i­malen Code definiert wer­den.


Quellen


Letzte Aktualisierung: Okt. 23, 2025 @ 7:21