ESPuino-miniD32(pro): Lolin D32/D32 pro mit SD_MMC und Port-Expander (SMD)

Wie mir leider eben erst aufgefallen ist, sind die Develboards Wemos Lolin D32 und Wemos Lolin D32 pro komplett pinkompatibel. Sie unterscheiden sich lediglich dadurch, dass GPIO16 und GPIO17 beim D32 pro nicht existieren und an den jeweiligen Pins am Develboard entsprechend nichts angeschlossen ist. War Anderen vermutlich total klar - mir bisher nicht :woman_shrugging:.

Das heißt im Umkehrschluss, dass das hier beschriebene Board auch für den D32 verwendet werden kann. Ich habe es auch schon getestet: Es funktioniert! Das finde ich sehr sehr cool, weil dann muss dafür kein extra Board entwickelt werden :+1:.

Ich habe dazu eben einen neuen HAL hochgeladen:

Für den o.g. PCB muss dann also das passende Profil ausgewählt werden:
D32 pro: lolin_d32_pro_sdmmc_pe
D32: lolin_d32_sdmmc_pe

Der D32 hat ein eigenes Configfile, das mit dem des D32 pro nahezu identisch ist. Ich habe lediglich INVERT_POWER direkt aktiviert und den Power-Pin auf 115 gesetzt (anstelle 32). Aus Gründen der Abwärtskompatibilität habe ich das beim D32 pro bisher gelassen.

An der Stelle noch einen Hinweis: Wer vom bisherigen D32-Board auf dieses Board hier wechseln möchte, muss UNBEDINGT(!!!) die Anschlüsse von 3.3 V und GND für den Neopixel tauschen/kontrollieren. Weil das habe ich blöderweise vertauscht. Gleiches gilt auch für den Drehencoder. Sorry an dieser Stelle, dass ich das nicht einheitlich gemacht habe.

Vergisst man die beiden Pins zu tauschen, so gibt es einen Kurzschluss, wodurch der Festspannungsregler abraucht. Im besten Fall kommt hinten keine/zu wenig Spannung raus. Läuft es kacke, sind es 5 V und der ESP32 nimmt Schaden.

BESSER IMMER SCHÖN DAS PINOUT KONTROLLIEREN!
@biologist Das gilt auch für dich! :rofl:

Die erste Fuhre ist Mitte letzter Woche übrigens eingetroffen. Also wer noch ein Zuhause für seinen D32 oder D32 pro sucht… :smiley:.

Sollte noch wer Lust haben, einen ESPuino mit miniD32(pro) zu bauen, jedoch nicht auf einen D32 pro warten wollen: Aktuell habe ich noch zwei originalverpackte D32 pro hier liegen, die ich abgeben könnte. PCBs habe ich auch noch da. Nur Neopixel, Drehencoder, Lautsprecher und RFID-Reader musst du selbst besorgen.

Wer zuerst kommt mahlt zuerst.

Ich wechsle meinen Post vom falschen Board hierhin.
Gemäss VSC Git Source Control habe ich folgende Änderungen vorgenommen:

File ‚settings-lolin_d32_pro_sdmmc_pe.h‘

  • //#define INVERT_POWER → #define INVERT_POWER im Code
  • #define POWER 32 → #define POWER 115 im Code, da JP5 auf 2+3 ist.
    @biologist in der Anleitung sprichst du von JP4, im meinem Post im falschen Board von JP5. Was ist nun korrekt?
    Mit 32 habe ich es auch versucht

File ‚settings.h‘

  • //#define PORT_EXPANDER_ENABLE → #define PORT_EXPANDER_ENABLE im Code
  • #define PLAY_MONO_SPEAKER → //#define PLAY_MONO_SPEAKER im Code
  • #define RFID_READER_TYPE_MFRC522_SPI → //#define RFID_READER_TYPE_MFRC522_SPI im Code
  • //#define RFID_READER_TYPE_PN5180 → #define RFID_READER_TYPE_PN5180 im Code
    den RFID Leser habe ich noch nicht angeschlossen
  • #define SD_MMC_1BIT_MODE gemäss Anleitung war bereits aktiv
  • #define HEADPHONE_ADJUST_ENABLE gemäss Anleitung war bereits aktiv

