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

3d-Bilder


In echt


Warum dieser PCB?

Es gibt verschiedene Hardware-Features, die für einen ESPuino (aus unterschiedlichen Gründen) wünschenswert sind. Wenn man ein ESP32-Develboard verwendet dann ist das bei der richtigen Auswahl (beispielsweise solche von Wemos) ein sehr guter Startpunkt, man hat jedoch immer das Problem, dass irgendwas nicht 100% optimal ist: Mal ist SD nur per SPI angebunden (langsamer als SD_MMC), manchmal ist der Flash-Speicher zu klein (kein OTA möglich), manchmal ist der Stromverbrauch im Deepsleep zu hoch und manchmal reichen die GPIOs nicht etc pp. Um alle positiven Features auf einem PCB zu vereinen, ohne jedoch allzu viel SMD-Löterei auf den Plan zu rufen, habe ich den nachfolgend beschriebenen PCB entworfen. Einen kleinen Nachteil gibt es jedoch auch hier: Ganz ohne SMD-Löterei geht es wegen des Port-Expanders nicht - es sind jedoch auch nicht übermäßig viele Teile. Bei den Widerständen habe ich darauf geachtet, sie mit der SMD-Größe 0805 nicht zu klein werden zu lassen. Weitere Größen: Mosfets => SOT-23 und Port-Expander => TSSOP24.

Konfiguration

  • Es gibt für diesen PCB ein eigenes Configfile settings-lolin_d32_pro_sdmmc_pe.h und auch einen eigenen HAL, der via lolin_d32_pro_sdmmc_pe in Platformio aufrufbar ist. Dort ist bereits alles vorkonfiguriert. Plug’n’Play!
  • [settings.h] Ist keine Kopfhörerplatine angeschlossen, so kann HEADPHONE_ADJUST_ENABLE deaktiviert werden.
  • [settings.h] Aktiviere abweichend von den Voreinstellungen: PORT_EXPANDER_ENABLE, SD_MMC_1BIT_MODE und (falls PN5180) RFID_READER_TYPE_PN5180.
  • [settings.h] Willst du LPCD nutzen, so aktiviere auch PN5180_ENABLE_LPCD.
  • [settings.h] Deaktiviere RFID_READER_TYPE_MFRC522_SPI,wenn du PN5180 nutzt.
  • [settings.h] Die Adresse des Port-Expanders ist 0x20 (expanderI2cAddress).

