Forum: Mikrocontroller und Digitale Elektronik ESP32 und TFT Arduino läuft nicht


von Michael (Gast)


Lesenswert?

Hallo,

habe mir mal einen ESP32 besorgt und wollte nun die ersten Schritte 
damit machen. Doch leider bekomme ich schon beim ersten Schritt 
Probleme, da mein Display nichts anzeigt. Ich habe mir das hier besorgt:

https://www.ebay.de/itm/1-8-Zoll-TFT-LCD-Display-Modul-128x160-SPI-SD-ST7735-Arduino-Raspberry-Pi-/252797557284?hash=item3adbe89a24

Als Vorlage wie ich das ganze Anschließen muss habe ich mir dieses PDF 
geladen: https://erik-bartmann.de/userfiles/downloads/esp32/ESP32TFT.pdf

Jetzt bin ich mir nicht sicher, ob ich das Display richtig angeschlossen 
habe und ob es überhaupt mit dieser Lib läuft.

So hab ich die Pins im Sketch definiert:
1
// For the breakout, you can use any 2 or 3 pins
2
// These pins will also work for the 1.8" TFT shield
3
#define TFT_CS 5
4
#define TFT_RST 9 
5
#define TFT_DC 10
6
#define TFT_SCLK 18  
7
#define TFT_MOSI 23  
8
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);

Jedoch sind die Anschlüsse an meinem Display etwas anders und habe es so 
angeschlossen:
Dispaly - ESP32
CS   - CS
RST  - RST
A0   - DC
SCK  - SCLK
SDA  - MOSI

Ich denke das ist wohl nicht richtig. Kann mir da jemand weiterhelfen?

Viele Grüße Michael

von Karl (Gast)


Lesenswert?

MOSI MISO richtig verbunden? Kontrast usw. richtig eingestellt? 
Tracemeldungen bzw. was sagen die Debugging Informationen? MOSI und SDA 
klingt aber schon mal sehr komisch...

Mach mal Bilder.

Ansonsten solltest du dir auf jeden Fall mal einen Logic Analyzer 
zulegen:

https://www.aliexpress.com/item/USB-Logic-SCM-24MHz-8-Channel-24M-seconds-Logic-Analyzer-Debugger-for-ARM-FPGA-Logic-Analyzer/32873970588.html

Da gibt es ein paar Varianten, als Software gibt es die vom Original 
(wenn es dir taugt solltest du dann aber das Original kaufen) oder 
natürlich Sigrok usw. Gibt hier im Forum einige Threads dazu.

Mit dem Logic Analyzer kannst du problemlos mal schnell nachschauen ob 
die Kommunikation richtig funktioniert.

PS: Teste das ganze mal mit einer Anwendung die definitiv funktioniert. 
Wenn du dir nicht mal sicher bist ob du das Display richtig 
angeschlossen hast kannst du so zumindest das verifizieren. Gerade für 
Anfänger ist es unsinnig sich unnötig viele Fehlerquellen ins Haus zu 
holen.

von Kritical R. (kritical_r)


Lesenswert?

hm, möchte auch mal ein display ansteurn, aber die pis verstehe ich 
nicht im bild sind auf der platine andere als unten in der beschreibung 
des shops
...CS für die sd karte liegt ganz links bei den 4 pins, wird das andere 
CS wohl das für das Display sein

hier ist ein ZipOrdner von... zur im shop erwähbteb lib, da sind viele 
beispiele drinn und die oop files :/ wahrscheinlich für die lib

https://www.tweaking4all.com/?wpfb_dl=63

hier ist auch die seite haupt homepage des verkäufers, aber dort sind 
die selben infos
https://www.makershop.de/display/lcd-tft/18-zoll-tft-lcd/

: Bearbeitet durch User
von Michael U. (amiga)


Lesenswert?

Hallo,

diese Variante?
https://eckstein-shop.de/18-inch-128x160-SPI-Serial-TFT-LCD-Display-Modul-SD-Card-Slot-Arduino-Kompatibel?curr=EUR&gclid=EAIaIQobChMI9MbIwZf03wIVaDPTCh3vCwdPEAQYAiABEgIYyPD_BwE

wenn ja, ist Deine Zuordnung erstmal richtig.
LED-Anschluß beschaltet? Virsicht, meins hat da nur 10 Ohm Vorwiderstand 
für das Backlight, das ist bei 3,3V für die Beleuchtung schon an der 
Obergrenze des zulässigen. Ich habe LED über 51 Ohm an 5V gelegt. Es 
gibt auch keinen Schalttranssitor, man kann die Beleuchtung nicht direkt 
mit einem IO steuern...

