ESP32-Develboard "D32 pro LiFePO4"

Update:
Die aktuelle Fassung sieht wiefolgt aus:

Bild einer älteren Revision:

Einleitung

Kommerziell erhältlich gibt es eine ganze Reihe von ESP32-Develboards, die integrierten Akkubetrieb unterstützen. Integriert bedeutet, dass folgende Modi möglich sind:

  • nur USB: Es ist kein Akku angeschlossen, der Betrieb wird rein durch USB-Versorgung gewährleistet.
  • nur Akku: Der Betrieb wird rein durch Akku-Versorgung gewährleistet.
  • USB + Akku: Die Versorgung erfolgt vorrangig durch USB und der Akku wird, sofern notwendig, durch eine spezielle Ladeschaltung geladen. Wird die USB-Versorgung getrennt, so übernimmt der Akku nahtlos die Versorgung (sofern dessen Ladestand ausreicht).

Allerdings geht es hier quasi immer um LiPo-Akkus. Und da LiFePO4-Akkus sich zunehmener Beliebtheit erfreuen, war das für mich Grund genug, mich dieser Sache mal anzunehmen und ein eigenes Develboard zu planen + löten. Die Forderung nach USB-C kam hier im Forum auch schon mehrfach auf, so dass ich das ebenfalls in die Waagschale geworfen habe.

FePo vs LiPo

Einen schönen Vergleich zwischen LiPo und LiFePO4 (nachfolgend FePo) gibt es hier. Kurz: FePo hat eine niedrigere Energiedichte als LiPo, gilt jedoch als sicherer, zyklusfester und hat eine Spannung, die „von Natur aus“ sehr gut zum ESP32 passt. Kurzum: Man könnte sich prinzipiell den 3.3 V-Festspannungsregler sparen. Tatsächlich brauchen wir ihn für unsere Zwecke natürlich trotzdem, da wir das Develboard auch mit USB-Spannung betreiben wollen und der ESP32 nur 3.3 V (Nennspannung) verträgt. Zum Spannungsverlauf von FePo habe ich auch mal eine Messreihe angefertigt.

Vergleich zum Lolin D32 pro

Pate für dieses Develboard stand der Wemos Lolin D32 pro. Das bedeutet, dass die funktionelle Anschlussbelegung der oberen beiden Pinreihen zu 100% identisch ist und auch ein ESP32-WROVER-E mit 16 MB Flashspeicher verbaut ist. Die technisch erwähnenswerten Änderungen sind:

  • Verwendet als Akku-Laderegler den Chip TP5000 (anstelle TP4054).
  • Unterstützt ausschließlich FePo-Akkus (anstelle ausschließlich LiPo-Akkus).
  • Nur die USB-Versorgung läuft durch den Festspannungregler (ME6211). Die Batteriespannung wird erst hinter dem Festspannungsregler eingespeist (*).
  • Max. Ladestrom des Akkus beträgt 1 A (anstelle 0,5 A beim D32 pro).
  • USB-C-Anschluss (anstelle micro-USB).
  • Auf der rechten Pinreihe gibt es einen Pin, der CHRG heißt. Hiermit lässt sich detektieren, ob der Akku gerade geladen wird (wird dann auf GND gezogen). Das klappt allerdings nur, wenn keine LED für die Ladekontrolle eingelötet ist. Beim D32 pro ist dieser Pin der Pinreihe unbelegt. ESPuino unterstützt das Auslesen von CHRG derzeit nicht. Kurz: Ist unklar, ob das jemals gebraucht wird, aber haben ist besser als brauchen :slight_smile:.
  • Die Konnektoren für SD, I2C und Display sind auf meinem Board nicht vorhanden. Einerseits ist dafür eh kein Platz und andererseits machen wir das ohnehin extern.
  • Spannungsteiler zum Messen der Akkuspannung ist 300k + 300k (anstelle 100k + 100k) => spart Strom im Akkubetrieb. Wenn man möchte, dann kann man das hier eintragen. Es ist aber nicht notwendig, da es gar nicht um die absoluten Zahlen geht, sondern nur um das Verhältnis beider Zahlen zueinander. Und hier macht 100/100 zu 300/300 keinen Unterschied.
  • Statt einer roten LED ist eine blaue LED verbaut. Sie blinkt (mehr oder weniger schnell), wenn USB angeschlossen ist aber kein Akku. Sie leuchtet, wenn USB+Akku angeschlossen sind. Ist nur der Akku angeschlossen, so leuchtet sie nicht. In kurz etwa so :rofl:.