Features

  • Passend für Lolin D32 pro. Achte darauf, einen solchen mit 16 MB Flash zu kaufen, da du sonst das OTA-Feature nicht nutzen kannst. Flash-Speicher bitte nicht verwechseln mit PSRAM; hier sind die üblichen 4 MB mehr als ausreichend.
  • Die Peripherie (MAX98357a, SD, Neopixel und (optional) RFID) wird per Mosfet-Schaltung zum Stromsparen im Deepsleep spannungslos geschaltet.
  • RFID: primär geeignet für PN5180 via JST-PH 10fach, aber RC522 geht grundsätzlich auch.
  • Die Außenmaße sind 94x50mm.
  • Port-Expander PCA9555 mit zwei Kanälen à acht Ein/Ausgängen; gesteuert per I2C.
  • Maximal fünf Taster, die allesamt über JST-PH 2fach angeschlossen werden und am Port-Expander hängen.
  • Drehencoder wird über JST-PH 5fach angeschlossen. Dessen Button (und optional auch DT und CLK durch Schließen der Lötbrücken JP2 und JP3) hängt ebenfalls am Port-Expander. Zum aktuellen Zeitpunkt (11/2021) unterstützt ESPuino DT und CLK am Port-Expander jedoch nicht.
  • Die GPIOs (DT und CLK) des Drehencoders werden auch auf den doppelreihigen Pinheader geführt. D.h. wird kein Drehencoder verwendet, so stehen diese GPIOs anderweitig zur freien Verfügung.
  • Die GPIOs 0 und 5 werden ebenfalls auf den Pinheader geführt. Sie sind unbeschaltet und können grundsätzlich frei verwendet werden. Speziell GPIO0 ist jedoch mit Vorsicht zu genießen, da ein LOW beim Bootvorgang dazu führt, dass der ESP32 nicht startet.
  • LPCD wird optional unterstützt.
  • Alle Buttons (und RFID.IRQ), die am Port-Expander angeschlossen sind, können den ESPuino aufwecken. Hinweis: Nur alle oder keiner; selektiv funktioniert nicht.
  • Alle Pins des Port-Expanders, die nicht benötigt werden, sind ebenfalls auf den doppelreihigen Pinheader rausgeführt. Dort befinden sich auch mehrere GND-Anschlüsse, 3.3V-Anschlüsse und geschaltete 3.3V (0V bei Deepsleep).
  • Ein JST-PH 4fach führt I2C nach außen. Perspektivisch könnte hier z.B. ein I2C-Display angeschlossen werden.
  • Ein Reset-Button kann via JST-PH 2fach angeschlossen werden.
  • Falls die Kopfhörerplatine verwendet wird, so wird der MAX98357a auf lautlos gestellt wenn ein Kopfhörer eingesteckt ist und umgekehrt. Das Aus- und Einschalten des MAX98357a übernimmt hierbei der Port-Expander über PA_EN. Der Port-Expander erkennt auch via HP_DETECT, ob ein Kopfhörer eingesteckt ist.
  • Über die Widerstände R7 und R8 kann der GAIN des MAX98357a gesteuert werden (nicht verwechseln mit der Lautstärkeregelung 0 bis 21 im Betrieb). Vielleicht für den Anfang beide mal weglassen und bei Bedarf entsprechend nachlöten. Deren Bedeutung ist auf dem PCB auf der Vorderseite aufgedruckt. 0R bedeutet: Brücke. (Ich persönlich arbeite mit 3dB, da mir der ESPuino im unteren Bereich sonst nicht leise genug einstellbar ist an einem 4 Ohm-Lautsprecher.)
  • PN5180 kann, sofern er mit einer Firmware-Version >=4.1 verwendet wird, den ESPuino auch aufwecken (LPCD, siehe Beschreibung oben). Wie man 4.1 auf den PN5180 kriegt, steht hier. Spoiler: Ist schon ein bisschen Arbeit :slight_smile:.

JST-Pinouts

Normalerweise achte ich drauf, dass die Peripherie, die mit JST-PH angeschlossen wird, immer die gleiche Pin-Belegung hat. Bei meinem ersten PCB für den Lolin D32 pro habe ich beim Drehencoder darauf leider nicht geachtet (der Rest ist gleich). Da es ggf. Leute gibt, die von der bisherigen Lolin D32 pro-Plattform auf die neue umsteigen wollen, habe ich den hier beschriebenen PCB auch mit dem gleichen Drehencoder-Anschluss versehen. An der Stelle also der Hinweis: Schau einfach IMMER, dass das Pinout zwischen Stecker und PCB 100% kompatibel ist.

Vorraussetzungen

  • Achte beim verlinkten SD-Board darauf, dass der SMD-PullUp-Widerstand (siehe Bild) an GPIO 2 (MISO) entfernt wird, da der ESP32 sonst nicht mehr in den Flashmodus geht (siehe nachfolgendes Bild). Vergisst man das, so kann man die ESPuino-Software (Firmware) aufspielen.

Modus LPCD

  • Um LPCD des PN5180 nutzen zu können, wird eine Firmware >=4.1 gebraucht.
  • Weiterhin muss die Lötbrücke JP4 auf der Rückseite geschlossen werden. Der Grund dafür ist, dass der PN5180 ständig Interrupts wirft und diese anderweitig nicht benötigt werden. Da die meisten Leute LPCD nicht nutzen werden, wird der ESP32 bei diesen Leuten von den ganzen Interrupts „verschont“.
  • Auf der Vorderseite muss ein Jumper auf LPCD gesteckt werden. Nicht vergessen, denn sonst bekommt der PN5180 keine Spannung.
  • In der Settings-Datei des Lolin D32 pro muss RFID_IRQ auf 106 gesetzt werden.
  • PN5180_ENABLE_LPCD muss aktiviert werden.