Upload and Monitor:
Processing lolin_d32_pro_sdmmc_pe (board: lolin_d32_pro; platform: espressif32; framework: arduino) ausgewählt
image
Jedoch gibt es einige Kompilierungsfehler. Ich kann leider nicht abschätzen, ob das etwas mit meinem Error zu tun hat.
Upload_and_Monitor.txt (16,1 KB)
Error:

E (1154) sdmmc_common: sdmmc_init_ocr: send_op_cond (1) returned 0x107
[E][SD_MMC.cpp:85] begin(): Failed to initialize the card (263). Make sure SD card lines have pull-up resistors in place.

Das war tatsächlich ein Typo. Also 5 ist korrekt.
1+2 => Ansteuerung per GPIO32
2+3 => Ansteuerung per PE1.7 (115)

Dann musst du es auf 1+2 umlöten. Sonst hat das keine Aussicht auf Erfolg. Aber kannst ja mal machen.

Nein, das sind Warnungen. Bei Fehler(n) würde es abbrechen.

Also gemäß dem Log, das du mitgeschickt hast, passt das ausgewählte Profil. Geflasht wird der ESP32 auch. Was mich so ein bisschen stutzig macht ist die Tatsache, dass der Port-Expander nicht erkannt wird. Weil der hängt immer an 3.3 V und wird nicht geschaltet.

a) Miss mal zwischen 3.3V und GND direkt aufm Develboard, ob da auch wirklich 3.3V rauskommen.
b) Bist du sicher, dass du das Develboard nicht mit Versatz in den Sockel gesteckt hast? Weil das hatte ich bei einem User auch schon.
c) Sind die Lötstellen auf deinem Develboard sauber?

Was mir ansonsten noch einfällt: Es kann vorkommen beim ESP32, dass man etwas flasht und dieses durch ein erneutes Flashen nicht überschrieben wird. Dann flasht man munter weiter und es wird immer wieder das alte Image hergenommen.
Es gibt (bisschen unterhalb von Upload und Monitor) „Erase Flash“. Das kannst mal ausführen und dann erneut flashen. Ist eigentlich eher ein Problem beim Flashen mit OTA, aber ich glaube wir hatten das in ganz seltenen Fällen auch schon ohne OTA.

Wenn es das alles nicht ist, dann poste am besten mal beide Configfiles komplett.

Ich habe mir dein Bild gerade nochmal angeschaut. Sag’ mal kann es sein, dass du das Develboard gar nicht gelötet sondern die Pinheader nur gesteckt hast? Ich sehe da irgendwie kein Lötzinn.
Das würde den Fehler komplett erklären.

Hallo @biologist
Du hat natürlich recht! Ich dachte ich könnte ESP und das PCB beide einfach stecken bis alles läuft.
Es funktioniert alles einwandfrei inkl. Neopixel und Kopfhörer. Bin die ersten Songs am raufladen.
Anmerkung: für mich war es nicht ganz klar mit den Neopixel. Hier steht bei dir MFET 3.3V, GND,12. Auf dem Anschluss (3pin) steht jedoch -,+,DI. Für ein Laie nicht klar, für dich schon. Musste mich hier noch durchkämpfen.
Vielen Dank für deine Hilfe! Mein 1.5 jähriger Sohn zeigte immer wieder auf die Komponenten, dass Papi vorwärts machen soll mit seiner Musikbox. :slight_smile:

Na das klingt doch gut.

Dazu steht aber auch was in der Doku oben:
Bildschirmfoto 2022-03-26 um 19.50.07
Im Endeffekt ist es halt so, dass die Neopixels nicht immer gleich beschriftet sind.

Hehe, meiner (der ist aber schon fast 7) fragt auch die ganze Zeit, wann er endlich seinen neuen ESPuino kriegt. Brauchen tut er den eigentllich auch nicht, weil er hat einen. Aber ich hatte es versprochen :woman_shrugging:.

Inzwischen gibt es eine neue Revision der Platine.
Hier mal ein Bild, das die rev2 (links) mit der rev1 (rechts) vergleicht:

