Forum: Mikrocontroller und Digitale Elektronik NodeMCU stromstparend programmieren


von Melinamellmel (Gast)


Lesenswert?

Hallo zusammen,
Ich studiere Wirtschaftsingenieurwesen und habe derzeit ein 
Mechatronikprojekt. Ich baue eine Wetterstation aus einem NodeMCU, einen 
MPL3115A2, einen DS18B20, einen DHT22 und eine RGB-LED.
Nun ist die Anweisung meines Dozenten, das ganze stromsparend zu 
programmieren. Ich bin ein absoluter Anfänger und habe keine Ahnung, 
also bitte ich um Verständnis. Wie kann ich den Microcontroller 
stromsparend programmieren? ICh habe überlegt, dass der NodeMCU nur alle 
5 Minuten die Werte ziehen soll.. Aber keine Ahnung, ob das als 
"stromsparend" ausreicht.. Ich danke euch bereits im Voraus für gute 
Ideen :)
Viele Grüße,
Melina

von Nick S. (c0re)


Lesenswert?

Melinamellmel schrieb:
> ICh habe überlegt, dass der NodeMCU nur alle 5 Minuten die Werte ziehen
> soll.

Alle 50 min wäre noch sparender, alle 500min noch sparender, wenn er nie 
sendet ist er am sparsamsten...

Sehr interessant was man in

Melinamellmel schrieb:
> Wirtschaftsingenieurwesen

nicht machen muss. Abwägen und nachdenken.

: Bearbeitet durch User
von Mr. X (Gast)


Lesenswert?

Melinamellmel schrieb:
> Hallo zusammen,
> Ich studiere Wirtschaftsingenieurwesen und habe derzeit ein
> Mechatronikprojekt. Ich baue eine Wetterstation aus einem NodeMCU, einen
> MPL3115A2, einen DS18B20, einen DHT22 und eine RGB-LED.
> Nun ist die Anweisung meines Dozenten, das ganze stromsparend zu
> programmieren. Ich bin ein absoluter Anfänger und habe keine Ahnung,
> also bitte ich um Verständnis. Wie kann ich den Microcontroller
> stromsparend programmieren? ICh habe überlegt, dass der NodeMCU nur alle
> 5 Minuten die Werte ziehen soll.. Aber keine Ahnung, ob das als
> "stromsparend" ausreicht.. Ich danke euch bereits im Voraus für gute
> Ideen :)
> Viele Grüße,
> Melina


Das reicht nicht aus. Das NodeMcu-Modul zieht zuviel Strom. Nimm eins 
dieser kleinen ESP-Boards (ESP-12F oder so) und papp die Sensoren da 
dran.
Wie oft Du die Sensor-Werte sendest, hängt vom Einsatzzweck bzw. den 
erwarteten Erkenntnissen ab.

von 6a66 (Gast)


Lesenswert?

Melinamellmel schrieb:
> Ich bin ein absoluter Anfänger und habe keine Ahnung,
> also bitte ich um Verständnis. Wie kann ich den Microcontroller
> stromsparend programmieren?

Google "nodemcu stromverbrauch" führt zu
https://www.dinotools.de/2015/07/14/esp8266-01-power-consumption/

Danach weiter suchen und belesen. Ohne Ahnung wird das nicht besser. 
Also Ahnung erzeugen :)

rgds

von Stefan F. (Gast)


Lesenswert?

Es geht sicher darum, den deep-sleep Modus zu nutzen, und einen Timer, 
der den Chip in regelmäßigen Intervallen durch einen Reset-Impuls 
aufweckt.

Dazu musst du GPIO16 (=Ausgang es Timers) mit Reset verbinden.

Das NodeMCU Board ist allerdings nicht gerade auf StromSparen ausgelegt. 
Darauf befinden sich einige Komponenten, die ständig signifikant Strom 
aufnehmen. Zum Beispiel der Spannungsregler und der USB-UART.

Ich kenne da die Methode, ein ESP-12 Modul direkt an zwei Alkaline 
Batterien zu betreiben. Bis 2,5V runter läuft das ESP Modul noch. So 
kann man die Batterien zwar nicht optimal ausnutzen, aber man erspart 
sich die zusätzliche Stromaufnahme des Spannungsreglers.

Wenn du es wirklich ernst meinst, verwendest als Timer einen kleinen 
8bit Mikrocontroller (z.B. ATTiny13), der die gesamte Stromversorgung 
des NodeMCU Moduls mit einem MOSFET bei nicht-gebrauch abschaltet.

Denn so ein ATTiny kann direkt an die Batterie angeschlossen werden und 
nimmt viel viel viel weniger Strom auf.

von (prx) A. K. (prx)


Lesenswert?

Stefan U. schrieb:
> Das NodeMCU Board ist allerdings nicht gerade auf StromSparen ausgelegt.
> Darauf befinden sich einige Komponenten, die ständig signifikant Strom
> aufnehmen. Zum Beispiel der Spannungsregler und der USB-UART.

Der USB-Wandler zieht nur dann deutlich Strom, wenn aktives USB 
dranhängt. Behauptet jedenfalls das Datasheet vom CH340.

Beim Spannungsregler wäre interessant, ob man den links liegen lassen 
kann um die NodeMCU direkt über die 3,3V Versorgung zu füttern.

von Richard B. (r71)


Lesenswert?

Stefan U. schrieb:
> Das NodeMCU Board ist allerdings nicht gerade auf StromSparen ausgelegt.