Als Lib auf ESP8266/ESP32 nutze ich fast nur die TFT_eSPI
https://github.com/Bodmer/TFT_eSPI
dort muß man die Pins allerdings in die User_Setup.h im Ordner der Lib 
eintragen.

Mit der Adafruit habe ich nur eins am ESP8266, sollte aber auch am ESP32 
laufen.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Kritical R. (kritical_r)


Lesenswert?

Ihr habt unterschiedliche Module.
Michael U. deins hat 8 PINs und Karls's hat 11 PIN's
(ohne die 4 Kontakte auf der einen Seite mit zu rechnen)

: Bearbeitet durch User
von Michael U. (amiga)


Lesenswert?

Hallo,

meine Vermutung liegt daran:

Michael schrieb:
> Jedoch sind die Anschlüsse an meinem Display etwas anders und habe es so
> angeschlossen:

Sonst muß er eben mal ein Foto seines Display hier reinstellen, 
Rückseite genügt ja. Es gibt zuviele Versionen von den Dingern, bisher 
habe ich aber nur 4-line SPI gehabt, also (/CS) SCK , MOSI (SDA), (A0) 
D/C.
SDA ist beim ST7735 prinzipiell auch Datenausgang, read wird aber wegen 
der dann  nötigen Zusatzschaltung für MISO von keinem mir bekannten 
Arduinotreiber genutzt, MISO ist also nicht angeschlossen.

Gruß aus Berlin
Michael

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

@Karl: Wie kann ich bei so einem Display den Kontrast einstellen? Der 
Sketch ist ein Beispiel aus der Lib, bei der ich nur die Defines für 
meine Pins angepasst habe. Über die Serielle Schnittstelle konnte ich 
feststellen, das der ESP soweit läuft und die Initialisierung 
abgeschlossen wird. Einen Logic Analizer brauche ich denk ich nicht, hab 
für sowas ein Oszi. Das hat bisher immer gereicht...

@Michael: Hab bei meinem Display den LED Pin über einen 100 Ohm 
Widerstand direkt an die 3,3V gelegt. Der Hintergrund leuchtet hell. 
Wäre erstmal die Frage, ob das Display überhaupt mit der Lib anzusteuern 
ist. Foto ist angehängt, ich hoffe man kann alles nötige erkennen.

Vielen Dank erstmal für die Rückmeldungen!

Viele Grüße
Michael

von Michael (Gast)


Lesenswert?

Ups, auf dem Bild ist natürlich der Braune Draht für die 
Spannungsversorgung auf die falsche Seite gerutscht. Hatte den vorher 
auf der +5 Volt unten links

von Michael U. (amiga)


Lesenswert?

Hallo,

ok, ist genau die Version, die ich hier auch habe.
Ich kann morgen mal das Display nach Deiner Belegung an ein ESP32-Board 
stöpseln und die Adafruit-Lib drauf los lassen.
Ich habe hier im Moment nur eins der 1,8" an einem ESP8266 laufen, auch 
mit der Adafruit-Lib.

Keine Ahnung, warum er oben die Adafuit-Sachen erwähnt und dann 
plötzlich die Ucglib bei ihm auftaucht, sieht für mich alles etwas 
chaotisch aus...

Gruß aus Berlin
Michael

von Michael (Gast)


Lesenswert?

Also ich hab jetzt nochmal geschaut, ich benutzt den Sketch aus der 
Adafruit_ST7735_and_ST7789_Library. Da gibt es einen graphicstest. In 
diesen hab ich nur meine Pins angepasst. Ich gehe also davon aus, das 
entweder mein Display dafür nicht passt oder ich noch einen Fehler in 
der Verdrahtung habe.

@Michael U.: Wäre klasse wenn du das mal bei dir anschliessen könntest, 
ob das bei dir läuft. Ich bin im moment noch sehr unsicher in diesen 
Dingen. Hab noch nicht viel mit Arduino gemacht und auch der ESP32 ist 
Neuland für mich....

von Michael U. (amiga)


Lesenswert?

Hallo,

Michael schrieb:
> @Michael U.: Wäre klasse wenn du das mal bei dir anschliessen könntest,
> ob das bei dir läuft. Ich bin im moment noch sehr unsicher in diesen
> Dingen. Hab noch nicht viel mit Arduino gemacht und auch der ESP32 ist
> Neuland für mich....