Modus noLPCD

  • Firmware-Version spielt keine Rolle.
  • Die Lötbrücke JP4 auf der Rückseite bleibt geöffnet.
  • Auf der Vorderseite muss ein Jumper auf noLPCD gesteckt werden. Nicht vergessen, denn sonst bekommt der PN5180 keine Spannung.
  • In der Settings-Datei des Lolin D32 pro muss RFID_IRQ auf 99 gesetzt werden. Ihn auf 106 zu belassen hat in meinen Tests dazu geführt, dass der ESPuino sofort immer wieder aufgewacht ist.
  • PN5180_ENABLE_LPCD muss deaktiviert werden.

Port-Expander

Zur besseren Erklärung von JP2 bis JP4, hier ein Auszug aus dem Schaltplan:
PE

Pinout

Zur Referenz sei nachfolgend das Pinout beschrieben. Es ist in settings-lolin_d32_pro_sdmmc_pe.h bereits alles entsprechend voreingestellt. GPIO-Werte zwischen 0 und 39 sind GPIOs des ESP32, solche über 100 zeigen, dass der Anschluss über den Port-Expander PCA9555 erfolgt. Der Port-Expander besitzt zwei Kanäle mit je Pins, die per Software wahlweise beliebig zu Ein- und Ausgängen konfiguriert werden können. Der erste Kanal besitzt bei ESPuino die Nummern 100 bis 107 und der zweite 108 bis 115. Die nicht benutzten Pins (111 bis 115) sind auf einen zweireihigen Pinheader rausgeführt. Deren Nutzen ist aktuell (Stand 11/2021) sehr begrenzt, aber möglicherweise für künftige Anwendungen noch sinnvoll. Gleiches gilt für den I2C-Anschluss.

ESP32 (GPIO) Hardware Pin Kommentar
MFET 3.3V SD-Board 3.3V
GND SD-Board GND
xx SD-Board CS entfällt bei SD_MMC!
15 SD-Board MOSI
2 SD-Board MISO
14 SD-Board SCK
MFET 3.3V / 3.3V RFID-Leser 5V Ja, 3.3V muss an 5V angeschlossen werden
MFET 3.3V / 3.3V RFID-Leser 3.3V Obwohl 3.3V schon an 5V hängt, muss es hier auch dran
GND RFID-Leser GND
21 RFID-Leser NSS
23 RFID-Leser MOSI
19 RFID-Leser MISO
18 RFID-Leser SCK
22 RFID-Leser RST
33 RFID-Leser BUSY
106 RFID-Leser IRQ Dafür muss die Lötbrücke JP4 geschlossen werden
MFET 3.3V MAX98357 VIN
GND MAX98357 GND
25 MAX98357 DIN
27 MAX98357 BCLK
26 MAX98357 LRC
MAX98357 SD Info: liegt hier GND an so schaltet MAX auf lautlos
MAX98357 GAIN PullUp mit 100k auf 3.3V bewirkt weniger Verstärkung
34 Drehencoder CLK Tausche CLK mit DT, wenn du die Drehrichtung umkehren möchstest
39 Drehencoder DT Tausche CLK mit DT, wenn du die Drehrichtung umkehren möchstest
103 Drehencoder BUTTON
3.3 V Drehencoder +
GND Drehencoder GND
102 Taster (next)
GND Taster (next)
100 Taster (previous)
GND Taster (previous)
101 Taster (pause/play)
GND Taster (pause/play)
104 Taster 4
GND Taster 4
105 Taster 5
GND Taster 5
MFET 3.3V Neopixel V
GND Neopixel G
12 Neopixel DI
32 N-channel Mosfet Gate Steuert Mosfet-Schaltung an
107 Kopfhörerbuchse Optional: wenn auf GND gezogen, dann wird eingesteckter Kopfhörer erkannt
36 PCA_Interrupt xxx Löst Interrupts ausgehend vom Port-Expander aus und weckt ESPuino auf
4 I2C_SCL xxx I2C-SCL (wird verwendet von Port-Expander und ist verfügbar über JST-PH 4fach)
13 I2C_SDA xxx I2C-SDA (wird verwendet von Port-Expander und ist verfügbar über JST-PH 4fach)
109 EXT.1 xxx CLK des Drehencoders wenn über JP2 aktiviert (gelötet)
SW 3.3 V EXT.2 xxx Geschaltete 3.3 V zur freien Verwendung
110 EXT.3 xxx DT des Drehencoders wenn über JP3 aktiviert (gelötet)
SW 3.3 V EXT.4 xxx Geschaltete 3.3 V zur freien Verwendung
111 EXT.5 xxx Port-Expander: Ist unbeschaltet und kann frei verwendet werden
3.3 V EXT.6 xxx 3.3 V zur freien Verwendung
112 EXT.7 xxx Port-Expander: Ist unbeschaltet und kann frei verwendet werden
3.3 V EXT.8 xxx 3.3 V zur freien Verwendung
113 EXT.9 xxx Port-Expander: Ist unbeschaltet und kann frei verwendet werden
GND EXT.10 xxx GND zur freien Verwendung
114 EXT.11 xxx Port-Expander: Ist unbeschaltet und kann frei verwendet werden
GND EXT.12 xxx GND zur freien Verwendung
115 EXT.13 xxx Port-Expander: Ist unbeschaltet und kann frei verwendet werden
GND EXT.14 xxx GND zur freien Verwendung
5 EXT.15 xxx GPIO 5 ist unbeschaltet und kann frei verwendet werden. Achtung: Da hängt eine LED mit drauf, die ggf. zu unvorhergesehenen Effekten führt!
0 EXT.16 xxx GPIO 0 ist unbeschaltet und kann frei verwendet werden. Achtung: GPIO 0 ist ein Bootstrap-GPIO und darf beim Einschalten des ESP32 nicht LOW sein. Ist er LOW, so geht der ESP32 in den Programmiermodus und verweilt in diesem, bis man ihn spannungslos macht. Hier kann ein 4.7k-PullUp-Widerstand helfen, wie man z.B. hier lesen kann.

