Forum: HF, Funk und Felder Funkknöpfe mit NRF24L01+


von somebody s. (rubo)


Lesenswert?

Hallo,

ich möchte an meinen Arduino gerne sechs Funkknöpfe (Buzzer) mittels 
NRF24L01+ Modulen anbinden. Dh am Arduino hängt ein Modul und jeweils 
eines an den Buzzern. Wenn jetzt einer gedrückt wird, muss ich wissen 
welcher es war.

Dafür gibt es ja zwei Varianten:
A: Jeder Buzzer bekommt eine eigene Adresse und das Hauptmodul lauscht 
auf allen Adressen und wartet auf einen Drücker.

B: Alle Buzzer haben die gleiche Adresse und senden beim Drücken einen 
bestimmten Code mit, um den Buzzer zu identifizieren.

Erste Frage: Welche Lösung wäre zuverlässiger und weniger 
störungsanfällig?

Zweite Frage: Gibt es dafür vielleicht schon Code Samples oder 
Tutorials? Die meisten Anleitungen beziehen sich auf das verbinden von 
mehreren Arduino Controllern.


Danke vielmals!

von René K. (cyprius)


Lesenswert?

Hast du dir mal das Datenblatt angesehen? Der NRF kann auf bis zu 6 
Adressen lauschen. Alternativ definierst du einfach eine 
Broadcast-Adresse und sendest im Paket den Absender mit dazu. Es gibt 
sogar eine Collision Detection/automatischer Ack mit selbstständigem 
Retry in konfigurierbaren Abständen.

Guck doch bitte einfach mal ins Datenblatt, der NRF ist so simpel zu 
programmieren, wenn man die Konfiguration zusammen hat läuft der Rest 
schon fast mit Autopilot.

von somebody s. (rubo)


Lesenswert?

Danke für die schnelle Antwort.

Ja, diese Funktion ist mir bekannt und ist ja auch die Lösungsvariante 
A. Meine Frage ist halt, ob man abschätzen kann, welche Lösung 
zuverlässiger ist und weniger Probleme beim fast gleichzeitigen Drücken 
von zwei Buzzern macht.

Ich werde mir das Datenblatt nochmal genau ansehen. In den ganzen 
Anleitungen geht es aber immer um mehrere Arduinos und ich war da 
einfach ein wenig unsicher und wollte fragen, ob es dafür einen Sample 
Code gibt...

von René K. (cyprius)


Lesenswert?

Die Möglichkeit einer Kollision ist ja bei beiden Lösungen gegeben, wird 
aber durch das automatische Ack/Retransmit abgefangen. Welche Adressen 
da letztendlich benutzt werden ist egal.

von somebody s. (rubo)


Lesenswert?

ok, dann würde ich die lösung mit der gleichen adresse für alles und dem 
senden eines eindeutigen codes bevorzugen.

andere frage zur programmierung: bei den funkknöpfen ist ja dann nur der 
funkchip verbaut, mit dem buzzer und einer batterie. das heißt ich muss 
vorher in das modul eine fixe adresse, einen sendecode und eventuelle 
einstellungen zur collision detection festlegen.

würde das so hinhauen und merkt der chip sich auch alle einträge, wenn 
mal der strom verloren geht?

von René K. (cyprius)


Lesenswert?

Ganz so einfach ist es nicht, das Modul kann nicht autark laufen. Du 
brauchst schon einen kleinen Mikrocontroller, der das steuert. Spontan 
würde mir da die Größenordnung Attiny24 einfallen, da hast du dann auch 
noch was Platz für Taster/Led.

Die Adresse kannst du dann direkt im Flash hinterlegen oder ins Eeprom 
schreiben.

von somebody s. (rubo)


Lesenswert?

verstehe verstehe. da lag wohl ein denkfehler meinerseits vor. der 
attiny24 wär sicher auch noch im budget drinnen :)

hätte da aber noch eine andere frage. bei unserem projekt sind die 
buzzer jetzt über kabel angeschlossen. bei einem drücker, wird am 
entsprechenden pin das potential angehoben, wobei der arduino darauf 
reagiert und ein entsprechendes signal an den angeschlossenen pc 
weitergibt.

jetzt ist die frage, wie man beide varianten kombinieren kann, damit man 
im notfall auf kabellösung zurückgreifen kann.

was wäre, wenn man am hauptempfänger noch einen mikrocontroller verbaut, 
der sich um die funkkommunikation und adresszuteilung kümmert (eventuell 
auch ein attiny24). wäre es dann technisch (ohne großen aufwand) 
möglich, dass man dann auch hier das potential des entsprechenden pins 
anhebt und quasi einen drücker der kabellösung simuliert?

kann jetzt sein, dass ich viel zu kompliziert denke, aber so könnte man 
theoretisch beide varianten parallel fahren...

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.