Forum: Mikrocontroller und Digitale Elektronik Cheap Yellow Display


von Christoph M. (mchris)


Lesenswert?

Im Moment versuche ich gerade das "Cheap Yellow Display" in Betrieb zu 
nehmen.

https://radio-bastler.de/forum/showthread.php?tid=24576

Nach dem Einstecken zeigte es zeigte das Display ein Demo-Menue.

Ich habe es dann mit einem "Hello World" von hier:
https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display/blob/main/Examples/Basics/1-HelloWorld/1-HelloWorld.ino

neu geflasht, aber es bleibt dunkel. Weiß jemand, woran das liegt?

von Christoph M. (mchris)


Lesenswert?

Ok, jetzt geht es.
Hier die Lösung, falls jemand das Display auch verwendet:

Um das Display zu betreiben, muss man die Library TFT eSPI installieren
( https://github.com/Bodmer/TFT_eSPI )

Die läuft aber nicht automatisch, da sie für alle möglichen Displays 
gemacht ist und die Default-Konfiguration nicht passt.
Die muss man von hier

https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display/blob/main/DisplayConfig/User_Setup.h

in den "TFT eSPI" Library-Ordner kopieren ( und vermutlich hoffen, dass 
sich nicht irgendwann das Hardware Layout ändert )

Anleitung dazu hier:
https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display/blob/main/SETUP.md

von Andrew T. (marsufant)


Lesenswert?

Christoph M. schrieb:
> Im Moment versuche ich gerade das "Cheap Yellow Display" in
> Betrieb zu nehmen.
> https://radio-bastler.de/forum/showthread.php?tid=24576
>
> ..
> neu geflasht, aber es bleibt dunkel. Weiß jemand, woran das liegt?


Und falls du wieder Unterstützung brauchst, kannst du auch Jupp aka 
saarfranzose direkt im dortigen Forum anschreiben, er ist sehr 
hilfsbereit.

von Christoph M. (mchris)


Lesenswert?

>Und falls du wieder Unterstützung brauchst,

Vielen Dank für die Info. Im Moment will ich nur herauskriegen, wie man 
Daten einer seriellen 3.3V Schnittstelle in das CYD kriegt.
Kann es sein, dass sich der serielle Anschluss TX/RX die Pins mit dem 
CH340 USB-Treiber teilt?

von Oliver R. (orb)


Lesenswert?

Christoph M. schrieb:
> Kann es sein, dass sich der serielle Anschluss TX/RX die Pins mit dem
> CH340 USB-Treiber teilt?

Zumindest sagt das der Schaltplan.

von Christoph M. (mchris)


Lesenswert?

>Zumindest sagt das der Schaltplan.

Hmm .. wie kann man dann extern Daten einspeisen ohne eine Kurzschluss 
mit TX vom CH340?

von Joachim B. (jar)


Lesenswert?

Christoph M. schrieb:
> Hmm .. wie kann man dann extern Daten einspeisen ohne eine Kurzschluss
> mit TX vom CH340?

Serienwiderstände?
Es werden ja nicht beide zugleich aktiv sein.

von Christoph M. (mchris)


Lesenswert?

>Serienwiderstände?

Tja, das wäre dann wie bei einem Arduino Uno/Nano o.ä.

Aber: siehst du hier welche?
https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display/tree/main/OriginalDocumentation/5-Schematic

von Steve van de Grens (roehrmond)


Lesenswert?

Christoph M. schrieb:
> Aber: siehst du hier welche?

Ich sehe in diesem Zusammenhang R5 und R6, aber die erfüllen wohl einen 
anderen Zweck.

: Bearbeitet durch User
von Christoph M. (mchris)


Lesenswert?

Die RX/TX Leitungen des ESP32 sind hart an den CH340 angeschlossen 
(U0RXD,U0TXD). Die Widerstände gehen nach außen an den Stecker, deshalb 
haben die Signale des CH340 immer ein höhere Priorität als die vom 
Stecker. Irgendwo habe ich gelesen, dass es funktioniert, wenn die 
USB-Schnittstelle nicht bestromt ist. Das finde ich aber eher 
unpraktisch.

von Nicht Joachim B. (roehrmond)


Lesenswert?

Christoph M. schrieb:
> Irgendwo habe ich gelesen, dass es funktioniert, wenn die
> USB-Schnittstelle nicht bestromt ist.

Im Datenblatt steht, dass die Spannung an allen Eingängen maximal VCC + 
0,5V sein darf. Wenn VCC null Volt ist, darf man man also nicht 5V 
anlegen.

Beim CP2102 dürfte man das.

: Bearbeitet durch User
von Christoph M. (mchris)


Lesenswert?

Die beste Möglichkeit, Daten seriell in das Display zu bringen, ist 
"SoftwareSerial" zu verwenden, da die freien Pins keine Hardware-Uart 
haben.
1
#include <SoftwareSerial.h>
2
3
EspSoftwareSerial::UART SerialSoft;
4
5
//#define TFT_BL       21 // RED is backlight enable signal cannot be used freely
6
#define SOFTWARE_TXPIN 22 // YELLOW cable connector P3
7
#define SOFTWARE_RXPIN 35 // BLUE can only be used as input
8
#define SOFTWARE_GND      // BLACK GND
9
10
void setup()
11
{
12
  SerialSoft.begin(9600, SWSERIAL_8N1, SOFTWARE_RXPIN, SOFTWARE_TXPIN, false);
13
..

Hier gibt es noch eine Diskussion zu den Anschlussteckern:
Beitrag "Welcher Connector ist bem Cheap yello Display verbaut"

von Rüdiger B. (rbruns)


Lesenswert?

Den ESP01 verwenden, der hat keinen USB.
https://edistechlab.com/esp8266-01-einfach-erklaert/?v=3a52f3c22ed6
hat leider zuwenig PINs aber der ESP32 hat 3 Serielle Ports:
https://circuits4you.com/2018/12/31/esp32-hardware-serial2-example/

: Bearbeitet durch User
von Christoph M. (mchris)


Angehängte Dateien:

Lesenswert?

>Den ESP01 verwenden, der hat keinen USB.
Ich nehme an, du weißt nicht was das Cheap Yellow Display ist. Im Anhang 
ein Bild, da lässt sich die MCU nicht austauschen.

von Rüdiger B. (rbruns)


Lesenswert?

Auf IO16/17 scheint der 2.te Serielle Port zu sein.

von Harald K. (kirnbichler)



Lesenswert?

Das ist das Pinout des verwendeten ESP32-WROOM

UART0 ist auf Pin 34/34 (IO3/1)
UART1 ist auf Pin 17/18 (IO9/10)
UART2 ist auf Pin 27/28 (IO16/17)

Diese I/Os scheinen nicht verwendet zu werden (der "Schaltplan" des 
Boards ist eines der üblichen 
Such-Dir-Deine-Verbindungen-Selbst-Wimmelbildchen)

von Christoph M. (mchris)


Angehängte Dateien:

Lesenswert?

>der "Schaltplan" des Boards ist eines der üblichen
>Such-Dir-Deine-Verbindungen-Selbst-Wimmelbildchen

So ist es wohl.
Fast alle Pins sind mehrfach belegt, außer P3 scheint zwei freie zu 
haben (Bild: Anschluss rechts unten). Leider haben sie wertvolle IOs an 
die RGB-Led verschwendet.

von Harald K. (kirnbichler)


Lesenswert?

"Mein" Schaltplan ist zwar von der Variante mit einem größeren Display 
(3.5" statt 2.8") und daher einem anderen Layout (die RGB-LED ist auf 
der anderen Platinenseite bestückt, aber das Elend dürfte das gleiche 
sien.


Christoph M. schrieb:
> Fast alle Pins sind mehrfach belegt

Ja, leider doch. Meine Wimmelbildsuche hatte die übersehen.
IO16/17 hängen an der RGB-LED, damit ist UART2 blockiert.

IO9/10 sind mit dem nicht bestückten Footprint des SPI-Flash (U4) 
verbunden, damit könnte UART1 vielleicht noch nutzbar sein.

von J. S. (jojos)


Lesenswert?

Der ESP32 kann die Hardware UART doch auf beliebige Pins mappen, wenn 
auf dem Connector zwei freie liegen sollte das gehen.

von Christoph M. (mchris)


Lesenswert?

>Der ESP32 kann die Hardware UART doch auf beliebige Pins mappen, wenn
>auf dem Connector zwei freie liegen sollte das gehen.

Auf dem Pinout-Bild ist das aber nicht ersichtlich. Bist Du sicher?

: Bearbeitet durch User
von J. S. (jojos)


Lesenswert?

Da wird ja nur der Default angezeigt. Das ist ein Feature des ESP32.

von Harald K. (kirnbichler)


Lesenswert?

Harald K. schrieb:
> IO9/10 sind mit dem nicht bestückten Footprint des SPI-Flash (U4)
> verbunden, damit könnte UART1 vielleicht noch nutzbar sein.

Nachtrag:
Tatsächlich sind die auch mit dem Flash-Chip innerhalb des ESP32-WROOM 
verbunden und nur dann nutzbar, wenn das Flash nicht im QSPI-Modus 
angesteuert wird.

Man wird die Funktion also irgendwelchen anderen unbenutzten GPIOs 
zuweisen müssen.

Da wird man im miesen Wimmelbildschaltplan 'ne Weile suchen müssen, bis 
man die sicher identifiziert hat.

von Christoph M. (mchris)


Lesenswert?

>Da wird ja nur der Default angezeigt. Das ist ein Feature des ESP32.

Sehr interessant, danke :-)
Allerdings legt dann die konkrete Implementierung aus mir unerfindlichen 
Gründen das Display lahm ..
1
  int8_t rxPin=35;
2
  int8_t txPin=22;
3
  int8_t ctsPin = -1;
4
  int8_t rtsPin = -1;
5
  Serial1.setPins( rxPin, txPin, ctsPin, rtsPin);
6
  Serial1.begin(9600);

von Christoph M. (mchris)


Lesenswert?

>Da wird man im miesen Wimmelbildschaltplan 'ne Weile suchen müssen, bis
>man die sicher identifiziert hat.

Also wie schon geschrieben: Der einzige Stecker mit zwei relativ freien 
IOs schein P3 mit GPIO22 und GPIO35. Wer mehr findet ..

von J. S. (jojos)


Lesenswert?

Dann benutzt der Displaycode vielleicht unnötigerweise den Pin 22 oder 
35.

von Christoph M. (mchris)


Lesenswert?

Glaub ich nicht, weil's mit Softwareserial auf diesen Pins geht.

von Rüdiger B. (rbruns)


Lesenswert?

Vielleich solltest du Serial2 oder 3 ummappen?

von Christoph M. (mchris)


Lesenswert?

>Vielleich solltest du Serial2 oder 3 ummappen?
Super Idee, damit geht es.
1
  int8_t rxPin=35;
2
  int8_t txPin=22;
3
  int8_t ctsPin = -1;
4
  int8_t rtsPin = -1;
5
  Serial2.begin(9600);
6
  Serial2.setPins( rxPin, txPin, ctsPin, rtsPin);

Die Frage ist warum?
Ich habe im Programm-Header noch die SPI für den Touchscreen 
eingebunden. Vielleicht ist ja Serial1 irgendwie mit der SPI verbandelt 
..
1
#include <SPI.h>
2
#include <XPT2046_Touchscreen.h>

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.