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.
LiFePO4 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 .
- 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 .
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?
- Grundsätzlich gilt: Es sollte NIEMALS ein Lithium-Akku ohne Schutzschaltung verwendet werden!
- 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 ein zweites Akkupack, das ä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 an dieses Develboard 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 des Akkus (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
- USB-Anschluss im Gehäuse nach außen führen: Magnet-USB-Stecker.
- Anschluss einer USB-C-Buchse: Anschluss einer USB-C-Buchse.
Interesse?
Falls du Interesse an einem solchen Develboard hast, dann melde dich bei mir per privater Nachricht bei mir. Da ich sonst keinerlei LiFePO4-Develboards kenne bin ich auch offenbar dafür, dieses Develboard an Leute zu schicken, die es nicht für ESPuino benötigen.
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), welche vier statt zwei Layer besitzt. Das erspart mir viel Lötarbeit, da ich diese vorlöten lasse. Ich löte nur noch die Pinleisten dran und den JST-Anschluss für den Akkuanschluss drauf.