Folgende Modifikationen wurden vorgenommen:
a) Im oberen Bereich wurde das Kupfer noch ein bisschen mehr ausgepart wegen der WLAN-Antenne.
b) Unterhalb der Kupfer-Aussparung gibt es nun zwei weitere „Löcher“. Hier kann man den Stützkondensator, der zuvor in Ext gelötet wurde, liegend unter dem D32 (pro) montieren. Er ist damit näher an der Stromquelle und es wird auch kein Platz in Ext weggenommen.
c) Unten gibt es nun links (von oben gesehen) einen Anschluss für einen auflötbaren Reset-Taster (siehe nachfolgende Bilder), den ich gerne kostenlos dazu gebe. Diesen muss man nicht verwenden, es gibt auch weiterhin die Möglichkeit, einen Reset-Taster per JST-PH anzuschließen, so dass man mit dem Gehäusedesign flexibler ist. Ist einfach nur eine alternative Möglichkeit.
d) Das Routing wurde etwas optimiert und zwecks besserer GND-Konnektivität sind diverse Vias dazugekommen.

Blöderweise ist mir im Bestückungsdruck ein Fehler mit der JP-Nummerierung unterlaufen.
JP5 ist eigentlich JP1
JP1 ist eigentlich JP4
JP4 ist eigentlich JP5
JP2 und JP3 sind vertauscht. Wobei das relativ egal ist, weil die würde man (wenn) eh nur paarweise ändern.
Also die Beschreibung rechts unten ist korrekt und auch die Schaltung ist korrekt. Was halt lediglich falsch ist, das ist die Beschriftung an den Lötbrücken selbst. Ich denke es ist nicht dramatisch, aber ich will es auch nicht verheimlichen :slight_smile:

Hier mal zwei Bilder vom neuen Reset-Taster. Den gebe ich übrigens kostenlos dazu und löte ihn auch kostenlos ein. Außer es schreibt mir jmd,. dass er explizit NICHT gewollt ist.


Von der alten Variante habe ich noch zwei Stück hier. Wer explizit davon eine möchte sollte sich beeilen :slight_smile:. Ansonsten steht nun wie gesagt die rev2 in den Startlöchern. Ich würde, wenn Bedarf bestünde, auch nen Euro abziehen für den Fehler im Beschriftungsdruck :slight_smile:

1 „Gefällt mir“

ich habe alles nach der Anleitung zusammengesetzt und auch die Solder-Jumper entsprechend gelötet. Die Software, also die settings.h und die lolin_d32_pro_sdmmc_pe.h habe ich auch entsprechend der Anleitung konfiguriert.

Das Flachen der Software funktioniert wunderbar aber wenn das abgeschlossen ist und ich den ESPuino starten möchte bekomme ich im Serial Monitor folgende Fehlermeldung angezeigt:

--- Available filters and text transformations: colorize, debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at https://bit.ly/pio-monitor-filters
--- Miniterm on /dev/cu.wchusbserial1420  115200,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
Maximale Inaktivitätszeit wurde aus NVS geladen: 10
Exception in thread rx:
Traceback (most recent call last):
  File "/Users/Bobby/.platformio/penv/lib/python3.9/site-packages/serial/serialposix.py", line 575, in read
    buf = os.read(self.fd, size - len(read))
OSError: [Errno 6] Device not configured

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/Bobby/.platformio/python3/lib/python3.9/threading.py", line 954, in _bootstrap_inner
    self.run()
  File "/Users/Bobby/.platformio/python3/lib/python3.9/threading.py", line 892, in run
    self._target(*self._args, **self._kwargs)
  File "/Users/Bobby/.platformio/penv/lib/python3.9/site-packages/serial/tools/miniterm.py", line 499, in reader
    data = self.serial.read(self.serial.in_waiting or 1)
  File "/Users/Bobby/.platformio/penv/lib/python3.9/site-packages/serial/serialposix.py", line 581, in read
    raise SerialException('read failed: {}'.format(e))
serial.serialutil.SerialException: read failed: [Errno 6] Device not configured

--- exit ---

der Neopixel Ring dreht für einige zeit grün und blinkt anschließend rot. dann geht das ganze Setup vermute ich mal in Deepsleep.

ich stehe gerade mächtig auf dem Schlauch, was ich noch ändern soll…
Danke schon mal

Hmm, also das finde ich etwas seltsam. Wenn man den ESPuino einschaltet, dann leuchtet jeder zweite LED ja orange. Hat man keine SD-Karte eingelegt oder das SD-Modul hat keine Spannung, dann blinkt es kurz darauf rot. Und dann geht er auch in Deepsleep.
Kann von der SD gelesen werden, dann leuchten im Anschluss vier langsam zirkulierende LEDs in
weiß => Betrieb mit WLAN
grün => Betrieb ohne WLAN
blau => Betrieb mit Bluetooth

