Forum: Mikrocontroller und Digitale Elektronik Ad-hoc-Netzwerk mit nRF24L01+?


von Sebastian W. (wangnick)


Lesenswert?

Liebe Leute,

ich möchte ein masterloses nRF24L01+ Funknetzwerk zwischen mehreren 
Knoten aufspannen. Ich brauche auf Anwendungsebene eigentlich nur 
unsichere any-to-every Kommunikation. Es können sich aber nicht 
unbedingt alle Knoten gegenseitig erreichen so dass die Zwischenknoten 
weiterleiten müssen. Und das Netz muss insofern dynamisch sein als dass 
Knoten beliebig ein- und ausgeschaltet und eventuell auch bewegt werden.

Gibt es so etwas schon? Quellcode vielleicht sogar? Ich habe mal ganz 
blauäugig mit der Programmierung angefangen und stelle fest dass so 
etwas nicht so ganz trivial ist ... :)

LG, Sebastian

von Harry L. (mysth)


Lesenswert?

Ja, offenbar hat sich daran schon mal jemand versucht:
https://github.com/nRF24/RF24Mesh

von Sebastian W. (wangnick)


Lesenswert?

Harry L. schrieb:
> Ja, offenbar hat sich daran schon mal jemand versucht:
> https://github.com/nRF24/RF24Mesh

Mmh. Ich bin wegen "The 'master' node keeps track of the unique nodeIDs 
and the assigned RF24Network addresses." davon ausgegangen dass 
https://github.com/nRF24/RF24Mesh nicht masterlos arbeitet. Irre ich 
mich? In meinem Fall kann eben jeder Knoten, auch ein hypothethischer 
Master-Knoten, beliebig aus- und eingeschaltet werden kann, und dass 
Restnetz soll trotzdem weiter funktionieren.

Hintergrund ist die Ideensammlung für ein (noch recht wenig 
ausgegorenes) Kunstprojekt mit mehreren sich synchronisierenden 
Leuchtkörpern.

LG, Sebastian

von Harry L. (mysth)


Lesenswert?

Sebastian W. schrieb:
> In meinem Fall kann eben jeder Knoten, auch ein hypothethischer
> Master-Knoten, beliebig aus- und eingeschaltet werden kann, und dass
> Restnetz soll trotzdem weiter funktionieren.

Du brauchst einen Master-Node, der immer läuft, wobei es aber ausreicht, 
wenn der Master min. einen deiner anderen Nodes erreichen kann.

von Sebastian W. (wangnick)


Lesenswert?

Harry L. schrieb:
> Du brauchst einen Master-Node, der immer läuft, wobei es aber ausreicht,
> wenn der Master min. einen deiner anderen Nodes erreichen kann.

Ja, dann ist https://github.com/nRF24/RF24Mesh für mich ungeeignet.

Irgendein anderer Vorschlag? Für any-to-every reicht vielleicht schon 
ein simples Fluten des Netzwerks?

LG, Sebastian

: Bearbeitet durch User
von Εrnst B. (ernst)


Lesenswert?

Sebastian W. schrieb:
> Irgendein anderer Vorschlag? Für any-to-every reicht vielleicht schon
> ein simples Fluten des Netzwerks?

Problem: Die Knoten dazwischen müssen ja wissen, ob sie das Paket 
weiterschicken müssen oder nicht, auch wenn sie Original-Sender oder 
Empfänger nicht in Reichweite haben.

NRF24Mesh packt die Knoten in eine Baum-Struktur, aus der jeweiligen 
Ziel-Knotenadresse ist da immer klar, über welche Hops der zu erreichen 
ist.

Das ginge bei deinem Master-Losen Mesh nicht so einfach, wenn du da 
nicht aufpasst, spielen die Nodes Ping-Pong und schicken dasselbe Paket 
immer im Kreis...

Hängt jetzt von den Anforderungen ab, die du an das Netzwerk hast:

Wenn es egal ist, ob da ab und zu Sensordaten verloren gehen, ohne dass 
der Sender (oder irgendjemand anderes) darüber informiert wird:

- Jeder Knoten sendet (broadcast) wie er lustig ist, Paket enthält einen 
"TTL"-Counter und eine möglichst eindeutige ID. Diese ID in einen 
"bekannt"-Cache einfügen.

- Jedes empfangene Paket wird weitergeleitet (TTL--), außer ID ist 
"bekannt" oder TTL-Zähler abgelaufen. ID von empfangenen Paketen 
ebenfalls in den "bekannt"-Cache einfügen.

- Vor dem Weiterleiten: delay(random())... sonst empfangen X Knoten ein 
Paket und wollen es alle gleichzeitig wieder raussenden...

: Bearbeitet durch User
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.