Stromaufnahme im Akkubetrieb

Gemessen mit/in ESPuino-miniD32(pro): Lolin D32/D32 pro mit SD_MMC und Port-Expander (SMD) inkl. Kopfhörerplatine:

  • Deepsleep: ca. 1,4 mA
  • Leerlauf: ca. 130 mA
  • Betrieb bei mittlerer Lautstärke (SD): ca. 150 mA
  • Betrieb bei mittlerer Laustärke (Webradio): ca. 185 mA

LED-Signalisierung

Auf dem Board befindet sich eine LED, die den Status der Akku-Ladeelektronik anzeigt:

  • Blinkt: USB angeschlossen, Akku jedoch nicht.
  • Leuchtet dauerhaft: Akku wird geladen.
  • Leuchtet nicht: Entweder nur Akku angeschlossen oder USB+Akku angeschlossen, jedoch Akku voll.

Empfehlungen für ESPuino-Betrieb

Wichtig: In diesem Zuge auch gleich die Werte für die Lautstärke überprüfen.

Schaltplan

Schematics_D32pro_FePo rev3.pdf (182,2 KB)
Schematics_D32pro_FePo rev4.pdf (210,7 KB)

Welcher Akku kann verwendet werden?

  1. Grundsätzlich gilt: Es sollte NIEMALS ein Lithium-Akku ohne Schutzschaltung verwendet werden!
  2. Vergleiche die Polarität des Akkus immer mit dem, was auf auf dem ESPuino-Develboard aufgedruckt ist. Nie auf Farben verlassen - immer mit Multimeter nachmessen!

Im Gegensatz zu LiPo ist bei LiFePO4 die Auswahl leider einigermaßen gering. In fertig konfektioniert ist mir lediglich dieser bekannt: EREMIT 3.2V 6Ah LiFePo4 Akku Pack. Wichtiger Hinweis an dieser Stelle: Es gibt bei Eremit noch einen zweiten Akkupack, der äußerlich erstmal gleich aussieht. Es gibt jedoch zwei Unterschiede:

  • Dessen maximaler Strom ist größer. Brauchen wir für ESPuino jedoch nicht und ist somit ein unnötiges Sicherheitsrisiko.
  • Die Polarität ist invers zu dem, was das Develboard erwartet. Dieser Punkt war mir bis heute (15.12.2023) leider auch nicht klar.

Zusammenfassend kann also gesagt werden: Wenn ihr einen Akku fertig kaufen wollt, dann empfehle ich euch die AIO-Variante von Eremit. Darüber hinaus habe ich auch mal ein kleines Tutorial für den Selbstbau von Akkus geschrieben: Ein kleiner LiFePO4-Akkupack mit Schutzschaltung (BMS) im Selbstbau. Zum Anschluss an die ESPuino-Hardware braucht ihr auf jeden Fall einen Stecker vom Typ JST PH (2 mm Pinabstand).
Und nochmal: NIE ohne Schutzschaltung betreiben und IMMER Polarität prüfen!

