Forum: Mikrocontroller und Digitale Elektronik ESP32 Wrover-B - GPIO Einschränkungen - GPIO19, GPIO34, GPIO35


von Frank (Gast)


Lesenswert?

Hallo,
ich habe gestern damit verbracht ein 32x64er LED Matrix an einem ESP32 
wrover-b zum laufen zu bekommen.

Von vornerein war klar das GPI(O):
- 34, 35, 36 und 39 nur Inputs sind
- 16 und 17 aufgrund der Bauart gesperrt sind (Speicher)
- ich 21 und 22 für I2C brauche

Ich bin dennoch fast verzweifelt, mit einem normalen ESP32 lief das 
gleiche Programm mit Nutzung GPIO19, GPIO34, GPIO35 (ich hab viel 
probiert, glaube ich zumindest).

Sicher bin ich mir das jedsesmal wenn ich einen drei nutze, geht das 
Display nicht mehr geht(getestet mit CLK, LAT, OE und den beiden RGB).

Ich erinnere mich vage das irgendwas mit dem GPIO19 war, habe im 
Datenblatt aber nichts mehr gefunden (OGPIO19, VSPIQ, U0CTS, EMAC_TXD0).

Wenn ich eine DuoLED auf 34/35 blinken lasse machen die beiden das was 
sie sollten :( an der LED Matrix nicht mehr.

Weiß jemand ob GPIO19, GPIO34, GPIO35 irgenwelche Einschränkungen auf 
dem wrover-b haben wenn es schnell wird (die matrix macht anscheinend 
50fps@12b)?

von Michael U. (amiga)


Lesenswert?

Hallo,

auf Anhieb weiß ich nichts. Möglich, das eine IO-Gruppe wegen des PSRAM 
auf eine andere Spannung als 3,3V gesetzt wird.

An einem normalen ESP32-Modul ohne PSRAM habe ich ein 64x64 mit der
ESP32-RGB64x32MatrixPanel-I2S-DMA Lib unter ArduinoIDE laufen, da hängt 
die Matrix bei mir an
#define R1_PIN_DEFAULT  25
#define G1_PIN_DEFAULT  26
#define B1_PIN_DEFAULT  27
#define R2_PIN_DEFAULT  14
#define G2_PIN_DEFAULT  12
#define B2_PIN_DEFAULT  13

#define A_PIN_DEFAULT   23
#define B_PIN_DEFAULT   19
#define C_PIN_DEFAULT    5
#define D_PIN_DEFAULT   17
#define E_PIN_DEFAULT   18 // Change to a valid pin if using a 64 pixel 
row panel.

#define LAT_PIN_DEFAULT  4
#define OE_PIN_DEFAULT  15

#define CLK_PIN_DEFAULT 16

Beim 32x64 wäre hier E_PIN_DEFAULT -1, also unbenutzt.

Gruß aus Berlin
Michael

von Frank (Gast)


Lesenswert?

Michael U. schrieb:
> auf Anhieb weiß ich nichts. Möglich, das eine IO-Gruppe wegen des PSRAM
> auf eine andere Spannung als 3,3V gesetzt wird.

hmmm, PSRAM das könnte sein, ich habe die Module sehr güpnsig bekommen, 
da der falsche PSRAM vom Hersteller verbaut wurde... mir egal ich nutze 
nur die 16MB flash... aber das könnte natürlich effekte auf andere Ports 
haben werde alle mal messen...

Du hast 64x64 am laufen? 2x 34x64 als Quadrat oder nebeneinander?

von Michael U. (amiga)


Lesenswert?

Hallo,

Frank schrieb:
> Du hast 64x64 am laufen? 2x 34x64 als Quadrat oder nebeneinander?

64x64 2,5mmm als Quadrat, war ein günstiges Angabot damals irgendwo bei 
ebay als 2er-Pack. Eins hat mein Bekannter, das andere ich.

Der hat letztlich auch immer mehr an die Software angebaut.
Oben Laufschrift mit Wettermeldungen und Innen-Außentemperaur und 
Meldungen per MQTT, Dann eine abgewandelte Morph-Clock, Datum darunter.
Die untere Hälfte als Lagerfeuer. Wahlweise auch CD-Coveranzeige auf dem 
kompletten Display, macht bei der Auflösung 64x64 eigentlich keinen 
wirklichen Sinn, sieht aber ganz nett aus.
Im Moment experimetiert er mit Audio-Spectrumdarstellung. Hauptproblem 
war jeweils, alles ohne Hänger und Aussetzer laufen zu lassen.

Gruß aus Berlin
Michael

von Frank (Gast)


Lesenswert?

Michael U. schrieb:
> Hauptproblem war jeweils, alles ohne Hänger und Aussetzer laufen zu lassen.

Nice! Ja statt Hänger/Aussetzer hatte ich es vor dem ESP32 eher mit 
Geschwindigkeit/Flackern. Dann mit dem ESP32 mit mitleuchten von 
benachtbarten LEDs (bei Gelb/Weiss) also ne Art Schlieren.

Jetzt mit dem Code von VGottselig (Github/ESP32-RGB-Matrix-Display) ist 
es einfach nur noch stressfrei. Das läuft im Hintergrund, ich schiebe 
nur die Werte in Variablen aus der Hauptschleife - easy ;)

Grüße aus Dresden,
Frank

von Michael U. (amiga)


Lesenswert?

Hallo,

Frank schrieb:
> Jetzt mit dem Code von VGottselig (Github/ESP32-RGB-Matrix-Display) ist
> es einfach nur noch stressfrei. Das läuft im Hintergrund, ich schiebe
> nur die Werte in Variablen aus der Hauptschleife - easy ;)

eigentlich gehen nur I2S-DMA-Sachen nahezu ohne Störungen weil sie von 
der Hardware erledigt werden. Zumindest solange, wie der DMA-Buffer 
schnell genug nachgefüllt wird. z.B. kann myApixuWeather zusammen mit 
dem JSON-Decoder da durchaus für Chaos sorgen, weil eben Antwortzeiten 
im Internet unsicher sind.
Die Morph-Clock, Idee von hier:
https://www.instructables.com/id/Morphing-Digital-Clock/

möchte auch ein recht genaues Timing, weil schon kleine Hacker durchuas 
sichtbar werden. Das Textscrolling oben war auch recht anfällig.
Dazu das Lagerfeuer in der unteren Häfte, da wollen 2048 LEDs mit 50fps 
aktualisiert werden...

Inzwischen nutze ich seinen Code nur noch, ich steige da zwar durchuas 
noch durch, aber seine ganze Timer- und Eventnutzung ist schon etwas 
"anstrengend". ;)

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.