Anmerkungen

  • Der JST-PH-Stecker für den RFID-Reader ist 10 Pins breit. Alle Drähte werden für den PN5180 benötigt, für den RC522 jedoch nicht. Da sich kein kleinerer Stecker auflöten lässt, bleiben einige Drähte dann eben unbeschaltet.
  • Löte das ESP32-Modul nicht direkt auf den PCB auf, sondern verwende weibliche Konnektoren als Sockel. Die Kontaktierung funktioniert gut.
  • PN5180 scheint es ausschließlich in China zu geben. Kostet etwa 7€ und ist damit etwas teurer als der RC522, bietet jedoch auch eine deutlich bessere Reichweite.

Benötigte Teile

Herz dieses PCBs ist der ESP32-WROVER auf einem Lolin D32 pro. Wichtig: Bevor dieser genutzt werden kann, muss zuerst der passende Treiber installiert werden für den USB/seriell-Chip darauf. Vergisst man das, so wird der Lolin D32 pro nicht erkannt beim Anstecken via USB.
Wichtig: Es gibt immer mal Berichte hier im Forum, wonach manche MAX98357a nicht richtig funktionieren. Gib’ mir gerne Feedback mit einem Link, wo du einen funktionierenden ergattert hast. Und gerne auch, wenn es der hier verlinkte nicht tut (ich habe einfach den „Erstbesten“ von AliExpress verlinkt).
Die nachfolgende Liste spiegelt nur Vorschläge wieder. Bestelle die Sachen wo immer du willst und bestelle vor allem die Taster, die dir gefallen.

Teileliste

  • 1x IRML6244 (N-channel MOSFET) (SMD SOT23)
  • 1x IRML2244 (P-channel MOSFET) (SMD SOT23)
  • Port-Expander PCA9555PW (SMD TSSOP24)
  • 1x 1k Widerstand (SMD 0805)
  • 2x 4.7k Widerstand (SMD 0805)
  • 1x 10k Widerstand (SMD 0805)
  • 3x 100k Widerstand (SMD 0805)
  • 6x JST-PH2.0-Konnektor (2 Pins) (ggf. auch weniger, wenn keine fünf Buttons und/oder kein Reset)
  • 1x JST-PH2.0-Konnektor (3 Pins) (für Neopixel)
  • 1x JST-PH2.0-Konnektor (4 Pins) (kann weggelassen werden, wenn kein externer I2C-Anschluss gebraucht wird)
  • 1x JST-PH2.0-Konnektor (5 Pins) (für Drehencoder)
  • 1x JST-PH2.0-Konnektor (10 Pins) (für RFID)
  • Weibliche Verbinder zum Sockeln des Lolin32 (2,54 mm)
  • Männliche Pinheader für Jumper (2,54 mm) (wichtig!)
  • Männliche Pinheader (doppelreihig) für unbelegte Port-Expander-Pins (2,54 mm)
  • 1x Jumper (2,54mm) (um RFID-Modus zu konfigurieren; wichtig!)

