Forum: Mikrocontroller und Digitale Elektronik RFM12B + Attiny48 - LED- Modul- Synchronsiation basierend auf Kuramoto Model


von Benedict P. (benni345)



Lesenswert?

Guten Abend,

und zwar bin ich auf folgendes Projekt gestoßen:

http://1000fireflies.net/

Dort werden kleine LED- Module mit einem RFM12B Transreceiver 
ausgestattet.
Diese LED- Module synchronisieren sich dann miteinander was dazu führt, 
dass alle LED- Module gleichzeitg blinken. -->  Keine Differenzen


Folgender Effekt wird damit erzielt:

http://www.youtube.com/watch?v=gD2oNWE0ev0


Da ich das Projekt sehr interessant finde, habe ich mir überlegt das 
nachzubauen um dann die Logik dahinter zu verstehen.

Auf der Projektseite habe ich ein paar Bilder gefunden, die im Anhang zu 
sehen sind.

Unter dem Bild mit den beiden roten LEDs ist wie folgt kommentiert:

Two ATtiny84a prototypes. The range is quite good: they synchronize from 
across my house, even though one doesn’t have an antenna connected. One 
has a switch connected, which toggles sleep mode on the device.


Ein weiteres Video zeigt das:

https://www.youtube.com/watch?feature=player_embedded&v=gPn6FDB1UCs

Nun habe ich mir zwei Attiny 84 und zwei RFM12B Module bestellt und 
möchte das genau so nachbauen.

Nun stellt sich mir die Frage, wie ich softwareseitig den Code schreiben 
muss.

Ich würde den attiny 84 mit einem Arduino Uno R3  Board und der Arduino 
Software- Entwicklungs- Umgebung programmieren können.

In dem einen Übersichtsschema sehe ich "AVR_SPI_PGR_6". Ich benötige 
diese ja nicht, da ich über den Arduino Uno meinen Attiny programmiere 
oder?

Der Ablauf für die Synchronisation wäre doch wie folg:

1. Modul 1 anschalten
2. Modul 1 baut eine Funkverbindung auf und sendet Synchronisationsbits
3. Modul 2 anschalten
4. Modul 2 baut ebenfalls eine Funkverbindung mit Synchronisationsbits 
auf
5. Sobald eines der Module eine Zeichenfolge des jeweils anderen Moduls 
erhält, muss diese erkannt werden und ein Status definiert werden.
6. Jenachdem wie gerade der Status ist, wird ein Ausgang an dem die LED 
hängt, mit high oder low Pegel versorgt. Sie leuchtet eben oder eben 
nicht. Dazwischen ein Ein- Sekunden delay, für den Blink- Effekt.


Und genau beim Punkt 5 würde ich nicht wissen wie ich das realisiere.

Passt mein denk Ansatz soweit?


Ich bedanke mich schon mal für die Hilfe.

greeZ

von Bene345 (Gast)


Lesenswert?

Keiner eine Idee dazu?

von Helmut H. (helmuth)


Lesenswert?


von Karl H. (kbuchegg)


Lesenswert?

Bene345 schrieb:
> Keiner eine Idee dazu?


> 5. Sobald eines der Module eine Zeichenfolge des jeweils anderen
> Moduls erhält, muss diese erkannt werden und ein Status definiert
> werden.
> 6. Jenachdem wie gerade der Status ist, wird ein Ausgang an dem die
> LED hängt, mit high oder low Pegel versorgt. Sie leuchtet eben oder
> eben nicht. Dazwischen ein Ein- Sekunden delay, für den Blink- Effekt.

Du hast überhaupt nicht verstanden, worum es bei diesem Effekt überhaupt 
geht.

Wenn ein Modul die Führung hat und 'Kommandos' an das andere abgibt, 
dann braucht es diesen Mechanismus gar nicht. Das eine Modul schickt 
einfach nur Befehle raus "LED ein", "LED aus" und alle anderen machen 
mit. Voila - alle blinken im selben Takt.

Aber genau darum geht es nicht.

Es geht darum, dass jedes Modul aussendet: "Ich schalte jetzt ein" bzw. 
"Ich schalte jetzt aus". Jeder Empfänger empfängt dies und vergleicht 
mit seinem eigenen Zyklus. Hat der Sender die LED bereits eingeschaltet, 
ich aber noch nicht, dann wird die Pause bis zum einschalten ein wenig 
verkürzt. Selbiges beim Ausschalten. Bin ich aber (als Empfänger) etwas 
zu früh drann, und hab meine LED bereits eingeschaltet, der Sender aber 
noch nicht, dann verzögere ich das nächste einschalten ein wenig. Jeder 
einzelne Empfänger versucht einfach nur, seinen eigenen Zyklus soweit zu 
verschieben, dass er sich an das anpasst, was er über seine Sensorik 
empfängt. Nicht in großen Schritten anpasst, sondern in kleinen 
Schritten. 'Ich bin zu spät? ok, dann beim nächsten mal eben ein bischen 
früher. Huhu, wenn auch immer es interessiert, ich habe genau jetzt 
eingeschaltet'. Indem sich jedes einzelne Individuum versucht, ein 
bischen an das anzupassen was die ganze Gruppe tut, entsteht 
Synchronisation sodass alle letzten Endes am gleichen Strang ziehen. Und 
zwar selbst dann, wenn die ganze Gruppe in einem völlig wahllos 
chaotischem Zustand anfängt.

Auf die Art schaffen es dann Glühwürmchen auf einem Strauch ihr Geblinke 
zu synchronisieren, obwohl es keinen Dirigenten gibt, der einen 
gemeinsamen Blinktakt vorgeben würde.
Das ist das Besondere an der Sache. Mit einem 'Status' hat das alles 
überhaupt nichts zu tun.

: Bearbeitet durch User
von Benni345 (Gast)


Lesenswert?

Hallo ihr beiden,


danke für den Link zu den Sourcen @Helmut H.


Genau aus diesem Grund habe ich hier im Forum gepostet, damit ich das 
Prinzip dahinter verstehe und nicht nur das alles fertig nachbaue, ohne 
zu wissen, was passiert.


Danke auch für die ausführliche Erklärung Karl Heinz, nun wird mir 
einiges klarer.


Ich werde mich mal hinhocken und da ein bisschen herumexperimentieren.

Später soll dieser Effekt bei mir im Modellbau und bei meinem eigenen 
Fahrrad Platz finden.

Ergebnisse poste ich dann hier auch rein (:

greeZ

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.