ESP32 lässt sich nicht flashen

Ui, den kannte ich gar nicht. Tja, das ist natürlich schade, dass es das bei JLC nicht gibt (ich möchte ja weg davon, ständig Sachen für Andere löten zu müssen) - zumal das Datasheet echt gut ist.
Aber grundsätzlich ist das Löten von QFN nicht so wild, wie man denkt. Also man sollte bisschen Erfahrung mit SMD-Löten haben, aber dann geht’s eigentlich. Ich setze solche Nadeln in GA19 ein. Zugegeben: Ich habe mich von dem Bild täuschen lassen und überlesen, dass die 25 mm lang sind. Das ist viel zu lang. Ich habe dann ein Beinchen von einem bedrahteten Widerstand durch die Nadel gesteckt und mit einem Seitenschneider nach vielleicht 5 mm hinter dem Plastik abgepetzt. Damit drückt man die Öffnung der Nadel ein gutes Stück zusammen (aber wegen dem eingeführten Draht nicht komplett), aber wenn man die Nadel um 90 Grad dreht und dann nochmal mit dem Seitenschneider leicht drückt, dann kriegt man das wieder geöffnet. Ansonsten halt die Nadel gleich passend in GA19 kaufen.

Dann gebe ich Lötpaste (mit einem Spatel oder einem Cocktailstäbchen) in eine Spritze und stecke die Nadel vorne drauf. Im Anschluss erwärme ich den PCB auf vielleicht 45 Grad (pi mal Daumen), so dass im Anschluss die Lötpaste bei der Applikation per Spritze drauf sitzen bleibt. Erwärmt man zu stark, dann haftet die Lötpaste zwar gut, aber dann verdampft auch das Flussmittel recht schnell und das Ganze lässt sich nicht mehr so schön löten.
Na jedenfalls gebe ich quer (richtig gelesen: quer! Man gibt also Lötpaste im Überschuss drauf) zu den Lötpads für die „Beinchen“ dann auf allen vier Seiten eine kleine „Wurst“ aus Lötpaste drauf und in der Mitte (GND-Pad) einen kleinen Klecks. Dann platziere ich den QFN-Chip per Pinzette schon möglichst genau und drücke ihn leicht an. Üblicherweise löte ich dann mittels Hotplate, aber das geht mit Heißluft genauso gut. Der Trick ist einfach nur, wenn die Lötpaste geschmolzen ist, 2-3 mal mit der Pinzette den QFN-Chip von oben anzutippen. Dann setzt der Chip sich nochmal besser und zentriert sich auch. Also so lange man den nicht von der Seite schiebt/antippt, muss man da keine Angst haben, dass man den total verschiebt. Ganz im Gegenteil, es hilft!
Im Anschluss sieht man dann, dass neben dem QFN-Chip noch zu viel geschmolzene Lötpaste vorhanden ist und diverse Brücken. Da braucht man noch nicht mal Flussmittel (weil noch genügend vorhanden ist), sondern fährt einfach mit einem sauberen Lötkolben mit 350°C entlang. Das Zuviel an Löstpaste hängt dann an der Lötspitze und die Brücken sind weg. Man kann da auch mehrfach langgehen. Der Trick hier ist keine feine Lötspitze zu verwenden, auch wenn man glaubt, dass man das muss.


Nachdem ich zuvor (siehe) Bild so eine Lötspitze wie die dritte von links verwendet habe, bin ich seit mehreren Monaten bei der dritten von rechts gelandet und es ist einfach nur grandios, wie gut man damit löten kann. Der flache Teil eignet sich z.B. wunderbar, um über die Kontakte des USB-Connectors (16 bei mir) zu streichen, wobei es hier ggf. extra Flussmittel braucht.

Einfach mal testen :+1:.