Interesse?

Falls du Interesse an einem solchen PCB hast, dann melde dich bei mir. Auch viele Teile, die man so zum Bau des ESPuinos braucht, habe ich normalerweise auf Lager, so dass du nicht bei zehn Händlern Ware bestellen musst. Was grundsätzlich jeder jedoch selbst besorgen muss, das ist Lolin D32 pro, Neopixel, Drehencoder, MAX98357a, Lautsprecher und die Buttons.

Probleme?

Dafür gibt es dieses Forum hier. Schreib’ uns einfach! :slight_smile:

SMD-Löten

Zum SMD-Löten gibt es auf Youtube zahlreiche Tutorials, bei denen man auf unterschiedlichen Wegen zum Ziel kommt.

Ich persönlich setze eine solche Lötstation ein und löte speziell so etwas wie den Port-Expander mittels Lötpaste und heißer Luft (Reflow). Eine gute Pinzette braucht es für die SMD-Teile auf jeden Fall noch, da sie zu klein zum Greifen sind. Traue dich einfach mal - es gibt auch Übungsplatinen! In vielen Videos ist auch beschrieben, wie man mit Problemen wie dabei entstandene Lötbrücken umgeht (z.B: das hier).

Hier ein paar Dinge, die ich inzwischen gelernt habe:

  • Bei bleihaltiger Lötpaste besteht eher die Chance, dass sich ein nicht so gut platziertes Bauteil korrekt in Position schiebt. Ist so ein bisschen wie beim herkömmlichen Löten, da tut man sich mit Blei auch einfacher.
  • Die dünnste Lötspitze ist eher nicht die beste, da vergleichsweise wenig Wärme übertragen werden kann.
  • Darauf achten, die Bauteile nicht zu grillen. Bevor ich anfange das zu beschreiben: Am besten bei Youtube Videos anschauen.
  • Als bleifreie Lötpaste wird gerne mal PPD S600 mit 183°C-Schmelzpunkt empfohlen.
  • Als bleihaltige Lötpaste mit 183°C-Schmelzpunkt wird gerne mal Mechanic XG50 empfohlen.
  • Lötpaste hat, wenn man es mit einer Spritze aufträgt, gerne die Angewohnheit, dass es nicht auf der Platine haften will, sondern an der Nadel bleibt. Was hier hilft, ist die Platine (z.B. mit heißer Luft) vorher zu erwärmen.
  • Lötpaste nach Gebrauch immer im Kühlschrank aufbewahren und vor Gebrauch entsprechend auf Zimmertemperatur erwärmen, da es sich sonst schlechter verarbeiten lässt.
  • Flussmittel bereithalten (z.B. bei AliExpress mal nach „Solder Flux“ suchen). Zum klassischen SMD-Löten per Lötkolben braucht man es eh. Aber wenn man z.B. beim Reflow-Löten Brücken hat, so kann man diese wunderbar mit Flussmittel benetzen und anschließend durch drüberziehen des Lötkolbens entfernen (wird auch oft in Youtube-Videos gezeigt).
  • Das Auftragen von Lötpaste muss gar nicht so supergenau sein. Speziell beim Einlöten des o.g. Port-Expanders trägt man einfach eine dünne „Wurst“ quer zu den Kontaktflächen auf. Beim Reflow-Löten läuft das anschließend passend hin. Trägt man allerdings deutlich zu viel auf, so muss man im Anschluss viele Brücken entfernen. Klar, ist zusätzliche Arbeit, aber auch keine große Sache.

Ansonsten hier nochmal in ausführlicher: 📗 (SMD-)Löten.

