In den letzten Wochen und Monaten habe ich eine Trägerplatine für den Lolin D32 Pro entwickelt. Folgende „Features“ sind enthalten:
Anschlüsse für 5 Taster
Anschluss für Neopixel oder LED (bspw. für beleuchteten Taster) – über Lötbrücken einstellbar
Anschluss für Rotary Encoder
Anschluss für RC522
Anschluss für MAX98357A-Board
Anschluss für Kopfhörer-Platine
LTC2954 On/Off Controller
PCA9555 Port Expander
Wake-Up kann wahlweise über Rotary Encoder oder Play/Pause-Taster erfolgen – über Lötbrücke einstellbar
ggf. MMC-Modus (siehe unten)
Abmessungen: 45mm x 80mm
Über Lötbrücken besteht die Möglichkeit, den auf dem D32 Pro enthaltenen SD-Karten-Slot per MMC anzusteuern, indem das Signal über die Trägerplatine zurück auf die richtigen Pins geführt wird. Dazu müssen einzelne Leitungen auf dem D32 Pro gekappt werden. Ich habe dies jedoch noch nicht getestet!
Ich habe die Platine bei JLC fertigen und bestücken lassen (nur SMD-Bauteile, den LTC2954 musste ich mangels Verfügbarkeit selbst auflöten).
Noch eine Ergänzung: Beim Testen sind mir folgende Verdrahtungsfehler aufgefallen:
die Leitung für den Kill-Pin des LTC2954 habe ich ESP32-seitig leider auf einen reinen Input-Pin (Pin 36) gelegt – diese Verbindung habe ich gekappt und eine Leitung an den freien Pin 5 angelötet
für den Pause/Play-Taster fehlt der Pullup-Widerstand, wenn dieser Taster als Wake-Up dienen soll – ich habe nachträglich einen 47k-Pullup-Widerstand gegen VIN ergänzt
evtl. ist der Pullup-Widerstand am Kill-Pin des LTC2954 zu schwach – habe die 100k testweise mal gegen 10k ersetzt
Nachfolgend findet ihr ein paar Fotos. Bei Interesse kann ich gerne die KiCAD-Dateien bereitstellen.
Schöne Umsetzung und jetzt ist auch für Anfänger ein Board verfügbar und auch mit allen Optionen . Leider bleibt immer noch das Problem Kopfhörerplatine , weil JLC den PCM5102A auch nicht mehr hat . Dazu ist mir bisher nichts einfacheres eingefallen . Aber nicht jeder braucht eine und man kann es ja auch später nachrüsten .
Ich hatte mal vor längerer Zeit SD_MMC mit dem D32 Pro und externem Cardreader ausprobiert . Ich kann mich nicht erinnern da was getrennt zu haben , auch nicht die Pullup-Widerstände . Was meinst du damit ?
VG
Habe gerade gesehen dass es keinen Stecker für ext. Cardreader gibt und du den internen Reader für SD_MMC nutzen willst . Ich ziehe die Frage zurück .
Hi @ck1 , ich verstehe deine Schaltung um Pin 36 Power_Switch nicht . Pin36 ist doch ein reiner Eingang und eigentlich kein GPIO sondern ein GPI . Wie soll damit der LTC ausgeschaltet werden ?
R7 mit 100k ist auf jeden Fall ok . Habe ich in mehreren verschiedenen Schaltungen immer so bemessen und steht auch so im Datenblatt . Weniger erhöht auch den Standby-Strom .
VG
Folgende Belegung gilt für den SD- bzw. MMC-Modus:
CS: IO4 <> —
MOSI (DI): IO23 <> IO15
CLK: IO18 <> IO14
MISO (DO): IO19 <> IO2
Habe mir das gerade nochmal angeschaut. Vielleicht kommt man ohne das Kappen von Leitungen aus, indem man die SD-IOs als Input konfiguriert. Ob die erforderliche Signalqualität letztendlich erreicht werden kann (2 mal über einen Steckverbinder zu gehen, ist ja auch schon nicht unbedingt im Sinne des Erfinders…), wäre auszuprobieren. Du solltest auch noch einen Blick auf die Pullup-Widerstände am SD-Modul werfen: Wenn ich es richtig im Kopf habe, werden für CLK und MOSI Pullups benötigt, so dass R3 und R8 bleiben können. R10 für MISO müsste evtl. entfernt werden. Inwiefern der Pullup R2 am CS-Pin stört, weiß ich nicht.
Ich hoffe, das hilft dir weiter. Berichte gerne von deinen Erkenntnissen…
Habe für meinen beleuchteten Play/Pause-Taster die Led.cpp um eine simple Statusanzeige erweitert: Wenn Musik abgespielt wird, leuchtet der Taster dauerhaft; wenn die Wiedergabe pausiert oder die Playlist zuende ist, blinkt der Taster. Habe es bisher nur mit einfachen MP3-Playlists getestet, nicht mit Webstreams etc. Vielleicht kann es ja jemand gebrauchen… Ihr findet es in meinem Fork:
(aktuell ist es so umgesetzt, dass es nicht zusammen mit einem Neopixel-Ring funktioniert – dies sieht meine Platine auch nicht vor)
Funktioniert eigentlich der PCA9555 soweit ordentlich bei dir?
Mein PCB dazu ist ja noch unterwegs; ansonsten habe ich das nur mit Jumperwires getestet.
Eine Sache noch: Du kannst die Stackgröße in der Led.cpp bissl reduzieren. Ich hab’s kürzlich, nachdem ich die Funktion uxTaskGetStackHighWaterMark() entdeckt habe, auf 1512 gesetzt. Vielleicht kannst das in einer abgespeckten LED-Variante noch weiter reduzieren.
Ich habe nun endlich Version 2 der Trägerplatine erfolgreich in Betrieb genommen - Infos zur fertigen Box findet ihr hier: Zeigt her eure ESPuinos - #249 von ck1
Nachfolgend die wesentlichen Features und ein paar Bilder mitsamt Schaltplan.
MicroSD-Slot (MMC)
Anschlüsse für 5 Taster
LTC2954 On/Off Controller
PCA9555 Port Expander
Anschluss für Neopixel oder LED (bspw. für beleuchteten Taster) – über Lötbrücken einstellbar
Anschluss für Rotary Encoder
Anschluss für RC522 oder PN5180
Anschluss für MAX98357A-Board
Anschluss für Kopfhörer-Platine
Anschluss für Hall-Sensor
Anschluss für I2C-Erweiterung
(die POWER_SWITCH-Leitung habe ich nachträglich von GPIO12 auf GPIO5 korrigiert)
Damit die Trägerplatine zusammen mit Torstens Platine (D32 pro LiFePO4) funktioniert, habe ich diese etwas modifiziert (siehe nachfolgenden Schaltplan): Ich habe einen High-Side Switch (AP22913W6-7) eingebaut, um die Versorgungsspannung auch im Batteriebetrieb über den LTC2954 schalten zu können.