a) Hast du INVERT_POWER aktiviert?
b) Hast du POWER passend gemäß der Konfiguration von JP5 konfiguriert?
c) Hast du den Kondensator in Ext eingelötet?
d) Hast du an Ext mal zwischen 8 und 10 Spannung gemessen?
e) Ist der D32 pro auch nicht mit Versatz eingesteckt?

Vielen Dank für die schnelle Antwort… leider kam ich mal wieder nicht dazu es gleich umzusetzen…

sorry… mein Fehler. es kreiselte natürlich orange und blinkt dann rot. Hab’s auf die Schnelle vertauscht.

In der Zwischenzeit habe ich nochmal alles „gecleant“ und auch das Git Repo neu geklont
und alle Einstellungen von der oben stehenden Anleitung (Pull-Up am SD Reader entfernt, Hardware, Jumper und Software) nochmal komplett neu gemacht. Die Firmware kompiliert und lässt sich auch auf dem D32 pro flashen.

a) Hast du INVERT_POWER aktiviert?

Ja, das ist drin.

b) Hast du POWER passend gemäß der Konfiguration von JP5 konfiguriert?

bei JP5 ist 1+2 gedrückt und der Inder Firmware der PIN 32 definiert

c) Hast du den Kondensator in Ext eingelötet?

Ja, der ist drin… 8+ 10-

d) Hast du an Ext mal zwischen 8 und 10 Spannung gemessen?

zuverlässig und konstant 3,3V. Am SD Reader direkt habe ich 3.22V gemessen, natürlich nur solange der ESP D32 pro aktiv ist. Im Deepsleep liegen hier allerdings immer noch 1.23V an… ist das so OK?

e) Ist der D32 pro auch nicht mit Versatz eingesteckt?

Nein, das kann ich ausschließen

Habe auch zwei verschiedene SD Karten getestet… leider immer der gleiche Verlauf: Orange…rot… Deepsleep

Ich bin mit meinem Latein echt am Ende… hier nochmal zwei Fotos, vielleicht helfen die ja weiter.

Kann eigentlich der SD reader defekt sein?
Soll ich die SD Karten mal neu formatieren?

ich musste in der platformio.ini den upload_port und den monitor_port anpassen, damit der ESP D32 pro überhaupt gefunden wird.

[env:lolin_d32_pro_sdmmc_pe]
;https://docs.platformio.org/en/latest/boards/espressif32/lolin_d32_pro.html
board = lolin_d32_pro
;board_build.partitions = huge_app.csv
;board_build.partitions = custom_4mb_noota.csv
board_build.partitions = custom_16mb_ota.csv
upload_port = /dev/cu.wchusbserial1420
monitor_port = /dev/cu.wchusbserial1420
;monitor_filters = esp32_exception_decoder

darauf hin bekam ich folgende Fehlermeldung angezeigt:

Error: Multiple requests to rebuild the project "ESPuino-1" index have been received!
Automatic index rebuilding process has been terminated for 10 minutes. at A.value
(/Users/Bobby/.vscode/extensions/platformio.platformio-ide-
2.4.3/node_modules/platformio-node-helpers/dist/index.js:1:790605) at A.value (/Users/Bobby/.vscode/extensions/platformio.platformio-ide-
2.4.3/node_modules/platformio-node-helpers/dist/index.js:1:792714) at A.value (/Users/Bobby/.vscode/extensions/platformio.platformio-ide-
2.4.3/node_modules/platformio-node-helpers/dist/index.js:1:794550) at /Users/Bobby/.vscode/extensions/platformio.platformio-ide-
2.4.3/node_modules/platformio-node-helpers/dist/index.js:1:795342 ...

Ja, das ist normal. Wobei die Spannungs mit 1,2 V höher ist als das, was ich so kenne. Ich kenne das mit etwa 1 V ohne Kopfhörerplatine und 0,8x V mit. Der Punkt ist an der Stelle, dass über die restliche Verkabelung noch irgendwelche Querströme laufen. Also die Lösung ist nicht ganz perfekt mit dem Mosfet, aber mit ganz einfachen Mitteln erreicht man da schon viel. Also das passt erstmal.

