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!
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.
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...
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.
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.