Lolin D32 pro mit SD_MMC, PN5180, max. fünf Buttons und Port-Expander (SMD)

Das ist natürlich nicht schlecht.

Das gilt aber auch nur für JLCPCB, wo der AW… aktuell nicht verfügbar ist. Dass der PCA bei JLC so teuer ist, scheint mir am Chipmangel zu liegen. Der Preis dort ist derzeit tatsächlich echt übel.
Bei AliExpress unterscheiden die sich preislich auf jeden Fall kaum.

So, ich habe den Fix eben hochgeladen:

Paar Infos dazu:

  • Es ist so viel Code, weil man den aktuellen Zustand, ob ein Pin als Input oder Output konfiguriert wird, nicht abrufen kann vom PCA. Bevor ich jetzt anfange, den Zustand selbst zu verwalten (und dann läuft es doch wieder auseinander), gehe ich einfach auf Nummer sicher und konfiguriere alle Ausgänge erneut als Ausgänge. Bisher sind das nur die Enable-Pins für Kopfhörer oder Amp).
  • Zusätzlich wird, das habe ich zuvor ja beschrieben, HP_DETECT als Output konfiguriert. Das verhindert, dass wegen diesem Pin ein Interrupt geworfen wird. Beim nächsten Neustart wird der wieder auf Input gesetzt, so dass man davon nix mitkriegt.
  • Anschließend werden alle Outputs auf logisch NULL gesetzt. Das ist vermutlich nicht notwendig, aber sicher ist sicher.
  • Zwischen den Funktionen Port_WriteInitMaskForOutputChannels() und Port_MakeSomeChannelsOutputForShutdown() haben wir ein Stück weit Code-Duplikation. Vielleicht betreibe ich da auch noch ein wenig Refactoring. Aber grundsätzlich wollte ich das so ein bisschen trennen.

Ich hatte in letzter Zeit so ein bisschen Probleme, was das zuverlässige Booten des Lolin D32pro angeht, wenn er zuvor im Deepsleep war und zudem die Kopfhörerplatine angesteckt war. Beim Startvorgang scheint die Spannung kurz ordentlich einzubrechen (das kann ich auf dem Oszilloskop auch sehen).

Wie auch immer: Mit einem 100uF-Kondensator habe ich das gefixt bekommen. Den kann man auf dem EXT-Konnektor z.B. einfach zwischen Pin 8 und 10 einlöten.

Habe den gerade eingelötet und siehe da meine Bootprobleme sind auch weg!

Ich dachte es liegt am Reset-Timing aber es war tatsächlich der Einbruch in der Spannungsversorgung.

Hmm, mir war das gar nicht so klar (hatte ich nicht richtig gelesen?), dass du da auch tatsächlich Bootprobleme hast. Ich hatte das so ein bisschen als Verbesserungsvorschlag verbucht, um auf der sicheren Seite zu sein. Sorry!

Also es ist wohl auch so eine gewisse Timingsache (,die man vielleicht auch in den Griff kriegt, wenn man den ESP32 erstmal „in Ruhe“ starten lässt und erst dann die Peripherie zuschaltet). Aber jetzt beim Testen des PRs für den MAX17055 bin ich ansonsten irgendwie auf gar keinen grünen Zweig mehr gekommen. Daher habe ich es dann gestern einfach getestet mit Kondensator und es lief.

Was mir aber generell beim D32 pro immer so ein bisschen auffällt: Bis der ESPuino-Start mal losgeht (das definiere ich als den Zeitraum zwischen Aufwecken und bis auf dem Neopixel was zu sehen ist) dauert länger als bei den anderen Develboards (zB Lolin32, D32, DevkitC), die ich so hier habe. Warum das so ist weiß ich aber nicht. Ist jetzt nicht dramatisch und daher kein Showstopper, aber wäre mir der Grund klar und es wäre einfach zu fixen, dann hätte ich das schon gemacht.

@alle: Ist sonst noch jmd. hier, der/die Bootprobleme mit dieser Platine hat?

Also ich hatte bisher mit anderen Boards (TTGO T7/T18) keine Probleme mit PlatformIO Upload/Monitor. Mit dem D32 Pro aber umso mehr: Erst der unzuverlässige Reset, jetzt der Einbruch der Spannungsversorgung beim Booten. Scheint am Board zu liegen…

Bzgl. langer Bootzeit könnte das eevt. an der PSRAM Prüfung liegen. Das kann man mit Arduino 2.0.2 überspringen, z.B. beim Aufwecken. Ist vor einigen Tagen in den master aufgenommen worden

Interessanter Punkt!

Ich werde den T7 mal testen: LilyGo TTGO T7.

@Rest: Ich hoffe es ist da jetzt niemand beunruhigt, der diesen PCB bereits in Verwendung hat. Mit dem Kondensator scheint mir das Bootproblem, sofern es denn überhaupt bei euch auftritt, gelöst zu sein und das geht ja recht einfach. Das Problem hat sich jetzt nachträglich auf jeden Fall erst ergeben, sonst hätte ich das gleich eingeplant - sorry dafür.

So ein Kondensator ist jedoch einfach zu besorgen. Ich nutze diese: https://www.ebay.de/itm/124068190266 => 100uF / 16 V. Die sind dann nur 7 mm hoch und haben einen Durchmesser von 5 mm.