Wie wird das Ganze in Platformio eingerichtet?

Grundsätzliche Infos zur Einrichtung gibt es hier: 📗 Einrichtung von Visual Studio Code mit Platformio. Im Anschluss sind insbesondere zwei Punkte wichtig.

  1. Ganz unten im Fenster von VSC, etwas außerhalb der Mitte auf der linken Seite, steht irgendwas mit „env:…“. Das kann man anklicken, so dass dort „env_lolin_d32_pro_sdmmc_pe“ steht. Passend dazu muss links oben der zugehörige Project Task ausgewählt werden, wobei das glaube ich automatisch geht, wenn man unten das Profil wechselt.
    env
    Und noch der Project-Manager:
    pt

  2. Die ganzen Profile, die man unten (und in Project Tasks) auswählen kann, sind in der Datei platformio.ini hinterlegt. Suche dort mal nach dem zugehörigen Profil und schaue dir monitor_port und upload_port an. Das ist der Port, über den der Lolin D32 pro per USB erreichbar ist. Das, was dort aktuell steht, ist auf meine Bedürfnisse für Mac OS zugeschnitten. Unter Windows könnte das irgendwas mit COM (z.B. COM3) sein und unter Linux z.B. /dev/ttyUSB0. Eine Möglichkeit ist es, beide Zeilen mal auszukommentieren und zu testen, ob es dann schon von selbst geht. Tut es das nicht, muss man den passenden Port für sein System recherchieren. Achtung: Dieser Port kann sich auch ändern!
    profil

Ok, ESP32 ist geflasht. Wie geht es nun weiter? Gibt es Dokumentation?

Aber klar!

8 „Gefällt mir“

Jetzt dachte ich eigentlich, dass ich fertig bin mit dem PCB, da sind mir jedoch noch Sachen eingefallen, die uuuuuunbedingt noch rein mussten, damit es die eierlegende Wollmilchsau wird. Ich habe die Neuerungen oben in Text und Bild bereits integriert - hier aber nochmal im Überblick:

  1. DT und CLK des Drehencoders können über Lötbrücken auf den Port-Expander geschaltet werden. Bisher kann ESPuino via Port-Expander mit Drehencoder-Signalen noch nichts anfangen, aber vielleicht wird das ja in Zukunft kommen. Diese zwei Port-Expander-Anschlüsse sind nicht mehr auf den zweireihigen Pinheader rausgeführt.
  2. DT und CLK des Drehencoders werden jetzt ebenfalls auf den Pinheader geführt. Diejenigen unter euch, die keinen Drehencoder verwenden möchten, haben somit zwei freie GPIOs, die anderweitig genutzt werden können (IR zum Beispiel). Aber auch für den Fall, dass (1) zutrifft, würden diese frei werden, obwohl ein Drehencoder verwendet würde. Man wird sehen :smiley:.
  3. Die unbeschalteten GPIOs 0 und 5 werden ebenfalls auf den Pinheader geführt.

Ein „Feature“ würde ich mir auch gerne noch wünschen und zwar dass die Platine möglichst klein und kompakt wird. Bei der Platine für den T8 hatte ich an den Seiten jeweils ein gutes Stück abzwicken müssen, damit es in die Kiste passte :smiley: Daher gerne so schlank wie möglich. Würde dann auch gerne hierauf upgraden.

Also wenn man die Beschriftung weglässt oder auf die Rückseite verschiebt, so kann man vermutlich 1 bis 1.5cm in der Breite einsparen. Aber ich finde es irgendwie auch wichtig, dass ich die ESPuino-Benutzer beim korrekten Anschließen gut supporte. Lasse ich hingegen die Konnektoren wie ext und i2c weg, dann reduziere ich wieder die Flexibilität. In der Länge sehe ich ohnehin wenig Handlungsspielraum, da MAX nach oben und USB nach unten Platz brauchen.

Also im Hinblick auf Develboards sehe ich die Möglichkeiten da ein Stück weit als begrenzt an, da ist man bei komplett eigenem Layout, wie das bisher nur @compactflash gemacht hat, natürlich flexibler.

