Forum: Mikrocontroller und Digitale Elektronik nrf24l01+ Master mit mehreren Slavs


von Matthias S. (mat-sche)


Lesenswert?

Liebes Forum,

viel lesen und doch nicht die richtigen Antworten gefunden...
Drum nun um Bitte hier im Forum!

Ich kenne natürlich:
[[https://www.mikrocontroller.net/articles/NRF24L01_Tutorial]]

bin aber noch nicht richtig durch die Funktionen vom nrf durchgestiegen.

Zur Zeit nutze ich einen rfm12 für meine Funkübertragung und möchte auf 
den nrf24l01+ umsteigen.
Vorher hat der rfm-Master Daten per Funk ausgegeben und alles haben auf 
die Sendung gehört und lt. Datenprotokoll darauf reagiert.

Kann ich dies auch mit einem nrf so umsetzen?

Soweit ich meine Testschaltung und Code im Betrieb habe, ist die 
Funkverbindung meiner 2 nrf's eine Punkt zu Punkt Übertragung per 
Adressierung.
Der nrf hat nun sogenannte Pipes, 6 Stück. Wie können diese benutzt 
werden?
Kann ich z.Bsp. unter Pipe0 meherer Adressen vergeben?
Also ein Master sendet Slave 1 mit Adresse 1 seine Daten und dann Slave 
2 mit Adresse 2 andere Daten?

Und ja ich kenne das DB, stell mich nur etwas schwer damit an ;)

Vielen Dank schon einmal im Voraus!
MAT

von Einer K. (Gast)


Lesenswert?

Matthias S. schrieb:
> Soweit ich meine Testschaltung und Code im Betrieb habe, ist die
> Funkverbindung meiner 2 nrf's eine Punkt zu Punkt Übertragung per
> Adressierung.
So ist es der Normalfall.
Damit das eingebaute Acknowledge Verfahren seinen Zweck erfüllt, gibts 
da auch keine Wahl.

Dieses sind Arduino Libs: https://github.com/nRF24
Die dort verwendeten Verfahren tun genau das, was du benötigst.
Auch wenn du die Libs selber evtl. nicht verwenden kannst, finden sich 
dort wichtige, stabile, Konzepte, wo du dir sicherlich was von abschauen 
kannst.
z.B. das Thema Adressierung: http://tmrh20.github.io/RF24Network/

von Matthias S. (mat-sche)


Lesenswert?

Hi Fanboy D.

danke für den Link, mal schauen wie ich mir diesen zu Nutze machen kann, 
ich progge in Bascom ;)

Aber Grundsätzlich würde mich schon interessieren wie der nrf mit all 
seinen Möglichkeiten funktioniert....

Arduino Fanboy D. schrieb:
> So ist es der Normalfall.
> Damit das eingebaute Acknowledge Verfahren seinen Zweck erfüllt, gibts
> da auch keine Wahl.

Das konnte ich mir denken, ist ja auch gut so, ebenfalls die shockburst 
Funktion.

Nur wie funktioniert die Multiceiver Funktion???

:)

von Lutz (Gast)


Angehängte Dateien:

Lesenswert?

Ich finde, Figure 14 erklärt es ganz gut. Besonders die jeweiligen 
Adresseinstellungen.

von NRF Tester (Gast)


Lesenswert?

Matthias S. schrieb:
> danke für den Link, mal schauen wie ich mir diesen zu Nutze machen kann,
> ich progge in Bascom ;)

Man kann den NRF24 auch in Bascom "Betreiben". Nur Spass macht
es eben nicht.

Man braucht ja "nur" existierende Sourcen in Bascom übertragen.
Aber die Arbeit würde ich lieber darin investieren C zu lernen.

von NRF Tester (Gast)


Lesenswert?

Gibt scheinbar Leute die haben schon was mit dem NRF24
in Bascom gemacht.

https://bascomforum.de/index.php?thread/159-nrf24l01-mit-ack-payload/

von Matthias S. (mat-sche)


Lesenswert?

Lutz schrieb:
> Ich finde, Figure 14 erklärt es ganz gut. Besonders die jeweiligen
> Adresseinstellungen.

Das heißt also immer nur eine Adresse per Pipe?

NRF Tester schrieb:
> Man kann den NRF24 auch in Bascom "Betreiben". Nur Spass macht
> es eben nicht.

Na ich sehe nicht so, ist eine Grundsatzdiskussion.

NRF Tester schrieb:
> Man braucht ja "nur" existierende Sourcen in Bascom übertragen.
> Aber die Arbeit würde ich lieber darin investieren C zu lernen.

Das werde ich mir anschauen.

NRF Tester schrieb:
> Gibt scheinbar Leute die haben schon was mit dem NRF24
> in Bascom gemacht.

Jup, schon gegoogelt und angewendet :) und erfolgreich umgesetzt!

Bei mir geht es um die Grundfunktion, wie kann ich von einem Master zu 
mehreren Slavs senden und diese direkt ansprechen? Das kann ich dann in 
Bascom umsetzen.

Arduino Fanboy D. schrieb:
> z.B. das Thema Adressierung: http://tmrh20.github.io/RF24Network/

genau wie so:
[http://tmrh20.github.io/RF24Network/Tuning.html]

..... und dann habe ich mir es durchgelesen...

Ein Master kann nur max. 6 Slave auf einer Frequenz bedienen, Mist....

von NRF Tester (Gast)


Lesenswert?

Matthias S. schrieb:
> Ein Master kann nur max. 6 Slave auf einer Frequenz bedienen, Mist....

Im Prinzip: Nein.

Man kann ja in sein eigenes Datenpaket eine Adressierung einbauen
und damit eine Pipe-Adresse für mehrere Emfänger "meinen".

Das ergibt erhöhten Verwaltungsaufwand und mehr Rechenzeit, aber
ist wohl machbar.

von NRF Tester (Gast)


Lesenswert?

Matthias S. schrieb:
> Bei mir geht es um die Grundfunktion, wie kann ich von einem Master zu
> mehreren Slavs senden und diese direkt ansprechen?

Also mehrere Slaves bekommen über die gleiche Pipe-Adresse
ihre Daten mit unterschiedlichem Adress-Inhalt im Datensatz.
Die Slaves werten den Adress-Inhalt im Datensatz aus und
reagieren nur auf der ihr zugeteilten Adresse.

Dabei muss das Auto-ACK ausgeschaltet werden sonst kommen
mehrere ACKs von verschiedenen Slaves auf den Master zurück
was einen Datensalat (Kollisionen) ergibt. Der jeweilige
angesprochene, adressierte Slave muss sich alleine ohne
Auto-ACK zurückmelden was ja protokolltechnisch auch sinnvoll
ist.

von Matthias S. (mat-sche)


Lesenswert?

NRF Tester schrieb:
> Dabei muss das Auto-ACK ausgeschaltet werden sonst kommen
> mehrere ACKs von verschiedenen Slaves auf den Master zurück
> was einen Datensalat (Kollisionen) ergibt. Der jeweilige
> angesprochene, adressierte Slave muss sich alleine ohne
> Auto-ACK zurückmelden was ja protokolltechnisch auch sinnvoll
> ist.

Hi Tester,

Danke für Deinen Gedankenanstoß! Ja wenn man das autm. Datenhandling, 
also ACK, vom NRF abschaltet, könnte ich diesen genauso nutzen wie meine 
jetzigen rfm's. Doch wollt ich diese Future gern nutzen, macht die 
Datenübertragung sicherer und ich muss mich nicht um das wiederholte 
Senden bei fehlenden ACK kümmern.

Eine andere Idee wäre doch, den Master kontinuierlich in bestimmten 
festgelegten Sendefrequenzen durchzuspringen und dort auf Daten der 
Slavs zu hören? Oder?

Thank's MAT

von NRF Tester (Gast)


Lesenswert?

Matthias S. schrieb:
> macht die
> Datenübertragung sicherer und ich muss mich nicht um das wiederholte
> Senden bei fehlenden ACK kümmern.

Das Auto-ACK ist zwar schön, entbindet dich aber nicht von
der Fehlerüberprüfung wenn du ganz sicher gehen willst. Denn
die Retries des Masters bezüglich ACK sind auf 15 begrenzt,
also auch da kann die Datenübertragung schiefgehen wenn du
erst mal 35 Sendeversuche brauchst.

Matthias S. schrieb:
> Eine andere Idee wäre doch, den Master kontinuierlich in bestimmten
> festgelegten Sendefrequenzen durchzuspringen und dort auf Daten der
> Slavs zu hören? Oder?

Kann man machen, klar.

Mit "kontinuierlich" meinst du vermutlich "zyklisch".

von Matthias S. (mat-sche)


Lesenswert?

NRF Tester schrieb:
> Mit "kontinuierlich" meinst du vermutlich "zyklisch".

Jup, deutsche Sprache, schwierige Sprache :)

NRF Tester schrieb:
> Das Auto-ACK ist zwar schön, entbindet dich aber nicht von
> der Fehlerüberprüfung wenn du ganz sicher gehen willst. Denn
> die Retries des Masters bezüglich ACK sind auf 15 begrenzt,
> also auch da kann die Datenübertragung schiefgehen wenn du
> erst mal 35 Sendeversuche brauchst.

mhhhh, das wäre mein 2. Problem. :( Aber im Moment ist es nicht so 
Datenwichtig, fehlende Pakete zu haben. (geht halt das Rollo nicht zu, 
gibt ja noch einen Taster :) )

DAnn werde ich mich mal ans probieren machen.... Würd bei Bascom bleiben 
da meine Zeit für etwas neues lernen nicht reicht und noch zu viele 
Projekte gibt, mit dem ich in Bascom auch weiter komme. Die fertigen 
Bibliotheken in C oder Arduino sind schon schönnnnnnn.
Danke und Gruß!

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.