Allgemeine Hinweise

  • Auf keinen Fall darf ein LiPo-Akku angeschlossen werden. Der TP5000 unterstützt, wenn man ihn entsprechend beschaltet, zwar auch LiPo, ich habe ihn (aus Komplexitäts- und Platzgründen) jedoch fest auf FePo eingestellt. (*) Das Hauptproblem ist jedoch: Wird ein LiPo-Akku angeschlossen, so geht, je nach Akkuspannung (Ladung), mindestens das ESP32-Modul kaputt, weil die Spannung vom Akku (wie oben beschrieben und im Schaltplan sichtbar) nicht durch den Festspannungsregler läuft und Spannungen >3,6 V vom ESP32 nicht toleriert werden!!! LiPo liefert jedoch bis zu 4,2 V. Das Umgehen des Festspannungsreglers habe ich deswegen so gemacht, weil es die FePo-Spannung, die ja schon passt, unerwünscht reduzieren würde, wenn die Batteriespannung ebenfalls den gleichen Weg wie USB ginge.
  • Über den Widerstand R5 kann der Ladestrom eingestellt werden. Ich habe hier 0,1 Ohm eingelötet, was zu max 1 A Ladestrom führt. Welche Widerstände für andere Ströme benötigt werden, kann man dem Datenblatt (TP5000_auto_translated_.pdf (471,6 KB)) entnehmen. An der Stelle jedoch der Hinweis, dass die Diode D2 nur 1 A Nennstrom unterstützt. Beim Laden erwärmt sie sich deutlich, heiß ist sie jedoch nicht. Insofern würde ich sagen, dass vermutlich noch Luft nach oben ist, aber das habe ich nicht getestet.

Kompatibilität zu ESPuino

Wie schon erwähnt, ist das Board funktional 100% pinkompatibel mit dem D32 pro von Wemos. Das bedeutet im Gegenzug natürlich auch, dass man es ohne Einschränkungen z.B. für ESPuino-miniD32(pro): Lolin D32/D32 pro mit SD_MMC und Port-Expander (SMD) verwenden kann. Und das bedeutet gleichwohl, dass als Profil in PlatformIO ebenfalls lolin_d32_pro_sdmmc_pe verwendet wird.
Die Parameter für die Akkuspannungen, die standardmäßig auf LiPo ausgerichtet sind, sollte man in der WebGUI noch anpassen, damit nicht ständig Spannungswarnungen angezeigt werden.

Gibt es Nachteile ggü. LiPo?

  • Die Entladekurve ist extrem flach. Gleiches konnte ich durch einen Test auch bestätigen: Messreihe mit LiFePO4-Akku.
    Für den Betrieb des ESP32 ist das eigentlich optimal und genau das, was man eigentlich will. Aber dadurch ist es viel schwieriger, den korrekten/ungefähren Ladestand des Akkus zu bestimmen. Aus meiner Sicht geht es jedoch hinreichend genau, so dass ich das nicht wirklich als Nachteil wahrnehme.
  • Durch die ggü. LiPo geringere Energiedichte sind die Akkus größer. Es scheint auch weniger unterschiedliche Akku-Kapazitäten zu geben.

Tipps und Tricks

Interesse?

Falls du Interesse an einem solchen Develboard hast, dann melde dich bei mir per privater Nachricht bei mir.

Update 13.06.22

Inzwischen habe ich noch zehn weitere Platinen bekommen, so dass ich noch ein paar weitere Develboards löten kann. Schreibt mich an, wenn ihr eins braucht.

Update 20.06.22

Es gibt nun ein ähnliches Board auch für LiPo: ESP32-Develboard "E32 LiPo".

Update August 2022

Bis auf Weiteres löte ich diese Boards weiterhin von Hand und habe immer mal wieder welche da. Schreibe mir eine PM, wenn du ein solches benötigst.

Update Januar 2023

Inzwischen gibt es eine neue Revision (grün), welches vier statt zwei Layer besitzt. Das erspart mir viel Lötarbeit, da ich diese vorlöten lasse. Allerdings geht es auch hier nicht ganz ohne Lötarbeit meinerseits. Wie auch immer: Das skaliert jetzt besser :slight_smile: .

5 „Gefällt mir“

Coole Sache. LiFePo gefällt mir: Scheint „sicherer“ zu sein als LiPo und daher für das Kinderzimmer besser geeignet. Daher habe ich Interesse an einem Testboard.

Habe dir eine PN geschrieben.

Ich hätte gern zwei genommen, bin aber erstmal (wegen festemFertigstellungsdatum) versorgt.

Inzwischen habe ich auch nach Gehäuse-Recherchen festgestellt, dass ich bei dem dickeren FePO mit allen Komponenten ein deutlich längeres Gehäuse bräuchte, und da mein Ziel gerade ein mitnehmbarer Player ist, passt LiPo auch gerade besser.

