ESP32 im Akkubetrieb mit Servo

Sorry, hab schon wieder ne Frage :see_no_evil: bzw. bräuchte eure Meinung zu einer Sache:

Ich möchte folgendes realisieren:
Ich habe zwei ESP32: einer soll Sender und einer Empfänger sein.

Am Empfänger hängt ein kleiner Servomotor.

Wenn der Empfänger ein kurzes Signal vom Sender bekommt, soll er den Servo eine Umdrehung machen lassen. Nicht mehr und nicht weniger. Im Moment mach ich das über das ESP-Now Protokoll, funktioniert prima. Denkbar wäre auch per Funk-Modul (RC 433 mhz), wie bei einer Zentralverriegelung am Auto...so was ähnliches soll es auch werden (nur für den Hasenstall :rofl:).

grafik

Problem: Der Empfänger-ESP soll mit einem Akku betrieben werden und möglichst lange halten (also am besten Wochen...).

Gibt es eine Möglichkeit, sowas akkusparend umzusetzen?

Ich vermute mal mit meinem aktuellen Setup wird der Akku in ein paar Stunden leer sein, oder?
Der ESP muss ja quasi immer auf Standby bleiben und überwachen, ob eine Nachricht reinkommt, d.h. deepsleep ist nicht, korrekt?

Habt ihr da ein paar Ideen für mich? Gibt es z.B. eine Stufe vor deepsleep, in der der ESP weniger verbraucht aber noch ESP-NOW läuft? Oder irgendne andere Möglichkeit, um über Wochen mit Akku den Servo zu bertreiben.

Ich gehe von ca. 3 oder vier Servo-Umdrehungen pro Tag aus, den Rest "wartet" der ESP quasi nur auf seinen Einsatz.

Für ein Projekt, das nichts mit Hasen zu tun hat, verwende ich auf der Slave-Seite Folgendes:

  • einen Arduino Micro
  • ein HC-12 Funkmodul, das an die Pins 0 und 1 (Serial Rx und Tx) angeschlossen ist
  • einen Pololu Power Switches, der an meine Bedürfnisse angepasst ist
  • eine 1S LiPo-Batterie und einen festen, effizienten Boost-Regler auf 5V
  • einen allgemeinen Ein-Aus-Schalter zwischen der Batterie und dem Boost-Regler
  • andere Ausgabegeräte (Motor, Ton)

Die Funktionsweise ist folgendermaßen: Wenn ich den Ein-Aus-Schalter benutze, wird das gesamte System mit Strom versorgt. Der Arduino startet und schaltet den Power Switch aus, konfiguriert Serial und den HC-12 und versetzt sich in den Niedrigstrommodus (FU2-Modus, Leerlaufstrom von etwa 80uA) und aktiviert Pin Change Interrupts für Pin D0 (Rx). Dann geht er in den Tiefschlafmodus über (unter Verwendung von SLEEP_FOREVER in LowPower.powerDown()).

Auf der Master-Seite habe ich einen passenden HC-12. Wenn ich auf der Slave-Seite etwas tun möchte, sendet der Master-HC-12 ein Weckbyte. Dieses Byte wird am Rx-Port des Slave-Arduinos ankommen, was den PC-Interrupt auslöst und den Slave-Arduino aufweckt. Der Slave-Arduino schaltet den Pololu Power Switch ein, um Strom für meine Subsysteme bereitzustellen, und wenn alles bereit ist, sendet er ein ACK-Kommando an den Master, der dann das eigentliche Kommando senden kann. Der Slave-Arduino empfängt das Kommando, verarbeitet es, bestätigt es dem Master und geht dann wieder in den vollständigen Niedrigstrommodus, bis das nächste Kommando eintrifft.

In meinem System verwendet der Master keinen Niedrigstrombetrieb, sondern wird von einer Steckdose mit einer 5V-Stromversorgung versorgt. Sie könnten sich jedoch auch ein System vorstellen, bei dem ein Pololu Power Switch den Master aufweckt und die Befehle sendet.

1 Like

Mit ESP32 wird das nix. ESP-NOW braucht genauso wie WiFi akiviertes WLAN.
Und das ist der Stromfresser.

Du könntest höchstens ein Funkmodul an den ESP32 anschließen und damit den ESP32 aus dem deepsleep aufwecken. Aber dann kann man auch einen anderen µC nehmen.

Wenn das ein Continiuos Rotation-Servo ist wird das nicht funktionieren, weil du keine Rückmeldung darüber hast ob das Servo genau eine Umdrehung gemacht hat.
Dir schwebt wahrscheinlich vor, die Ansteuerzeit so lange anzupassen bis es genau eine Umdrehung ist.

Nun ... wenn die Spannung niedriger wird oder irgendwas wegen Wind oder sonst irgendwas schwergängiger ist dann läuft der Motor langsamer und dann passt die Zeit nicht mehr.

Nimm einen kleinen Getriebemotor mit Encoder dann hast du die Rückmeldung über die Position.

vgs

1 Like

Das hört sich sehr gut an, danke dir🤟