Hi @biologist
du lötest bestimmt den TP5000 damit . Wenn das so gut klappt werde ich es wohl auch hinbekommen . Mein Manko sind aber die 70 Jahre alten Augen und ohne große Lupe geht da nix. Ich werde mir mal ein Board mit QFN-Sockeln erstellen und bei JLCPCB ordern. Dann kann ich üben . Kannst du bitte das nächste Mal nach auftragen der Paste ein Foto machen. Ich verstehe nicht wieso du das Board vorher erhitzt . Ich verwende die gleiche Lötpaste , lagere es im Kühlschrank und trotzdem zerfließt die recht schnell, so das ich den Sockel nicht mehr erkennen kann . Die 3. von rechts verwende ich auch z.Bsp. für LTC2954 und PCM5102A , geht gut.

Ja. Und den MAX98357a - der ist noch ne Ecke kleiner.

Davon gehe ich fest aus. Nur mit Lötkolben geht’s nicht, aber mit Heißluft und Lötkolben schon. Auf jeden Fall antippen, wenn es aufgeschmolzen ist - das ist wichtig. Sonst ist die Kontaktierung manchmal nicht vollständig.

Klar, kann ich machen.

Mir geht’s genau anders rum: Das Zeug ist recht zähflüssig und aus dem Kühlschrank eh. Wenn ich das mit der Nadel auftrage, dann bleibt das nicht auf dem PCB kleben sondern will an der Nadel bleiben. Dass bei Raumtemperatur die Lötpaste verfließt habe ich bei allen drei Lötpasten (bleifrei PPD 183 und 138 Grad bzw. verbleit Mechanic 183 Grad) noch nie gesehen.

Bissl Offtopic, aber mir ist gerade folgendes IC ins Auge gesprungen: LM49450

Der Beschaltungsaufwand ist minimal und man hätte gleich Stereo Amp + Kopfhörer. Ist noch halbwegs bezahlbar bei JLC.

EDIT: Sehe gerade, dass das Ding ein externe MCLK Signal braucht, hm…

Das macht man üblicherweise über GPIO0. Oder halt einen externen Oszillator. Also interessant ist der IC auf jeden Fall, mir gefallen die Datasheets von TI auch gut, weil sie beim PCB-Layout auch viele wertvolle Infos geben. Aber man müsste einen Treiber halt dafür schreiben.

Von daher, und weil ich halt auch noch gut 70 MS6324 hier habe, bin ich jetzt erstmal wieder bei MAX vs MS6324+TDA1308 geblieben. Ich habe jetzt einen zweiten PCB geplant, der vier Layer nutzt. Zum ersten Mal habe ich auch richtig viel Arbeit reingesteckt und das Ganze von Hand geroutet. Ein Layer ist komplett für GND, so dass man alle GND-Punkte mit Vias anbindet und nicht mehr routen muss. Ich habe drauf geachtet, die Entkoppelkondensatoren immer schön nah an die ICs zu setzen und bin mit der SMD-Größe runter auf größtenteils 0402 und teilweise 0603. So ist das schön kompakt geworden, allerdings werde ich für das erste Testboard die ganz kleinen Bauteile direkt von JLC auch löten lassen.

Layer 1

3d-Ansicht

Das ist jetzt, wie beim letzten Mal, erstmal nur die LiPo-Variante. Wird also noch ein bisschen dauern.
Hoffe mal, dass ich damit die Probleme beim SD-Zugriff beseitigen kann.

1 „Gefällt mir“

Sieht gut aus! Was mir bei deinen anderen Platinen auch schon aufgefallen ist: Bei dir sind die 2-fach JST-PH-Konnektoren nach meinem Empfinden vertauscht. Rot ist - und Schwarz ist +. Das hatte mich beim Zusammenbauen anfangs etwas verwirrt, da ich dann auch bei meinem Akku das vorkonfektionierte Kabel abschneiden und anders herum wieder ranlöten musste.

Zumindest war es bei den mitgelieferten Kabeln so. Möglicherweise machen andere Hersteller es auch anders, aber das ist eher unwahrscheinlich.