Aber ich finde die Entwicklung super, und würde sie für zukünftige Projekte auf jeden Fall bevorzugen.

Ja, der FePo-Akku bei Eremit ist schon eine ganze Ecke größer. Mir würden 2000 mAh auch reichen.
Man kann ihm aber auch vielleicht eine Mail schreiben und fragen, ob er auch kleinere Akkus konfektioniert.

Allgemein scheint die Auswahl (in mAh) erheblich weniger flexibel zu sein, als bei LiPo. Tja, irgendwas ist halt immer :woman_shrugging:.

1 „Gefällt mir“

Oh super, schon fertig das Board. Das ist ja Spitze. :+1:
Also wenn noch eins da ist, würde ich auch eins nehmen.

@biologist 2000er LiFePo4 gibt es doch beim Eremit. Sogar 500mAh.

1 „Gefällt mir“

Ja, 2000er habe ich auch gesehen, aber die sind nicht fertig konfektioniert. Klar, kann man auch selbst machen. 500 mAh fänd ich persönlich bisschen dünn, da ist spätestens nach 3h Feierabend :slight_smile:.

Allerdings nur ohne Schutzschaltung - muss man halt selbst konfektionieren, bei Lithium-Akkus traut sich das nicht jeder zu.

Es gab auch mal diesen
https://www.eremit.de/p/3-2v-4000mah-pack-mit-schutz-flach
(Nicht von der Onebox verwirren lassen - 4000mAh)
Ich weiß aber nicht, ob man den auf Anfrage noch bekommt

1 „Gefällt mir“

Aber ich denke, er würde auf Anfrage auch einen 4000 mAh konfektionieren, und vielleicht auch regelmäßig anbieten - Ein paralleler 2-Zeller wäre mit flacher Bauweise für solche Projekte schon sehr relevant, vielleicht relevanter als die aktuelle 3er-Trommel.

Ich schreibe ihm mal eine Mail.

1 „Gefällt mir“

Ach, das gab es sogar schon mal? Wieso ist der raus? Den hätte ich schon bei den Tonuino-Projekten gebraucht…

Daher hatte ich den Link, verwendet wurde er zum Beispiel hier (der Link führt zu einen Post von Eremit zum Akku)

1 „Gefällt mir“

Aus einem Projekt mit dem „Forum von nebenan“ habe ich hier noch einen FePo-Akku mit 3200 mAh Kapazität. Ich weiß nur ehrlich gesagt nicht, wo man sowas fertig konfektioniert kaufen kann. Zum Größenvergleich habe ich mal eine RFID-Karte dazugelegt.

Habe mal eine Mail an Eremit geschrieben.

Daniel (von Eremit) hat mir heute geantwortet.
Er meinte, dass ich nicht der Erste sei, der eine solche Anfrage stelle. In maximal zwei Wochen soll es ein kleine Serie mit kleineren Akkus geben mit 3.2V 4Ah. Und wenn diese Erfolg hat, dann wird es eine Massenproduktion geben, die dann im August/September verkauft wird.

Wer also plant (jetzt oder perspektivisch), auf LiFePO4 umzusteigen (oder damit einzusteigen), sollte 3.2V LiFePO4 - EREMIT in der nächsten Zeit im Blick behalten. First come first serve.

Dünne FePo-Akkus bietet er nicht an, da diese von der Haltbarkeit her offenbar nicht gut sind.

2 „Gefällt mir“

Muss er auch nicht, ohne die dritte Zelle baut das schon gleich viel flacher (und ist auch nicht ganz so ein Schlauchboot-Anker).

Super Sache, Danke!.

Habe jetzt mit dem FePo-Board und den Spannungen ein bisschen experimentiert. Also normalerweise (mit D32 pro/LiPo) habe ich ein positives Offset von 0,1 V eingestellt, da der ESP32 sonst tendenziell eher zu wenig misst: ESPuino/settings-lolin_d32_pro_sdmmc_pe.h at fc3d5005cddde88c154b6231ea2f35e1dafa6e09 · biologist79/ESPuino · GitHub. Bei meinem FePo-Board passen hier 0,2 V vermutlich besser. Also wie es war, als der Akku ganz voll war, weiß ich nicht mehr so genau, aber spätestens so ab 3,3 V war die Messung des ESP32 immer etwa 0,1 V zu niedrig.

