Forum: Mikrocontroller und Digitale Elektronik Idee gesucht. Funk Led Sparsam


von S. M. (lichtmensch)


Lesenswert?

Ich suche eine Lösung, um eine LED über ein Funksignal ein- und 
ausschalten zu können. Damit das System skalierbar bleibt, müssen die 
LEDs adressierbar sein. Da der Betrieb über einen Akku erfolgen soll, 
ist es wichtig, dass der Stromverbrauch so gering wie möglich ist, 
solange die LED ausgeschaltet ist.

Es ist okay, wenn das System langsam arbeitet, z. B. indem der Empfänger 
nur einmal pro Stunde aktiviert wird.

Meine Idee wäre, einen kleinen AVR zu verwenden, der ein 
433-MHz-Funkmodul steuert. Allerdings stellt sich die Frage, wie man die 
LED eingeschaltet lassen kann, während der Mikrocontroller im 
Schlafmodus ist.

Und wie würde man das "Moderner" machen? ein esp ist ja incl Speicher 
und Funk kleiner und kaum teurer als ein alter at mega8 mit 433 Funk. 
Der esp würde aber vermutlich den Akku auch im Deepsleep zu schnell 
aussaugen.

von Achim M. (minifloat)


Lesenswert?

S. M. schrieb:
> Allerdings stellt sich die Frage, wie man die LED eingeschaltet lassen
> kann, während der Mikrocontroller im Schlafmodus ist.

Welche Frage?
Der Mikrocontroller geht doch nicht durch einen Reset und setzt die 
Peripherie zurück. D.h. die GPIO bleiben statisch so wie sie sind. 
Weiters besteht noch die Möglichkeit ein Latch zwischenzuschalten.

S. M. schrieb:
> ein esp ist ja incl Speicher und Funk kleiner

ESP8266 = Sleepmode schlecht bis gar nicht nutzbar
ESP32 = Sleepmodi besser nutzbar

Welcher ESP?
Und es gibt von anderen Herstellern noch  Mikrocontroller mit 
eingebautem Funkgedöns.

S. M. schrieb:
> z. B. indem der Empfänger nur einmal pro Stunde aktiviert wird.

Problem: du musst den Sender fast permanent angeschaltet lassen um 
garantiert Empfangsfenster der Empfänger zu treffen. Und selbst bei 
Empfangsfenster gibt es noch die Möglichkeit von Störungen.

mfg mf

: Bearbeitet durch User
von Ralf X. (ralf0815)


Lesenswert?

Ist doch praktisch:
Einfach Wecker stellen, um zur passenden Zeit das Licht ein- oder 
ausschalten zu können..😂

von Michael B. (laberkopp)


Lesenswert?

S. M. schrieb:
> Meine Idee wäre, einen kleinen AVR zu verwenden, der ein
> 433-MHz-Funkmodul steuert. Allerdings stellt sich die Frage, wie man die
> LED eingeschaltet lassen kann, während der Mikrocontroller im
> Schlafmodus ist.

Kein Problem, der Pin bleibt wie du ihn vor dem sleep geschaltet hast. 
Aber die LED wird so viel Strom fressen, dass der uC und Empfânger auch 
aktiv bleiben kann während sie leuchtet, wenn du deshalb auch nur die 
LED 10 min früher ausschalten kannst.

> Und wie würde man das "Moderner" machen? ein esp ist ja incl Speicher
> und Funk kleiner und kaum teurer als ein alter at mega8 mit 433 Funk.
> Der esp würde aber vermutlich den Akku auch im Deepsleep zu schnell
> aussaugen

WLAN ist total Kacke wenn du Strom sparen willst, Rechenleistung 
hingegen brauchst du zum ein/ausschalten nicht.

Die Idee, den (sowieso stromsparenden) 433MHz Empfänger abzuschalten in 
den Zeiten in denen sowieso nicht mit einem Empfang zu rechnen ist, ist 
klug, machen Profis (Funkwetterstationen) auch.
l

von Matthias S. (dachs)


Lesenswert?

S. M. schrieb:
> würde aber vermutlich

Um das zu klären, benutzen Techniker im Regelfall Hilfsmittel, meist 
physikalische Gesetze.

von Frank K. (fchk)


Lesenswert?

Für sowas gibts spezielle Fernbedienungs-ICs wie das hier:

https://www.hoperf.com/ic/rf_receiver/CMT2257AW.html

Das hat 4 Ausgänge für steuerbare Geräte und ein internes EEPROM für 
Empfangsparameter. Dafür gibts dann auch die passenden Sender-ICs.

fchk

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

S. M. schrieb:
> Allerdings stellt sich die Frage, wie man die LED eingeschaltet lassen
> kann, während der Mikrocontroller im Schlafmodus ist.

Wenn ein Mikrocontroller schläft bleiben seine I/O Pins in der Regel 
aktiv.