Ja, das betrifft die anderen JST-Stecker. Das habe ich leider relativ am Anfang verbockt. Inzwischen sind aber so viele Sets unterwegs, dass ich das auch nicht mehr ändern will. Für Neopixel hatte ich das irgendwann mal versehentlich gemacht. Dort ist es insofern allerdings kacke, weil das dann wie ein Kurzschluss ist und der LDO auf dem Develboard dabei gegrillt wird.

So, die Platine kam heute an. Habe sie teilgelötet bestellt. Folgende Teile habe ich selbst gelötet:
ESP32-WROVER, TDA1308, MS6324, 5x Elkos, 2x ME6211, Spule und SD-Slot.

Den Rest habe ich löten lassen und das wurde echt grandios gut ausgeführt. Vor allem halt das ganz kleine 0402-Hühnerfutter wäre echt die Pest gewesen, wenn ich das hätte selbst löten müssen. Da werde ich in Zukunft auf jeden Fall Gebrauch von machen und ESPuino-Kram von JLC vorlöten lassen.

Auf der Platine selbst ist mir leider ein ganz dicker Patzer passiert: Ich hatte als Basis bei einem Entwurf weitergemacht, den ich mal vor einem Jahr oder so gestartet hatte. Dummerweise habe ich damals die beiden Anschlussleitungen zwischen USB-C-Konnektor und USB-seriell-Konverter vertauscht. Und das ist mir leider nicht aufgefallen :frowning:. In der Folge konnte ich den ESP32 nicht programmieren. Habe den CH340C dann also wieder abgelötet, die zwei betreffenden Beinchen hochgebogen, CH340C neu festgelötet und dann zwei kleine Drahtbrücken zum Kreuzen eingelötet. Damit ging es dann. Leider ist mir jetzt eines der beiden Beinchen vom CH340C abgebrochen, so dass dieser Weg erstmal verbaut ist. Aber gut, ist jetzt nicht so schlimm.

Ich habe dann leider 2mal hintereinander falsche Settings geflasht und beim dritten Mal, als es dann gepasst haben sollte, hat dann der Port-Expander nicht funktioniert. Ohne das Ding geht aber leider so ziemlich gar nix. Ich habe dann einen neuen eingelötet - dann hat es funktioniert. Also ich hoffe einfach mal an dieser Stelle, dass ich ihn durch mein Rumprobieren mit falschen Settings kaputtgemacht habe und er nicht schon beim Löten bei JLC kaputtgegangen ist. Weil solche Sachen will ich künftig löten lassen.

Im Anschluss war dann alles ok. Und ganz besonders wichtig: Die Störgeräusche, die vom Zugriff auf die SD-Karte kamen, sind jetzt auch auf dem Kopfhörer weg im Normalbetrieb :man_dancing:. Ganz ganz ganz leicht kann man was hören, wenn der Ton aus ist und man einen Dateiupload macht. Aber da muss man schon sehr genau hinhören. Und da sich Upload mit normalem Hörbetrieb eh nicht verträgt, ist das eh kein wirklicher Anwendungsfall. Aber ich denke ich werde mal schauen, ob ich das aufm Oszi sehen kann.

2 „Gefällt mir“

