Wer eine Wetterstation betreiben will, der muss sich auch um die Stromversorgung Gedanken machen. Ideal ist eine autonome Versorgung mit Strom mittels Akkus. Da ist die ESP8266 Solar-Panel Stromversorgung natürlich naheliegend. Tagsüber wird der Mikrocontroller mit dem Strom der Solarzelle versorgt und gleichzeitig wird ein Akku geladen. In der Nacht kommt dann dieser Energiespeicher zum Einsatz.
In diesem Tutorial schauen wir uns an, wie wir den ESP8266 mit der Solarzelle verbinden und was wir für den Akkubetrieb brauchen.
Zubehör
Der ESP8266 kann mit 5V per USB, als auch mit 3.3V mit Strom versorgt werden. Damit wir eine lange Akkulaufzeit erreichen, nutzen wir 3.3V und entsprechende Akkus mit höherer Spannung. Anschließend drosseln wir diese. Die Solarpanels sollten mindestens 5V liefern, besser sind 6V. Dabei empfehle ich, dass jedes Solarmodul mindestens 500mA (besser 750mA) liefern kann.
In meinem Fall habe ich folgende Bauteile verwendet:
- NodeMCU Devboard bzw. ESP-01
- 6V Solarpanel (du kannst auch mehrere verwenden)
- Akku: Li-Ion Typ 18650B (mit 3.7V) + Halterung
- Akku Lademodul: Typ TP4056
- 3.3V Spannungsregler (MCP1700-3302E), z.B. bei ebay
- Kondensatoren (100uF, leicht abweichende Werte gehen aber auch)
- Kabel + Lötutensilien (oder Krokodilklemmen)
Alternativ zu den 3.7V Panasonic NCR18650B Batterien kannst du auch normale 1.2V Akkus in Reihe schalten, wobei diese weniger Kapazität (mAh) haben. Als Alternative oder zum Testen sind sie (mit einem Batteriehalter) dennoch zu gebrauchen.
Aufbau und Anschluss der Solarpanels am ESP8266
Damit wir mit dem ESP8266 Solar-Panele nutzen können, brauchen wir eine konstante Spannung von 3.3V. Hier könnten wir einfach nur einen linearen Spannungsregler zwischen Solarzelle und ESP verwenden. Das hat allerdings den Nachteil, dass die Stromverbindung abbricht, sobald die Sonne nicht mehr scheint.
Aus diesem Grund muss ein Akku dazwischengeschaltet werden. Sofern das Solarpanel genügend Strom generiert, soll der ESP davon versorgt und gleichzeitig der Akku geladen werden. In der Nacht soll der Akku dann seine Energie an den ESP8266 abgeben. So ist die konstante Stromversorgung sichergestellt. Hierfür gibt es spezielle Lademodule, wie den TP4056, die diese Aufgabe übernehmen.
Das Lademodul hat insgesamt drei Slots (jeweils mit Plus und Minus Pol). Zunächst schließen wir an + und – (neben dem USB-Port) die Solarzelle an. Falls du mehrere Solarzellen verwendest, kannst du diese parallel anschließen (alle Plus-Pole an +, alle Minus-Pole an –). An B+ und B- wird der Akku bzw. die Akkuhalterung angeschlossen (Plus an Plus, Minus an Minus). Auch hier kannst du mehrere Batterien parallel verbinden, sodass längere Dunkelphasen besser überstanden werden können, ohne dass der Strom aus geht. Gerade im Winter ist dies sehr nützlich
Bleibt noch der OUT+/OUT- Anschluss. Hieran schließen wir den ESP8266 an, jedoch brauchen wir davor noch den Spannungsregler, damit konstant 3.3V abgegeben werden. Dieser hat 3 Anschlüsse (VIN, VOUT, GND) und wir schließen ihn entsprechend dem folgenden (Schaubilds) an. Zwischen GND und VOUT kommt der Kondensator (kürzerer Pin an GND):
Bei dem Elektrolytkondensator (100uF) ist es wichtig, dass die längere Seite (+) an VOUT angeschlossen wird und die kürzere Seite an GND. Du kannst nun mit dem Multimeter nachmessen. Die Spannung sollte konstant bei 3.3V liegen, auch wenn die Solarzellen verdeckt sind.
Zu guter Letzt schließen wir VOUT und GND noch an den ESP-01/NodeMCU an (hierbei nehmen wir den 3.3V Pin sowie GND.
Mit dem ESP8266 Solarzellen- und Batteriespannung messen
Je nach Wetter und Jahreszeit wird die Batterie mehr oder weniger gut aufgeladen. Damit die Spannung nicht zu sehr sinkt, ist es sinnvoll den Batteriestand zu kennen und ggf. die Leistung zu reduzieren oder sogar den ESP in einen Standby-Modus zu versetzen.
Die ESPs mit mehr Pins haben oft auch einen analogen Pin, mit dem wir Spannungen bis zu 3.3V messen können. Das Problem ist allerdings, dass der Li-Ion Akku bis zu 3.7V ausgeben kann (manche Quellen sprechen sogar von bis zu 4.2V). Diese Spannung kann den ESP beschädigen, deshalb müssen wir die Spannung niedriger bekommen. Dazu nutzen wir einen Spannungsteiler, den wir mit zwei Widerständen einfach selbst bauen können:
Wir wissen hier, dass sie maximale Spannung U = 3.7V ist und wollen eine Ausgangsspannung U2 = 3.3V erreichen. Dies geht laut Gleichung folgendermaßen:
U2 = (U * R2) / (R1 + R2)
Wir können die beiden Widerstände R1 und R2 also frei wählen. Hier kannst du entweder deine eigenen Werte berechnen, oder R1 = 12k Ω, R2 = 100k Ω nehmen.
3.3V = (3.7V * 100kΩ) / (12kΩ + 100kΩ)
Falls die maximale Spannung deiner Batterie mehr oder weniger als 3.7V beträgt, musst du die Werte entsprechend anpassen.
Nun schließen wir den den analogen ESP Pin zwischen die beiden Widerstände, wobei R1 an VOUT des MCP1700-3302E angeschlossen wird und das andere Ende von R2 an GND.
Anschließend können wir den analogen Spannungswert am ESP32 / NodeMCU Development Board abfragen. Dies geht mit dem analogen Pin 10 / ADC0 (siehe oberes Pin Schaubild). Beim ESP32 ist es GPIO 33.
analogRead(0);
Der Wert ist ein 12Bit Wert (0 bis 4095) und gibt den Pegel an. Um die Spannung festzustellen, müssen wir also durch 4095 dividieren und mit 3.3 multiplizieren.
Strom sparen mit Deepsleep
Falls der ESP8266 nur durch ein Solarpanel mit Strom versorgt, so ist es umso wichtiger, dass der Verbrauch nicht allzu hoch ist. Natürlich hängt das von verschiedenen Faktoren ab. Du solltest die Solarzellen an Orten mit möglichst langer und hoher Lichteinstrahlung stellen. Außerdem sind rechenintensive Aufgaben am ESP8266 nicht zu empfehlen.
Um also möglichst sparsam zu sein, gibt es einige Möglichkeiten:
- Deepsleep: Die einfachste Methode ist den ESP „schlafen zu lassen„, sofern er nichts berechnen muss. Dabei wird allerdings auch die Wifi Verbindung getrennt und der ESP ist in dieser Zeit nicht von außen ansprechbar. Es eignet sich vor allem, wenn kontinuierlich Werte erfasst (bspw. alle 30 Minuten) und an einen Server gesendet werden sollen.
- Berechnungen auslagern: Nicht alle Berechnungen müssen auf dem ESP / NodeMCU stattfinden. Sofern möglich kannst du rechenintensive Aktionen von anderen ausführen lassen, wie z.B. von einem Raspberry Pi. Ein gutes Beispiel hierfür ist die Gesichtserkennung bzw. Machine Learning Algorithmen.
- Bei niedrigem Akku schlafen gehen: Sofern die Leistung des ESP benötigt wird, können wir auch den Akkustand in einem Intervall messen und erst bei Unterschreiten eines bestimmten Werts den Deep-Sleep aktivieren. Auch können wir nur bei Sonnenstrahlung aktiv sein und die Messungen/Funktionen in der Nacht vermindern.
- Andere Funkprotokolle verwenden: Das Verbinden mit einem WLan Netzwerk braucht bis zu 200mA, weshalb es im Solarbetrieb bessere Alternativen gibt. Über Protokolle wie Zigbee können auch ohne Wifi Verbindung Werte an eine Hauptstation gesendet werden.
Gerne kannst du weitere Möglichkeiten, um Strom beim ESP8266 Solar-Betrieb zu sparen, in einem Kommentar nennen.
24 Kommentare
Klasse tutorial, ich denke an einen regensensor nach mit dem esp. Da dieser möglichst autark arbeiten soll auf dem Dach ist das eine gute Konstellation. Größtenteils soll es zur Vermeidung der durchnässung der markiese kommen, an nicht sonnigen Tagen ist die eh nicht ausgefahren daher wäre es nicht schlimm wenn der mal nicht läuft.
Aber das der esp auch zigbee kann ist interessant! Gibt es dazu schon ein tutorial
An einer Regensensor-Anleitung mit Messung des Niederschlags arbeite ich bereits, soviel kann ich verraten 🙂 Es wird wohl eines der nächsten Tutorials.
Bin sehr gespannt…
Niederschlagsmessungen präzise zu messen ist schwierig. Ich bastele gerade mit dem VEML6075 an der Messung von UV-A und UV-B Strahlung und deren Umrechnung in den UV Index… danach soll auch der Regen dran kommen. Aber eben erst die Sonne 😉
Wo steht, dass der ZigBee kann ? Die einzig mir bekannten Endverbraucher-Module sind Shields z.B. Xbee.
Ich finde diese Site sehr informativ und habe schon einige nützliche Informationen bekommen, habe aber den Eindruck, dass die Community nur aus der Person „Felix“ besteht. Ist an sich nichts Schlimmes, aber schade, dass sich nicht mehr beteiligen. Ich selbst bin leider noch nicht so weit, dass ich etwas Sinnvolles beitragen könnte.
In Bezug auf diesen Solar-Lader hätte ich allerdings einen Hinweis. Ich weiß nicht, ob die Ladeschaltung verhindert, dass Strom aus dem Akku in die Solarzelle zurück fließen kann wenn deren Spannung niedriger ist als die Akkuspannung. Kann man ja ggf. messen. Ich würde sicherheitshalber eine Diode in Reihe zu der Solarzelle schalten, die natürlich den max. Ladestrom aushalten muss und die abgegebene Spannung um ca 0,7 V reduziert, was man ggf. bei der Auswahl der Solarzelle(n) berücksichtigen sollte. Solarzellen mögen es nicht, wenn Strom in sie hinein fließt.
Du hast recht, denn die Seite entstand aus meinem Hobby am Raspberry Pi und Mikrocontrollern. Das Wissen wollte ich dann entsprechend mit anderen teilen. Mehr oder weniger erstelle und schreibe ich die Tutorials im Moment alleine, wobei es schon einige Beiträge von Lesern gab. Ich bin diesbezüglich offen und freue mich natürlich über eine Beteiligung der Community.
Viele Grüße,
Felix
Mir hat die Einfachheit des Aufbaues gefallen. Ich habe auch schon die Teile bestellt, habe aber jetzt folgenden Artikel gelesen und bin verunsichert ob ich dieses Konzept weiter verfolgen kann.Hier der Link: best-microcontroller-projects.com/tp4056.html
Hauptaussage ist: wenn geladen wird, dann keine Verbraucher….wenn Verbraucher an Batterie hängt nicht laden!
Bitte um Eure Ideen und Hinweise. Ich möchte mit diesen LiIonen Akkus nichts falsch machen.
Beste Grüße
Gerald
Sehr gutes Tutorial – werde es bestimmt mit meinen Kindern nachbauen!
Da der Nachbau dieses Schaltung aber auch Kosten verursacht, wünschte ich mir
die Beifügung einer Preisliste für die verwendeten Bauteile. Ich hoffe, diese Preisliste wird noch nachgereicht! Danke dafür
Hi,
das kommt darauf an, wo du die Komponenten kaufst (im Elektrofachmarkt sind die Preise meist etwas höher, als bei der Bestellung im Internet). Und es kommt auch auf das genaue Bauteil an (Auswahl der Solarzellen-Leistung, ESP Modell, etc.). Grob würde ich allerdings sagen:
– 5W Solarzelle: 10-15€
– Li-Ion Batterie + Halter: etwa 10€
Google…? 😏
Eindeutig Daumen runter ! Der Regler ist ein Typ der in Reihe zur Last liegt. Die Differenz zwischen Batteriespannung und Betriebsspannung des ESP wird als Wärme verbraten und verschlechtert die Energiebilanz und damit auch die Laufzeit. Ein größeres Solarmodul und ein größerer Akku um eine ineffiziente Stromversorgung auszugleichen, ist doch keine Lösung!
Dafür verwendet man Schaltregler.
Eindeutige Daumen runter ist in einer solchen Community kein sehr produktiver Kommentar. Wie wäre es mit einem konkreten Verbesserungsvorschlag. Diese Vorschläge werden häufig von Newbies gelesen, die dabei eventuell auch noch etwas lernen ( wollen).
Für den Kommentar von Manylomy: Eindeutig Daumen hoch!
Ich würde es mir auch einen konkreten Verbesserungsvorschlag wünschen, an Stelle der Kritik, die uns keinen Schritt weiter bringt!
Sehe ich genau so wie ManyIomy und Marco!!
Schreib doch wie es besser geht!
Ich habe mir den Laderegler erspart und NCR18650B mit integrierter Schutzelektronik verwendet.
Wobei ich 2 Stück in Serie geschaltet habe und ein 12V Solarpanel angeschlossen.
Die Spannung (3.3V) wird mittels Stepdown Konverter hergestellt.
Damit die Panels nicht im Leerlauf arbeiten, wenn die Akkus aushängen (bei voll-Ladung), habe ich eine 12.5W 9.1V Zenerdiode (mit Aluklotz als Kühlkörper!!) parallel zu diesen reingehängt.
Aufgepasst: Zumindest bei mir ist der ADC Eingang am ESP für max 1V ausgelegt.
Ich lasse den ESP bei Spannungen unter 7.9V in den Deepsleep für 2min und dann für 20sek laufen.
Habe aber auch eine Aufweckautomatik mit Opamp und CMOS NAND-Gattern erstellt, falls das Anemometer während dem Deepsleep gefährlich hohe Windgeschwindigkeiten misst.
Hier sind alle und weitere Einzelheiten zu finden:
https://www.ltspiceusers.ch/threads/opensource-wettersensor.392/
PS:
Finde es immer toll, wenn jemand seine Erfahrungen veröffentlicht.
Danke dafür an den Ersteller
18650 LiIon Akkus arbeiten mit einer Nennspannung von ca. 3,6-3,7V je nach konkretem Modell. voll geladen sollte die Spannung 4,2V nicht überschreiten um den Akku nicht zu beschädigen. „Leer“ beträgt die Spannung je nach Modell zwischen 2,8 und 3,2V. Wer sich nicht sicher ist sollte besser geschützte Akkus verwenden, die verhindern selbständig dass sie zu hoch aufgeladen oder zu tief entladen werden.
Hallo! Habe dieses Tutorial mit großem Interesse gelesen. Gute Idee, die ich womöglich auch mal nutzen kann. Eine Frage hätte ich bezüglich des Spannungsreglers. Damit dieser immer sicher 3,3V liefert, muss seine Eingangsspannung ja ein wenig höher sein. Aus dem Datasheet lese ich heraus, dass die minimale Spannung für 3,3V output wenigstens bei ca. 3,8V liegen sollte. Der Akku kann bei Entladung aber auch mal unter diese Spannung sinken. Würde es dann nicht zu einer Fehlfunktion kommen, da die Spannung für den microcontroller unter 3,3V fallen würde?
Habe mir sowas auch schon gebaut. Grade für meine Bienenstand ist es mir wichtig autark zu sein
https://blog.bajonczak.com/hivemonitoring_part1
Dort ist mein Aufbau zu sein. Ich habe aber nicht den tp als ladechip genommen. Da dieser eher ungeeignet für den lipo war. Habe dafür den cn Chip verwendet. Dieser war wesentlich effizienter.
@Ralf
Ich empfehle bei nur einem Akku einen Stepup/down (beides in Einem) zu verwenden.
Der ist auch viel effizienter als ein Spannungsregler.
Im Solar/Akku Betrieb müssen wir ja „energiebewusst“ denken ^^
Hallo,
vielen Dank für die Anleitung! WEnn ich den D1 mini über den 3V3 Pin mit Strom versorge (und nicht über USB) dann liegt am 5V Pin keine Spannung an. Gibt es eine einfach Möglichkeit mit dieser Schaltung Sensoren mit 5V zu versorgen?
Oder sollte man dann die ganze Stromversorgung direkt auf 5V auslegen?
Vielen Dank im Voraus!
Erik
Hallo,
zum Thema Spannungsregler hätte ich etwas zu bedenken.
Es ist richtig dass die Spannungsdifferenz in einem Linearregler „verbraten“ wird.
Das ist aber nicht viel wenn man einen Regler in stromsparender Ausführung nimmt und gleichzeitig den Schlafmodus des Prozessors nutzt. Im DeepSleep fließt dann ein Strom von wenigen µA.
Verwendet man hingegen einen Stepdown Wandler um vermeintlich Leistung zu sparen, dann geht das nach hinten los. Denn der läuft immer, auch wenn der Prozessor schläft. Und ganz ohne Verluste läuft so ein Schaltregler im Leerlauf auch nicht.
Man müsste das mal am konkreten Beispiel untersuchen.
Nachtrag:
Da der ESP32 im WLAN Betrieb auch mal Stromspitzen von bis zu 400mA auf der Spannungsversorgung verursacht sollte man den unbedingt mit einem Elko puffern. Low ESR Typen sind zu bevorzugen.
Eine Alternative wäre eine LiFePo4 Zelle als Stromversorgung. Die ist in ihrem Spannungsbereich ideal an den ESP32 angepasst und es wird somit kein Spannungsregler mehr benötigt. Sensoren gibt es auch immer mehr für 3,3V so dass die 5V Versorgung ganz wegfallen kann.
Ein Protection Board für die Zelle (2-3€) sollte man als Schutz vor Tiefentladung unbedingt vorsehen.
Wenn man jetzt elektronikbasteltechnisch nicht mehr so ganz auf der Höhe der Zeit ist, sollte sich doch auch eine Solar-Powerbank (z.B. https://www.amazon.de/dp/B07SN99KNL ) verwenden lassen oder spricht da was dagegen?
Noch einfacher geht es mit einem Wemos D1 Board https://www.wemos.cc/en/latest/d1/index.html
und dem passenden Battery Shield https://www.wemos.cc/en/latest/d1_mini_shield/battery.html
Damit kann man sich den Spannungsregler MCP1700 sparen.
Einfach auf den Wemos D1 das Battery Shield stecken und an dieses den Lithium Akku und das 6V Solarmodul anschliessen – fertig.