Den Satz hatte ich ganz überlesen. Was meinst du damit?

Mit Funkmodul wär's ja quasi so, das

Ich hab übrigens die hier, meinst die gehen auch?
https://amzn.eu/d/8FaeUBY

Das Receiver-Modul hat VCC, GND und zwei Data Pins. Welcher Pin kommt da an Pin 0 und welcher an Pin 1?

vermutlich gar keiner. Das HC-12 Funkmodul ist quasi eine wireless serielle Schnittstelle

Die superbillich-Module kriegen das bitbanging einer seriellen Schnittstelle nicht gebacken. Die reichen wirklich nur um ein Schaltsignal zu übertragen.

haaach ! Und schon wieder bei Amazon gekauft.
Amazon ist weder der günstigste Anbieter noch bietet Amazon ausführliche technische Informationen und Datenblätter die man eigentlich immer braucht schon gar nicht.

Ein Beispiel:

jetzt zeige mir einen Amazon-Anbieter der das Wemos D1 mini für unter 3 Euro anbietet.

vgs

Also gut, überredet.
Ich streich Amazon künftig bzgl. Elektronikteilen von meiner Liste.

By the way:
Bleibt nur noch die Frage, ob ich als Microcontroller für den Sender einen ESP32 und als Empfänger einen Nano oder auch einen ESP32 nehme.

Für den Betrieb mit dem HC12 sollten die ja beide gleich gut herhalten. Der Empfänger als ESP32 lässt sich ja genauso gut per HC 12 aus dem Deepsleep erwecken, aber der ESP verbraucht im Deepsleep soweit ich weiß weniger Strom als der Nano, korrekt? Oder gibt's da noch ne bessere Wahl?
Wir gesagt: der Controller muss per HC12 geweckt werden, einen Impuls an einen Motor geben und dann wieder schlafen.
Am Empfänger Brauch ich auch kein WiFi, jedoch am Sender (wegen ner anderen Funktion).

D.h. zweimal ESP32 jeweils mit HC-12 und der Tag ist mein Freund, gell?

Die Wahl des HC12 erfolgte aufgrund seines geringen Stromverbrauchs von 80 µA und seiner Funktion als serieller Port. Dadurch können Sie seinen Tx-Pin verwenden, um das Arduino aufzuwecken

Ich habe nachgeprüft und es handelte sich um einen Pro Mini mit 16 MHz (kein Arduino Micro), bei dem ich die LED und den Regler entfernt hatte. Der Stromverbrauch im Tiefschlaf beträgt etwa 3 µA (Einige Boards haben eine Jumper-Option, die Sie abschneiden können, um dies zu erreichen). Mit einem ESP32 erreichen Sie in der Regel keinen so geringen Stromverbrauch. Bei den besten ESP32-Modulen kann der Stromverbrauch eher bei etwa 10 µA liegen.

Und Wenn Sie weder WiFi noch Bluetooth benötigen, warum sollten Sie dann ein Arduino-Board wählen, das diese Fähigkeiten bietet?

Ich will mir beim Sender die Möglichkeit offen halten, Updates per Http aufzuspielen und evtl. ein paar Parameter einstellbar machen über ein Webinterface. D.h. ich werde wohl als Sender die Kombi ESP32 und HC12 und als Empfänger dann z.b. einen etwas sparsameren Microcontroller wählen.

Akku nachladen mit Solarpanel.

1 Like

OK, das macht dann Sinn

Der Sender befindet sich doch in deiner Nähe, warum dann per HTTP Updates überspielen ?
Das macht doch beim Empfänger eher Sinn, da dieser wohl nicht unmittelbar in der Nähe ist.
Deine Module

lassen sich auch verwenden, haben allerdings eine geringere Reichweite und eine andere Ansteuerung. Das geht z.B. mit der Library RCSwitch oder RadioHead. Auch sind die nicht sehr zuverlässig.

Aber mit denen kann ich den ESP bzw. den Arduino nicht aufwecken, oder?

Richtig, das geht in der Tat nicht damit.

Dennoch verstehe ich nicht, warum du am "Sender" Parameter per Website anpassen willst. Den hast du doch immer vor dir.

Ja... wahrscheinlich hast du Recht. Ich denk nochmal nach....

Und aus Erfahrung macht es Sinn, die "Teile" per OTA oder HTTP anzupassen, die entfernt montiert sind.
Aus dem Grund habe ich bei mir alle externen "AVRs" durch ESPs ersetzt.
So kann ich diese leicht per OTA optimieren. Und die restlichen folgen nach und nach. :wink:

1 Like

Und wenn noch Platz ist, dann die Debug-Möglichkeiten übers Netz mit einbinden.

Gruß Tommy

2 Likes

Da gebe ich dir Recht. Das kann in den meisten Fällen helfen.
Da ich aber für "fast" alle meiner Projekte hier noch eine Testumgebung liegen habe, mache ich das zuvor "meist" auf dieser Umgebung. Wenn es dann läuft, geht's in die Luft. :wink:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.