Ich habe jetzt mal bis auf 2,7 V etwa entladen, da wurde noch weiterhin Musik (auch von SD) abgespielt und auch RFID (nur PN5180 habe ich getestet) lief noch. Neu starten konnte ich den ESP32 jedoch nicht mehr. So bei 2,8 V etwa ging das noch. Also irgendwo dazwischen wird es potentiell kritisch.

Für die Akku-Parameter in der GUI würde ich auf Basis meines empirischen Versuchs folgende Werte vorschlagen (sofern oben auf 0,2 V Offset korrigiert wird - bitte im Einzelfall aber überprüfen!):
Alle LEDs an: 3,3 V (weil Spannungen über 3,3 V hat man eh nur so 1-2 min lang nach einem kompletten Aufladevorgang)
Warnung ab: 3 V
Eine LED: ab 3 V (siehe Messreihe)

Zwei Bugs sind mir beim Testen aufgefallen, die ich fixen muss:

  • Sobald die Spannung ich glaube 2,9 V unterschritt, führte das manuelle Auslösen der Spannungsmessung dazu, dass diese zwar von den LEDs angezeigt wurde, aber anschließend nicht mehr verschwand. Ich denke das hatte etwas damit zu tun, dass ich 2,9 V in der GUI konfiguriert hatte.
  • Die geschätzte Restkapazität in den Infos der GUI wurde negativ angegeben.

Fazit:
Insgesamt bekräftigt mich das in der Tatsache, keinen Boost-Converter benutzt zu haben. Ich bin überrascht, dass der ESPuino auch bei solch geringen Spannungen noch funktioniert. Unterhalb von 3 V, spätestens ab 2,9 V, geht es doch relativ schnell mit der Spannung weiter nach unten. Groß was gewonnen, außer konstante 3.3 V-Verhältnisse, hätte man mit einem Boost-Converter nicht, zumal der selbst ja auch Verluste hat.

1 „Gefällt mir“

Unterhalb von 3V läuft der ESP32-WROVER-E außerhalb der Spezifikation. Dabei könnte sich das ein oder andere „komische“ Verhalten zeigen. Der ESP32 an sich läuft ja noch bis 2.3V, aber die 3V beziehen sich dann wohl auf den Flash- und/oder PSRAM-Baustein des WROVER-Moduls. Bei mir hat sich bei niedrigen Spannungen das Modul aufgehängt und selbst im Netzbetrieb lief er nicht mehr an. Beheben konnte ich das nur durch einen Reset. Wenn kein Boost-Convert gewünscht ist, wäre vllt. ein Voltage Protector auf den EN Pin sinnvoll: #315 How to use Voltage Supervisors to protect ESP32, Raspberry Pi, and Batteries - YouTube

1 „Gefällt mir“

Gut, ich sage ja nicht, dass das erstrebenswert ist, den ESP32 unterhalb von 3 V zu betreiben. Nur in meinem Feldversuch hat es funktioniert. Wenn man einen Boost-Converter einbaut, dann hat der glaube ich einen Wirkungsgrad von ca. 90%. Ich habe aber so meine Zweifel, dass unterhalb von 3 V noch 10 % nutzbar sind für uns.
Auf dieses Develboard würde es eh nicht mehr passen. Es erzeugt halt zusätzliche Kosten und irgendwie ist unklar, ob das wirklich Mehrwert bringt.

Danke für den Link, interessant!
Wenn man so ein Monitoring irgendwann mal angeht, dann könnte der TPS3839G33 (schaltet bei 3,08 V) passen. Gibt’s auch für etwa 50 Cent bei JLC. Bei AliExpress knapp 30 Cent.

Am Samstag kamen noch zehn weitere Platinen für ein solches Develboard an. Bisher hielt sich das Interesse an diesem Board recht in Grenzen. Von daher werde ich das bis auf Weiteres nur bei Bedarf von Hand löten. Also meldet euch.