Aber wenn ich mal wieder PCBs bestelle, kann ich ja mal schauen, wie klein ich die hier beschriebene in der Breite kriegen kann.

2 „Gefällt mir“

So, also ich habe jetzt auch mal eine Variante à la @compactflash geplant. D.h. um den ESP32 ein- und auszuschalten wird der LTC2954-1 benutzt. Dieser wirkt direkt auf den EN-Pin (d.h. Spannungsregler) des Lolin D32 pro und somit wird alles ausgeschaltet. Den zu löten wird mal sicherlich kein Heimspiel, aber schauen wir mal. Bin gespannt :slight_smile:

@Saile Ich habe diese Platine auf 51 mm in der Breite verschlankt.

1 „Gefällt mir“

Wenn es dir nur um das Ausschalten des D32 pro geht, kannst du auch den En Pin über einen Spannungsteiler mit Gnd und VBat mit vorgeschalteten Switch verbinden. Der Spannungsregler wird ausgeschaltet, wenn weniger als 0.7V am En Pin anliegen. Wenn der Switch geschlossen ist, zieht es den Pin dann über diese Spannung.
Ich habe das so bei mir gelöst. Diese Lösung ist vielleicht nicht so mächtig, wie ein eigener IC. Dafür lötet man aber zwei Widerstände einfacher.

Man kann theoretisch den Spannungsteiler auch so wählen, dass der ESP32 ausgeschaltet wird, sobald VBat zu niedrig wird, da dann die Spannung am En Pin zu klein wird. Dadurch kann man sich ein bischen vor einer Tiefenentladung schützen.

Ich habe jetzt so viel Gutes von @compactflash von dieser Lösung gehört, dass ich sie einfach mal ausprobieren muss :grin:.

Verzögert sich leider nochmal. Mir ist ein Fehler in der Mosfet-Abschaltung unterlaufen, der auch schon in der rev1 drin war (hatte ich nicht bemerkt). Jetzt muss ich also eine dritte Version machen. Hoffentlich habe ich es dann.

1 „Gefällt mir“

So, die rev3 kam gestern und sie funktioniert endlich. So sieht das dann in fertig gelötet aus:

Und gegenüber der rev2 ist sie auch 8mm schmaler geworden:

4 „Gefällt mir“

Siehst ja gut und sauber aus!

Von der ersten, kleinen rev3-Charge sind bis auf einen PCB alle weg. Habe nun neue als rev3.1 bestellt. Diese ist technisch komplett gleich. Ich habe lediglich im Bereich der Antenne einzelne Leiterbahnen noch ein wenig zur Seite „gezupft“ und die Ecken des PCBs mit 2mm Radius abgerundet. Das war’s. Ansonsten funktioniert die Plattform aus meiner Sicht gut :+1:.

Also wer noch schnell einen PCB benötigt der kann sich gerne melden. Notwendige SMD-Teile kann ich, bei Bedarf, wahlweise gerne mitliefern oder auflöten. Ansonsten gibt’s in etwa zwei Wochen Nachschub.

So, die rev3 ist komplett vergeben.
Hinweis: Wenn ihr plant, einen ESPuino als Weihnachtsgeschenk zu verschenken, dann bestellt euch auf jeden Fall schon jetzt mindestens den PN5180 (sofern ihr diesen und nicht den RC522 einsetzen wollt) bei AliExpress. Man kriegt sie inzwischen auch via Amazon, sie sind aber doch ein bisschen teurer: Amazon.de : pn5180.

Hinweis 2: Wer gerne von der rev3.1 einen/welche hätte, schreibt mir das am besten jetzt schon per PM. Weil ich habe davon jetzt auch keine Unmengen bestellt. Zur Not muss ich dann nochmal nachordern, wenn das absehbar ist, dass es nicht reichen wird. Nicht, dass es dann vor Weihnachten nochmal „unnötig spannend“ wird.

richtig cool. ich freue mich schon drauf.

Eine Frage habe ich aber noch:
Sehe ich das richtig, dass die Pins 1 & 3 am externen PIN-Sockel unbenutzbar werden, sobald man den Drehencoder am Port-Expander betreiben kann und will, also die Jumper 2 & 3 schließt?
Die GPIs 34 und 39 wären dann ja mit den GPIOs 109 & 110 des PCA9555 verbunden und würden somit gar nicht frei werden, oder?