Die ESP8266 sind allerdings dafür ungünstig weil sie zum Aufwachen 
resetted werden.

: Bearbeitet durch User
von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Achim M. schrieb:
> Problem: du musst den Sender fast permanent angeschaltet lassen um
> garantiert Empfangsfenster der Empfänger zu treffen. Und selbst bei
> Empfangsfenster gibt es noch die Möglichkeit von Störungen.

das mit dem "Fenster treffen" ginge auch mit unterschiedlichem "duty 
cylce", z.B. so:

der Sender sendet im 18 Sekunden Rythmus den durchzuführenden Befehl

der Empfänger wacht alle 59 Minuten auf, und lauscht 1 Minute. Während 
dieser Wachphase sollten 3 Pakete empfangen worden sein. Sind mindestens 
2 Pakete identisch, wird dieses als Befehl ausgeführt, ansonsten der 
alte Zustand beibehalten.

Du hast damit eine aktive Phase von 1 zu 60 (1,7%), dein Empfänger 
schläft demnach 98,3% seiner Zeit.

Mit scharf Nachdenken ergibt sich, dass es keine Atomuhr benötigt, 
sondern nur eine mit "hinreichender Genauigkeit", damit das Wachfenster 
3 Pakete empfangen kann.

Will man mögliche Störungen schneller reagieren [=den neuen Zustand 
erreichen], dann muss man halt häufiger den Empfänger einschalten

: Bearbeitet durch User
von Achim M. (minifloat)


Lesenswert?

Wegstaben V. schrieb:
> Du hast damit eine aktive Phase von 1 zu 60 (1,7%), dein Empfänger
> schläft demnach 98,3% seiner Zeit.

Genau das meinte ich doch. 98,3% der in deinem Beispiel gesendeten 
Pakete sind für'n Schuh. Bei mehr als einem Empfänger wirds noch 
lustiger...

Wegstaben V. schrieb:
> Mit scharf Nachdenken ergibt sich, dass es keine Atomuhr benötigt,
> sondern nur eine mit "hinreichender Genauigkeit", damit das Wachfenster
> 3 Pakete empfangen kann.

Meine Frage ist, was macht der Empfänger bei keinem/schlechtem Empfang?

18ec Senderausfall/-Störung hat ggf. eine Reaktionszeit von effektiv 2h 
zur Folge. Das war so nicht gefordert.

Die Lösung dazu "Empfänger bleibt an, solange noch keine 3 Pakete 
empfangen wurden" wird bei Senderausfall zu schnell leeren Batterien der 
Empfänger führen.

Ich denke, dass das Konzept noch Verbesserungspotential aufweist. Mit 
scharf Nachdenken ;)

mfg mf

: Bearbeitet durch User
von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Distanz, Linkbudget? Die STM32WL33 haben ein "RF Wakeup", und können mit 
einem starken Funksignal (-50 dBm) aus einem sparsamen Sleep-Modus (4 
uA) geweckt werden. Und sie sind allgemein sehr stromsparend.

Modern wären die auch (anders als AVR):

S. M. schrieb:
> Und wie würde man das "Moderner" machen?

Die üblichen Tricks mit Send-Before-Listen und definierte 
Empfangsfenster ähnlich bei LoRaWAN helfen natürlich auch.

S. M. schrieb:
> Allerdings stellt sich die Frage, wie man die LED eingeschaltet lassen
> kann, während der Mikrocontroller im Schlafmodus ist.

Bei dem meisten Controllern bleiben die Pin-Zustände im Sleepmodus 
erhalten.

von J. S. (jojos)


Lesenswert?

Niklas G. schrieb
> Bei dem meisten Controllern bleiben die Pin-Zustände im Sleepmodus
> erhalten.

Z.B. die LPC schalten im Deep Power down auch die Push Pull Versorgung 
ab, sollte man also schon kontrollieren.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Achim M. schrieb:
> 18ec Senderausfall/-Störung hat ggf. eine Reaktionszeit von effektiv 2h
> zur Folge. Das war so nicht gefordert.

da pro Stunde ein Lausch-Fenster von 1 Minute vorliegt, in der 3 Pakete 
(für den spezifischen Empfänger) empfangen werden, wäre der Ausfall von 
EINEM Paket in 18 Sekunden unproblematisch. Wenn die Umgebung stärker 
(z.B. 1 Minute lang) gestört ist, nimmt man halt ein Empfangs-Intervall 
(Nicht-Lausch-Fenster) von 1/2 Stunde, oder zur Not von 1/4 Stunde. Dann 
würde ich aber gegebenenfalls über andere Konzepte nachdenken, wenn 
alles so arg gestört ist.