Ein ESP32-Board, das Display und die Verbinderkiste liegt schon bereit.
Mach ich irgendwann nachher bestimmt noch was.

Gruß aus Berlin
Michael

von Michael U. (amiga)


Lesenswert?

Hallo,

es mag Dich erstmal trösten: ich sehe bis jetzt auch nichts.
Ich habe erstmal mit der TFT_eSPI-Lib getestet und seinen 
Pin-Vorschlägen und seinem Demo. Nichts...
Display ab und einen ESP8266 D1 mini ran -> alles ok. Hätte mich auch 
gewundert, da ich diese Kombi im Einsatz habe.

Ich werde also nachher mal ergründen, was da schief läuft.
Mein Bekannter hatte die 1,8" ST7735 bisher auch nur am ES8266 und ich 
habe hier am ESP32 nur Displays mit ILI9xxx Controllern in Benutzung.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Michael (Gast)


Lesenswert?

Hallo,

das ist jetzt ja mal etwas beruhigend. Ich vermute mal, das evtl. da ein 
Pin schon irgendwie vorbelegt ist. Habe bis jetzt aber nur Erfahrung mit 
Atmels und da gab es auch Pins die man nicht einfach so verwenden 
konnte. Ich werde da mal versuchen die Pins zu tauschen und andere zu 
verwenden. Komme aber vermutlich erst am Montag oder Dienstag dazu....

Vielen Dank erstmal für deine Unterstützung!! Das hat mir schon viel 
weiter geholfen!

Grüße Michael

von Michael U. (amiga)


Lesenswert?

Hallo,

so, gerade nochmal in Ruhe angesachaut.

Michael schrieb:
> So hab ich die Pins im Sketch definiert:
> // For the breakout, you can use any 2 or 3 pins
> // These pins will also work for the 1.8" TFT shield
> #define TFT_CS 5
> #define TFT_RST 9
> #define TFT_DC 10
> #define TFT_SCLK 18
> #define TFT_MOSI 23
> Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI,
> TFT_SCLK, TFT_RST);

ändere das mal bitte in
  #define TFT_CS         5 // CS
  #define TFT_RST       16 // Reset
  #define TFT_DC        17 // A0
//  #define TFT_MOSI      23 // SDA
//  #define TFT_MISO      19 // wird nicht angeschlossen
//  #define TFT_SCLK      18 // SCK

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

GPIO9 und GPIO10 gehören eigentlich zur Flashansteuerung, die kann man 
nicht ohne weiteres als normale IO nutzen. Auf einigen ESP32-Boards sind 
sie garnicht erst rausgeführt oder direkt mit SD2 und SD3 beschriftet.

MOSI, MISO und SCLK sind die Standard SPI-Pins der ESP32-Arduino-HAL, 
die müssen nur definiert werden, wenn man auf andere Pins mappen will, 
dann gilt auch Dein Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, 
TFT_RST).

Damit läuft das grafkidemo hier problemlos. IDE 1.8.8, ESP32 v1.0.1 
Boardmanager-Version.

Gruß aus Berlin
Michael

von Michael (Gast)


Lesenswert?

Vielen vielen Dank Michael! Jetzt läuft es auch bei mir!
Nun kann ich damit beginnen und meine ersten Schritte machen.

von Michael U. (amiga)


Lesenswert?

Hallo,

Michael schrieb:
> Vielen vielen Dank Michael! Jetzt läuft es auch bei mir!
> Nun kann ich damit beginnen und meine ersten Schritte machen.

Danke für die Rückmeldung und noch viel Spaß mit den Überraschungen beim 
ESP32...
Lustig ist: bei mir läuft es auch mit der TFT_eSPI-Lib, bei meinem 
Bekannten erst nach einer Anpassung in der Lib. Ursache ict jetzt 
bekannt, er hat schon einen Bugreport geschickt, der Programmieer der 
TFT_eSPI reagiert da immer sehr schnell, Er hat offenbar kein Display 
mit ST7735 zum Test, die Ursache ist eine geänderte Timinggeschichte in 
den SPI-Routinen, die beim ST7755 Exemplarabhängig zum Fehler führt. 
Lustig ist: mein Display läuft mit der letzten release-Version 
problemlos, mein Bekannter hat die aktuellste Version drauf und da ist 
der Fehler drin.
Und wenn mein Bekannter jetzt noch rausfindet, warum es bei ihm mit der 
Adafruit-Lib nicht geht, bei mir (und jetzt ja auch bei Dir) aber 
doch...

Gruß aus Berlin
Michael

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.