Gibt es „viereckige Jumper“?

  • Je 2 Pins horizontal verbinden für GPI34 an ROTARY_CLK und PE109 an EXT1.
  • Je 2 Pins vertikal verbinden für GPI34 an EXT1 und PE109 an ROTARY_CLK.

Hab da gerade auch keine bessere Idee, aber falls das Feature mal kommt…

Das siehst du richtig, dass das nur so bedingt einen Vorteil bringt. Also es ist so, dass ich das in erster Linie mal eingebaut habe, dass ich es selbst (irgendwann) mal testen kann. Also Drehencoder auf dem Port-Expander testen. Ich hätte das mit anderen/weiteren Lötbrücken natürlich weiter „isolieren“ können, so dass sie frei nutzbar gewesen wären. Ich wollte es aber auch nicht allzu kompliziert machen. Was ich aber tatsächlich schon sehe ist die Sache, dass Leute lieber fünf statt drei Tasten verwenden und dafür keinen Drehencoder; die werden hier auf jeden Fall „bedient“.

Ansonsten darf man aus meiner Sicht Folgendes nicht vergessen:

  • 34 und 39 sind nur GPIs. Also die taugen nur so bedingt für weitere/höhere Zwecke.
  • IO5 und IO0 sind zusätzlich ja noch frei. Mit 0 muss man bissl aufpassen, aber 5 ist spätestens dann, wenn man die LED auslötet, ja voll nutzbar (mit vielleicht auch - muss man testen).
  • Sollte irgendwann mal der Fall eintreten, dass man DT und CLK über den Port-Expander nutzen kann und man wollte 34 und 39 anderweitig nutzen, dann könnte man 34+39 über die externen Pins nutzen. Und über die externen Pins sind ja auch mehrere unbeschaltete Port-Expander-Eingänge verfügbar - da kann man dann auch ersatzweise wieder mit dem Drehencoder dran. Verlieren würde man in dem Falle nur den JST-PH 5fach für den Drehencoder als schnelle/sichere Anschlussmöglichkeit, hätte jedoch den Drehencoder komplett auf dem Port-Expander und die beiden GPIOs frei.
  • Mir fällt so spontan gar kein so wirklicher Use-Case für freie GPIOs ein. Ja, mit Infrarot haben wir einen, aber darüber hinaus? Weil sowas wie ein Display oder ein Temperatursensor (für was auch immer) würde man ja an i2c hängen.

Aber schreibt ihr gerne, ob ihr weitere Einsatzzwecke habt, die mir spontan nicht in den Sinn kommen.

Mal ein Auszug aus dem Schaltplan dazu:
Bildschirmfoto 2021-11-19 um 23.01.30

OK, da fällt mir tatsächlich was ein, was theoretisch möglich wäre:

  • Audio-Ausgang über AudioLink/Toslink (braucht einen PIN und das zweite I2S-Interface)
  • Touch-Buttons, ohne extra ein Touch-Board per I2C anzuschließen.
  • 344Mhz-Sender und Empfänger statt der IR-LED

Ist alles weit hergeholt und lohnt sicher nicht deshalb das bestehende Pinout zu ändern.
Aber Ideen gibt es immer :wink:

  • LDR um die LEDs dynamisch zu dimmen. Geht natürlich auch über I2C…
  • Lade-Erkennung

Lade-Erkennung macht man über den Port-Expander. Das ist ja nur binär. Aber ldr wäre natürlich eine Möglichkeit, wobei, wie du schon schreibst, i2c auch geht (bh1750 habe ich zB hier).

Eija zur Not mache ich noch eine v4 und dann gibt’s zwei Leiterbahnen und zwei Lötbrücken extra. Ich mache das einfach so wie Apple & Co: Neue Features immer nur häppchenweise :rofl:.

Wie gesagt, ich wollte es nur nicht noch komplizierter machen. Aber wenn da Bedarf besteht, dann ist es kein Problem.

Bedarf? Nein. 99% der Anwendungsfälle sollten abgedeckt sein.

Es war nur eine Verständnisfrage.