Der Sender sendet (adressiert) ja eh alle 18 Sekunden den spezifischen 
Empfänger. Und der Empfänger kann etwas länger sein "ohren offen" 
Fenster aktiv halten, sofern er ein ungültiges Paket empfing, bis er 
endlich ein zweites valides Paket mit selben Inhalt empfangen hat.

Um weiter Strom zu sparen, kann der Empfänger natürlich auch schon ab 
dem zweiten empfangenen "guten" Paket (bei der ursprünglichen 3er 
Sequenz) den Empfänger wieder zu machen. Da erwirtschaftet weitere 18 
Sekunden "Empfänger abgeschaltet"

> Meine Frage ist, was macht der Empfänger bei keinem/schlechtem Empfang?

Im einfachsten Fall verbleibt er "schweigend" im letzten ihm bekannten 
Zustand (an oder aus). Er könnte auch fröhlich nach seiner 
Empfangs-Auswertung 3 Sekunden mit Blinksignalen auf seine 
Empfangs-Befindlichkeiten hinweisen (z.B. lang an, kurz aus, dann neuer 
Zustand = Empfang ok, langsam Blinken = schlechter Empfang, schnell 
blinken = kein Empfang). Das hängt davon ab, ob das für die vorgesehene 
Anwendung tragbar ist

> 98,3% der in deinem Beispiel gesendeten Pakete sind für'n Schuh.

Ich bin optimistisch davon ausgegangen, das der Sender unbegrenzt 
Spannung zur Verfügung hat. wenn man mal "Elektrosmog" aussen vor läßt, 
ist es vermutlich egal, dass der größte Teil der Pakete nicht empfangen 
wird. Oder fallen dir andere Argumente ein, warum das problematisch sein 
könnte?

> Bei mehr als einem Empfänger wirds noch lustiger...

bei einem Sende-Intervall von 18 Sekunden, und (angenommener) Sendedauer 
pro Paket pro Empfänger von 0.1 Sekunden ergeben sich 180 Geräte, welche 
adressiert werden können. Vermutlich ausreichend.

: Bearbeitet durch User
von F. (radarange)


Lesenswert?

Ein paar Ideen wurden hier ja schon genannt.
Letztendlich ist die Anforderung aber blöd, es muss ein konkretes 
Energiebudget her. Am Ende braucht die LED noch so viel mehr Strom, dass 
Energiespartechniken bei der Funkanbindung tatsächlich wenig bringen.

Generell sollte der Empfänger natürlich die meiste Zeit ausgeschaltet 
sein und nur kurz zum Empfang aktiviert werden. Das beißt sich natürlich 
ein wenig mit der Idee, die LEDs adressierbar (wieviele?) zu machen, da 
dadurch in einer ersten Implementierung erst einmal die Nachrichten 
länger werden (wenn in jeder Nachricht der Zustand aller LEDs 
übermittelt wird). Man könnte das verbessern, indem die Empfänger 
aufgrund ihrer Adresse einen entsprechenden Zeitschlitz auswählen, 
während dessen sie "ihre" Nachricht empfangen, allerdings setzt das 
wieder eine global synchronisierte Uhr voraus, jetzt braucht also jeder 
Empfänger eine RTC o.Ä.
Mit steigender Komplexität der Anforderungen kann es sich daher lohnen, 
die Anforderungen zunächst zu überdenken und insbesondere genauer zu 
spezifizieren: Welches Energiebudget, welche Reaktionszeit, wieviele 
Knoten? Für einige Kombinationen gibt es nämlich bereits etablierte 
Lösungen, die sich dann einfach als Modul verwenden lassen.

von Harald A. (embedded)


Lesenswert?

Vlt. (aber auch nur vlt.) ist das Homematic-System für deinen Zweck 
anwendbar. Hier im Link ein fast fertiger Empfänger:
https://de.elv.com/p/elv-bausatz-homematic-ip-schaltplatine-fuer-batteriebetrieb-hmip-pcbs-bat-P150904/

Mit Hilfe einer alten Zentraleinheit CCU (bei Kleinanzeigen zuhauf) 
lassen sich Direktverknüpfungen erstellen, so dass die Komponenten 
fortan ohne Beteiligung der zentralen CCU funktionieren.

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Wegstaben V. schrieb:
> Während dieser Wachphase sollten 3 Pakete empfangen worden sein. Sind
> mindestens 2 Pakete identisch, wird dieses als Befehl ausgeführt,
> ansonsten der alte Zustand beibehalten.

Es gibt deutlich intelligentere und stromsparendere Strategien. Mit 
Prüfsummen lässt sich mit deutlich weniger Aufwand als mit 
Mehrfachempfang die Fehlerfreiheit eines Paketes verifizieren. Wenn 
zusätzlich noch eine fortlaufende Paketnummer verwendet wird, kann der 
Empfänger zusätzlich ableiten, wie es um seine Uhr in Relation zur Uhr 
des Senders steht.

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.