Ja, aber wie du das beschreibst ist sie schon auf unter 5µA herunter.

Oder sie nimmt gleich ein anderes Modul: ESP32 und BMP280
dazu ein Solarlader samt 1-2W Solarzelle und ihr Projekt
läuft mehrere Jahre...

@Melina: Wenn du die Daten alle 10-15 Minuten erfassen und
hochladen willst, bist du bei gerade ~1.5mA.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

> Der USB-Wandler zieht nur dann deutlich Strom, wenn aktives USB
> dranhängt. Behauptet jedenfalls das Datasheet vom CH340.

Im DB steht: "Total source current when USB suspending  0.05mA"

Bei Batteriebetrieb halte ich Ruhestromaufnahmen über 1µA für nicht 
akzeptabel. Dafür sind mir die Batterien zu teuer und der 
Batteriewechsel zu Aufwändig.

Deswegen lieber ganz abschalten.

> NodeMCU ... Ja, aber wie du das beschreibst ist sie schon auf
> unter 5µA herunter.

Wie kann das sein? Schon das ESP modul nimmt ca 25µA auf, dazu mommen 
noch 50µA für den USB-UART sowie satte 5mA für den Spannungsregler.

von Richard B. (r71)


Lesenswert?

Stefan U. schrieb:
> Wie kann das sein?

Ich habe das gerade nicht im Kopf...
Jemand hat hier so eine Schaltung gepostet.
UART und der Regler werden abgeschaltet.
Danach nimmt der ESP weniger als 5µA (~3,8µA).

von Stefan F. (Gast)


Lesenswert?

> UART und der Regler werden abgeschaltet...ESP weniger als 5µA

Da sind gleich zwei Sachen unstimmig: UART und Regler kann man auf 
diesem Board gar nicht abschalten und der ESP nimmt viel mehr Strom auf, 
ganz sicher.

Laut Datenblatt nimmt der ESP 20µA bei 2,5V auf. Wir haben aber 3,3V und 
es kommt noch die Stromaufnahme vom Flash-Speicher und vom Timer dazu.

von Richard B. (r71)


Lesenswert?

Stefan U. schrieb:
> UART und Regler kann man auf
> diesem Board gar nicht abschalten

Klar, deswegen sagte ich->

Richard B. schrieb:
> Jemand hat hier so eine Schaltung gepostet.

Direkt mit nodeMCU geht das so nicht.

Stefan U. schrieb:
> Laut Datenblatt nimmt der ESP 20µA bei 2,5V auf.

Ich habe aber trotzdem 3,8µA (3.3V) gehabt... ohne Timer.
5µA waren für diese Schaltung Typisch gewesen.

Hast du vielleicht ein ESP32 zum testen?

: Bearbeitet durch User
von achim.s (Gast)


Lesenswert?

Wenn die HW vorgegeben ist, dann
- programmiere es erstmal rund, ohne an den Strom zu denken
- refaktoriere den Code, bis es wieder rund läuft,
- refaktoriere den Code, bis es wieder rund läuft,
- messe den Strom während verschiedener Modi,
- variiere die Modi und Messe nochmal die Ströme

dann setze Dich hin und überlege Dir Konzepte für einen stromsparenden 
Betrieb
dann überlege, ob Du Dein Design änderst oder von Grund auf neu 
programmierst.

Du wirst am Ende sehen, dass Du damit *insgesamt immer noch schneller 
bist*, als wenn Du schon vor der ersten Zeile über Optimierung 
nachdenkst.

von G. H. (schufti)


Lesenswert?

für gewöhnlich zieht der esp12 auf dem nodemcu board (also esp8266 + 
flash) um die 25µA (je nach Vorbereitung der gpios auf deepsleep).

Ob der USB/seriell Wandler bei Speisung über den 3V3-pin mitversorgt 
wird hängt von der nodemcu Clone-Version ab.

Der oft verbaute AMS1117 3.3V Regler liegt meist eher bei 10mA 
"quiescent"
current, es gibt aber auch Boards mit beserem...

eventuell ist eine Lösung mit "nur" ESP-01 und TPL5110 zulässig?

Aber generell läßt sich - mit mehr oder weniger Aufwand, je nach 
Cloneversion - auch aus jedem nodemcu eine low power Messplatform 
machen.

: Bearbeitet durch User
von Wirt der schafft (Gast)


Lesenswert?

Melinamellmel schrieb:
> Hallo zusammen,
> Ich studiere Wirtschaftsingenieurwesen ....

> Nun ist die Anweisung meines Dozenten, das ganze stromsparend zu
> programmieren. Ich bin ein absoluter Anfänger und habe keine Ahnung,

In der Stromzufuhr eine Schaltur und einen Energiezähler einschleifen.
Die Schaltuhr programmieren(*): alle n Minuten, für d Minuten ein; sonst 
aus.
Den NodeMCU programmieren(*): alle Arbeit (Sensoren einlesen, ggfs. 
umrechnen, speichern oder übertragen) gleih beim Aufstarten erledigen.; 
warten.

Reicht die Zeit d nicht um die Arbeit zu erledigen? d erhöhen.
Energieaufnahme gemäß Zähler zu hoch (Batterie hält nicht lange durch)? 
n erhöhen.

(* das Wort programmieren wird hier umgangssprachlich eingesetzt)

von Stefan F. (Gast)


Lesenswert?

> In der Stromzufuhr eine Schaltur ... einschleifen.

Danke, endlich stehe ich nicht mehr ganz alleine mit diesem Vorschlag 
da.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.