Grundsätzlich: Elektrolyt-Kondensator (ElKo) mit 100 uF mit 10 oder 16 V (mehr als 16 V geht natürlich immer) und optimalerweise ein Beinchenabstand von 2,5 mm (Rastermaß). Wenn es jedoch mehr ist, dann ist das auch nicht tragisch. Stabilisiert wird damit die Spannung zwischen 3.3 V und GND. Dafür eignen sich beispielsweise auf dem EXT-Anschluss die Anschlüsse 8 und 10; die liegen direkt nebeneinander (deswegen auch die Empfehlung mit 2,5 mm Beinchenabstand).

GANZ WICHTIG! Achtet darauf, die Polarität des Kondensators einzuhalten!

Hier mal ein Bild vom eingelöteten Kondensator, damit man die Größenverhältnisse einschätzen kann. Der geneigte Forenteilnehmer wird sich hier sicher wundern, was das für ein PCB ist :slight_smile:. Dazu sei gesagt: Ein Prototyp, den ich jetzt nachträglich nochmal verändert habe. Für den neuen ESPuino meines Sohnes habe ich einen PCB gebraucht, der noch etwas kürzer ist und dann habe ich etwas experimentiert. Stay tuned :slight_smile:.


Die Brücke, die man unten sieht, ist eine von IO36 nach IO5, damit ich Interrupts auf der LED des D32 pro sehen kann.

man könnte auf dem PCB noch paar SMD C vorsehen… da gibts ja auch welche in passender Größe…
(für die nächste Rev)
https://www.reichelt.de/elko-smd-100-f-10v-105-c-1000h-low-esr-fc-v-100u-10-p200097.html?&nbc=1

Hatte bisher keine Bootprobleme, bei mir wird aber meist auch hart abgeschaltet

Ein paar Rest-Exemplare von rev3.2 / rev3.3 sind noch verfügbar.
Ansonsten ist das hier der designierte Nachfolger: ESPuino-miniD32pro: Lolin D32 pro mit SD_MMC und Port-Expander (SMD). Dort ist auch beschrieben, was verbessert/geändert wurde. Wäre auch hier gegangen, aber das wird dann zu unübersichtlich.

Mittlerweile habe ich alles beisammen und mich an das Verlöten der Teile gemacht und war eigentlich erfolgreich. Ich habe mit viel Flussmittel und normalem Lötkolben auch den Portexpander verlötet bekommen. Leider nicht so ganz mittig, aber es läuft (so halb).

Die Belegung der Buttons passt nicht so ganz. Bei mir funktioniert Bnt1 nicht. Ich habe den next nun auf Btn5 konfiguriert.
Weiter habe ich das Phänomen, dass im deepsleep der Neopixel leuchtet. Könnte es sein, dass dafür ein nicht richtig verlöteter Portexpander der Grund sein könnte? Hat jemand vielleicht ähnliche Erfahrungen oder Probleme bereits gelöst?

Zum Neopixel habe ich die Vermutung, dass die Mosfets vertauscht sind.
Bei den Port-Expandern habe ich inzwischen selbst schon viele gelötet und tatsächlich hatte ich es vor ein paar Tagen zum ersten Mal, dass ich aus so einer 4er-Bestellung via eBay zwei dabei hatte, die kaputt waren. Also einer irgendwie komplett und bei nem zweiten mindestens der Pin, der MAX.SD ansteuert.
Oder von den Kopfhörerplatinen habe ich inzwischen 25 Stück gelötet. Da hatte ich jetzt drei UDA1334 dabei, die kaputt waren und ein TDA1308, bei dem ein Kanal defekt war.
Ergo: Kann schon auch mal sein, dass mal ein Bauteil defekt ist.

So wie es ausschaut habe ich auf der Platine bei irlml2244 den mit einem X zu beginn und bei irlml6244 den mit S zu beginn. Sollte also stimmen, wenn ich die Datenblätter richtig gelesen habe. Ich schaue also noch mal…

Hallo,
ich hab mich nach Ewigkeiten mal durchringen können die Sachen zusammenzubauen. Ich bekomme aber nur ein ganz leises Signal an meinem Lautsprecher (alter Dual 4 Ohm), das nur hörbar ist wenn ich mein Ohr dagegen halte. Verschiedene Gain Einstellungen (bin jetzt bei 15dB) und Lautstärken habe ich leider ohne Erfolg ausprobiert. Hat jemand vielleicht eine Idee?

Grüße
Adel

@w4b-zero Hattest du nicht mal ein Problem mit leiser Musikausgabe? Meine das lag aber am Hörspiel.
Mir fällt sonst nix dazu sein. Lötpunkte mal kontrollieren alle. Verschraubungen auch.

Das war noch ohne Kopfhörer-Platine.
hatten wir nicht #define HEADPHONE_ADJUST_ENABLE aktiviert (also // entfernt) obwohl keine Platine angeschlossen war?
ich meine, das da nur eine simple änderung in der konfig die lösung war.
oder war es #define PLAY_MONO_SPEAKER?
kann es gerade nicht testen, da ich überall eine kopfhörerplatine dran habe und diesen ausgang am verstärker nutze. könnte es montag vormittag testen (dann ist der kurze in der schule, und ich kann es an seinem espuino testen)

image
das ist die aktuelle Konfiguration in meiner settings.h.

Du kannst das auch aktivieren, hat hier keine negativen Einflüsse.
Ansonsten miss mal die Spannung von MAX.SD gegen GND.

MAX.SD ist auf 3.3V und mit dem logic analyzer sehe ich auch, dass was auf DIN vom MAX reinkommt.

Also dann fällt mir eigentlich nur ein, mal ein anderes Chassis zu testen. Hört sich ja generell erstmal so an, als sollte alles funktionieren (sofern die Lötpunkte passen).

du hast aber im Web Interface die Max Lautstärke erhöht?

<<hatte den Fehler auch