So sieht das Ganze dann in echt aus (Button 4+5, i2c ext nicht aufgelötet.

  • Links die Drähte vom Kreuzen der Leitung :face_with_hand_over_mouth:
  • Um den Port-Expander rum sieht man Flussmittelreste. Kann man natürlich entfernen, wenn man nicht gerade faul ist, hehe.
  • Die Buchse für den LiPo-Anschluss habe ich in der Mitte platziert. Das mag ggf. nicht für alle Fälle praktisch sein, es schafft jedoch räumliche Trennung. Zuvor hatte ich diese direkt neben dem Lautsprecher und das wäre garantiert früher oder später schiefgegangen.
  • Auf der linken Seite ist der Konnektor für den Neopixel. Den ziehe in in der rev3 noch ein bisschen weiter in Richtung Mitte, so dass er nicht im Wege steht, wenn man die Platine in Richtung Gehäusewand einbaut. Jedenfalls habe ich sie extra dafür designed, dass man das tun kann - alle wichtigen Anschlüsse sind links.
  • Rechts unten mit R19 befindet sich der Vorwiderstand für SD, so dass L+R ausgegeben wird. Den habe ich, schlauerweise, exakt falsch rum berechnet. D.h. dort fällt die Spannung ab, die eigentlich an SD anliegen soll.

Also insgesamt sieht’s gut aus würde ich sagen.

4 „Gefällt mir“

rev1: Habe ich nie fertig entwickelt.
rev2: LiPo only - da gab’s Geräusche auf dem Kopfhörer
rev3: Weiterhin LiPo only - mit zwei LDOs. Hat funktioniert aber war ungeeignet für FePo

Nun also rev4. Ziel war es eine Platine zu schaffen, die ich gleichermaßen für FePo und LiPo nutzen kann. Um jedoch alle drei Spannungen unter einen Hut zu bekommen, hätten LDOs nicht mehr skaliert und daher habe ich mich für für einen DC/DC-Converter entschieden - genauer gesagt: ein Boost-Buck-Converter. D.h. dem steckt man eine Spannung rein, die kleiner, gleich oder größer der Ausgangsspannung sein kann und kommt hinten immer die Spannung raus, die man eingestellt hat (3.3 V). Das funktioniert auch wirklich gut - bin sehr zufrieden und vor allem froh, dass das ohne Störgeräusche auf dem Kopfhörer vonstatten geht.

Damit einher geht jedoch ein neues Problem. Bisher war es so, dass wenn man den Akku zu weit entladen hat, dass das System quasi selbst-limitierend war. D.h. der ESP32 ist irgendwann instabil geworden. Im Sinne der Stabilität ist das natürlich eigentlich nicht gewünscht, aber zumindest konnte man den Akku nicht zu tief entladen. Mit dem hier verbauten BBC ist das genau anders rum: Die Spannung bleibt konstant und man kriegt es nicht mit (außer man aktiviert SHUTDOWN_ON_BAT_CRITICAL), wenn die Akkuspannung zu niedrig ist.

Ich habe daher einen kleinen SGM809 verwendet, der die Akkuspannung überwacht. D.h. nur wenn dieser IC sagt, dass die Eingangsspannung ok ist (man kann ihn per Lötbrücke auch umgehen), dann wird der BBC aktiv. Um nun zwischen LiPo und FePo, die ja ganz unterschiedliche Spannungen besitzen, einen Konsens zu finden, habe ich die Variante mit 3,08 V genommen.

Ach bevor ich es vergesse: Es gibt immer mal Anfragen, ob man zwei Lautsprecher anschließen kann. Ich habe daher auf die rev4 einen zweiten MAX platziert, den man per Lötbrücke aktivieren kann. Ohne diese Aktivierung ist er im Standby und braucht quasi keinen Strom. Die beiden Anschlüsse für die Lautsprecher sind rechts unten.

Hier mal ein Bild:

Außenmaße: 74 x 85 mm

4 „Gefällt mir“

Sehr gut, da nimmt die Complete Platine ja Formen an, nach den vielen Anläufen im Forum hätte ich da nicht mehr mit gerechnet.

Irgendeiner meckert immer :grinning:

Ich fand die Lösung mit der einzelnen Kopfhörerplatine ganz charmant, da man da den Kopfhörer frei positionieren kann. Jetzt hat ja Ladebuchse, SD Karte und Kopfhörer auf der gleichen Gehäuseseite, was ich nicht als optimal empfinde. Die einzelne Kopfhörerplatine konnte man auch etwas schwimmend aufhängen um die Buchse zu schonen

Gut, als das damals hier losging mit der Diskussion (ca. 2j her), gab es ja quasi keinen gemeinsamen Nenner und ich hatte auch das Wissen nicht, um das zu designen. Ich hab’s auch lange lange vor mir hergeschoben, wirklich mal das Thema DC-DC-Converter anzugehen, weil ich Befürchtungen hatte, dass ich Störgeräusche nicht in den Griff kriege. Aber letztlich hat’s dann doch im ersten Anlauf geklappt - juhu :slight_smile:

Das kann ich total verstehen - letztlich bin ich ja selbst ein großer Verfechter dieses Sandwich-Designs. Nicht zuletzt aus dem Grund, weil der Bau eines Holzgehäuses, bei dem alle Anschlüsse fest vorgegeben sind, gar nicht so einfach ist. Es gibt jedoch auch einige Leute, die das Gehäuse 3d-drucken und da ist das natürlich ein „Heimspiel“, wenn man das alles auf einer Seite hat.
Schlussendlich geht’s aber auch darum, die Produktion bisschen zu ökonomisieren und weniger Lötarbeit für mich erforderlich zu machen - das Sandwich-Design ist schon bisschen aufwändig. Und letztlich hat von der Signal-Integrität die Complete-Variante schon Vorteile.

Aber sei es drum: Ich habe jetzt (erstmal) nicht vor, das alte Design einzustampfen, weil es hat ja auch den Vorteil, dass es richtig schön kompakt ist. Und es ist hinreichend getestet. Ohnehin ist die Complete gerade noch im Test - das wird noch bisschen dauern. Ich wollte nur mal nen Zwischenstand geben.

2 „Gefällt mir“

Habe die neue Complete jetzt hier und versucht den Code hochzuladen, aber leider bislang ohne Erfolg!
Fehlermeldung:

CURRENT: upload_protocol = esptool
Looking for upload port...
Auto-detected: COM3
Uploading .pio\build\complete\firmware.bin
esptool.py v4.5
Serial port COM3
Connecting......................................

A fatal error occurred: Failed to connect to ESP32: Wrong boot mode detected (0x17)! The chip needs to be in download mode.
For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html
*** [upload] Error 2

Diesen Fehler bekomme ich mit aktuellen PlatformIO in Windows 11.

Nun habe ich den großen Luxus ein MacBook mit Parallels zu verwenden. Also schnell PlatformIO gewechselt auf den Mac mit exakt den gleichen Einstellungen und siehe da, der Upload klappt auf Anhieb!

Also wer im Moment Upload-Probleme mit Windows 11 hat, es scheint am COM Treiber zu liegen. Das haben wohl schon andere User bemerkt hier und hier .

1 „Gefällt mir“

Ich hatte mal die Idee auf der Complete die Buchse abtrennbar zu machen. Also klar definierte Stelle auf der Platine und wer möchte kann brutal die Buchse absägen und über freigelegte Lötpads verbinden. Ob das eine gute Idee ist :man_shrugging:.

Aber um auch mal meine Wünsche zu äußern, denn wer wünscht sich nicht gerne etwas:

  • Den Ladestrom als Eingang an den ESP32 legen. Ich habe dafür keinen Pin mehr frei. An mich wurde herangetragen, dass es unpraktisch ist den Ladestand abzufragen während die Box lädt und aus ist. Dafür wäre das praktisch. Idealerweise auch mit IRQ-Support.
  • Ein Latch o.ä. zum ausschalten der kompletten Platine. Quasi aus wo vorher nur standby existierte. Motivation: Keine Sorgen dass der ESPuino nicht doch mal von alleine aufwacht oder die Batterie heimlich leer saugt.

Das musst mir nochmal erklären.
Ich hatte ja mal vor, den CHRG-Ausgang des TP5000 auf den Port-Expander zu legen. Bzw. mitunter habe ich das auch schon (per Lötjumper aktivierbar) aber das Problem ist, dass der Krempel des ESPuino aufweckt.
D.h. es wird eine Möglichkeit gesucht, die CHRG-LED außen anzubringen, so dass man sehen kann, ob geladen wird?

dafür gibt eine Erfindungs names „Schalter“, funktioniert zu 100% :smiley:

Lässt sich aber nicht per Software steuern :wink:

Die Motivation war, dass ohne zusätzliche LEDs ganz schlecht ersichtlich ist, ob der Akku lädt. Zum Beispiel streiken manche USB-C Ladegeräte. Oder ein USB kann die geforderten 1000mA nicht liefern und schaltet komplett ab.

Ich dachte daran, nur den 5V Eingang auf ein 3.3V Signal zu wandeln, um zu erkennen ob der ESPuino am Ladegerät hängt.
Ob das Teil lädt, kann ich bei mir ja über einen Batterie-IC auslesen. Ich dachte nicht daran, dass den ja sonst keiner hat. Aber in der Regel ergibt 5V liegt an && Batterie < 100% ja auch „ESPuino lädt“.

Als nächstes dachte ich an eine Visualisierung mittels Neopixel-Ring. Z.B. beim Ladestand blinkt die „höchste“ LED.
Und anstatt in deepsleep zu gehen könnte im Netzbetrieb weiterhin der aktuelle Ladestand angezeigt werden, aber alles andere (wlan, audio, etc.) ganz normal abgeschaltet werden.

Mir ist schon klar dass das auch alles implementiert werden müsste. Aber wenn noch ein Pin frei wäre ist die Hardware dazu sehr einfach:
USB 5V → Mosfet als level-shifter → input pin

Also grundsätzlich ist erstmal die Frage wer das sehen will - Kinder vermutlich eher nicht, hehe. An für sich fällt man jetzt aber auch nicht tot um, wenn man den ESPuino kurz einschaltet und dann einmal auf den Button drückt - dann signalisiert der Neopixel das ja. Zugegebenermaßen mit einem gewissen Fehler, weil die Spannung, die beim Laden angezeigt wird, ist die Ladespannung, die die Akkuspannung überlagert. Da sich diese jedoch auch an der tatsächlichen Akkuspannung orientiert (darüber wird ja der Strom eingepegelt), ist das aus meiner Sicht aber trotzdem hinreichend genau.

Was man, wenn man es ganz genau wissen will, noch machen kann: Ein USB-Multimeter benutzen. Der geneigte Nerd kann am Ladestrom dann nämlich „halbwegs gut“ erkennen, wie voll der Akku schon ist :rofl:.

Alles in allem zeigt sich das bei meinen Kindern völligst unkompliziert: Die drücken da manchmal drauf und sehen dann, wie voll der Akku ist. Dann hängen sie es selbst dran zum Laden und dann läd das über Nacht. Ist höchstens mal ein Thema, wenn man länger Auto fährt: Dann sollte man das sagen, dass sie vorher aufladen sollten.

Da hast du Recht, die Kinder interessiert das weniger. Mich betrifft es auch nicht, da ich die Box nicht laden muss :smiley:

Es ist also eher so eine Nutzerfreundlichkeit für die Eltern, die eben auch nicht mit USB-Messgeräten hantieren wollen.
Aber du hast recht, ein rirsen Problem ist es nicht.

Ich verwende ja einen seperaten Laderegler, dem seine LEDs sind von außen zu sehen, Problem gelöst :slight_smile:

Bei mir ist es auch so das der Schalter ein Wechsler ist, Stellung 1 ESP an Akku (normaler Betrieb), Stellung 2 Ladergler am Akku (Aufladen).

So ist der ESP nicht an wenn ich lade, und ich kann mir aussuchen wo die 5V herkommen, der Laderegler auf meinem Board macht auch nur 0,5A der seperate 1A.