Also im Prinzip fallen mir zwei Gründe ein, wenn sowas passiert:
a) SD hat keine Spannung, weil, aus welchem Grunde auch immer, der Mosfet nicht durchsteuert. Das ist bei dir ja offenbar nicht der Fall.
b) Irgendwas stimmt mit der SD-Karte nicht. Vielleicht formatierst du sie nochmal, aber achte auf jeden Fall drauf, dass sie FAT32-formatiert ist. Sind sind 32er-Karten aber eigentlich wenn man sie kauft. Anders sieht es bei 64er-Karten aus, die sind (soweit ich weiß) exFat-formatiert. Das macht dann Probleme.

Hast du mal irgendwelche Treiber installiert? Ich musste das auf meinem alten Mac auch und jeder hat mir immer gesagt, dass das doch einfach so ginge und sie meine Zeilen (exakt das, was du da jetzt hast) auskommentieren müssen. Seitdem ich meinen neuen Mac habe, geht das so.

Ggf. war er noch am Kompilieren und du hast einen neuen Compilevorgang angestoßen (ungewollt)!? Ist vermutlich nicht weiter wichtig.

Habe eben nochmal einen Blick auf deine Lötpunkte geworfen. Da ist die Menge an Lötzinn teilweise bisschen unterschiedlich und ich meine auch unterschiedliche Farbschattierungen am Lötzinn zu sehen. Also möglich, dass manche Stellen nicht lange genug gelötet wurde. Ich würde, OHNE(!) Zugabe von neuem Lötzinn, über alle Punkte mit dem Lötkolben nochmal drübergehen. Man muss bei den JST-Buchsen nur bissl aufpassen. Ich habe die Erfahrung gemacht, dass wenn man das zu lange macht, dann zieht es die Kontaktstifte ein Stück weit nach unten raus.

ich benutze ein uraltes Mac Book Pro (mid 2012), auf das ich vor Jahren mal die CH340 Treiber installiert habe. Die funktionieren auch… hatte kürzlich andere ESP8266, ESP32 und Arduino Projekte aus Platformio und der Arduino IDE programmiert und das gin immer problemlos…

Die Lötstellen sind nicht wirklich schön, das sehe ich genau so. Mir ist kürzlich das „gute alte“ Lötzinn ausgegangen und mit dem Bleifreien welches ich jetzt habe bin ich noch nicht so richtig warm geworden. ich gehe die alle mal durch und schau, ob hier vielleicht eine kalte, oder defekte Stelle dabei ist.

Danke nochmal für Deine Hilfe… ich werde berichten

Also meine Lötpaste ist auch bleifrei, aber beim Lötzinn bin ich letztlich doch wieder bei Blei hängengeblieben. Da kann ich dir Mechanic HX-T100 absolut empfehlen. Das hinterlässt wenig (und vor allem keine hässlichen) Rückstände und fließt super, ich löte das mit 350 Grad (300 ginge vermutlich genauso). Ich habe das in 0,4 und 0,5mm hier, wobei ich auf 0,4 eine kleine Präferenz habe. Ist das beste Lötzinn, das ich je hatte.

gestern Abend habe ich das zweite PCB bestückt und die Jumper konfiguriert (mit bleihaltigem Lötzinn :wink: )…
ESP D32 pro drauf, Firmware rein und ab ins WiFi… lief komplett problemlos.
Ich habe alles komplett identisch zum ersten Board gemacht, bis auf die komplett neuen Bauteile… vielleicht ist ja doch der SD Karten Reader kaputt?!?
Jetzt werde ich einen neuen Satz SD Reader und evtl. noch einen MAX98357 bestellen und mal schauen, wer der Übeltäter war.

Danke nochmal für die Hilfe! ich werde berichten, was ich herausgefunden habe…

1 „Gefällt mir“

Anfängerfrage: gibt es die Projektdateien für die Boards hier irgendwo, ich habe zwei eher halblinke Hände beim Löten und würde das Ganze daher am liebsten bei JLCPCB fertigen lassen. Ist das prinzipiell möglich oder eine halbgare Annahme? Ich bräuchte dann noch den Lollin D32 und Kleinkram wie Stromversorgung, Taster & Lautsprecher, richtig?
Falls grob missverstanden, bitte Nachsicht. :grin: