NRF24L01 2 Wege Kommunikation

Moin Leutz,

ich habe da noch mal ein Problem die Suchfunktion hat mir da nicht so helfen können.

Also mein Problem ist wie folgt ich habe 4 Arduino Nanos die miteinander kommunizieren sollen. Aufgegliedert wie folgt(momentaner Stand):

Arduino 1: Geschwindigkeitsmessung sendet nur an arduino 2
Arduino 2: Wertet die Messung von Arduino 1 aus und gibt es an einem Display aus
Arduino 3: Geschwindigkeitsmessung sendet nur an arduino 4
Arduino 4: Wertet die Messung von Arduino 3 aus und gibt es an einem Display aus

Das Funktioniert auch ohne Probleme. So nun möchte ich gerne das Arduino 2 bei einem Tastendruck eine Nachricht an Arduino 4 sendet und Arduino 4 bei einem Tastendruck an Arduino 2. Weder Arduino 1 und arduino 3 sollen was davon mitbekommen aber dennoch ihre werte aktualisieren. Was ich noch dazu sagen sollte das dieser Tastendruck eher selten eintreffen wird.

Könnt ihr mir helfen wie man das realisiert ?

Danke schon ein mal im Vorhinein

Mitee:
Könnt ihr mir helfen wie man das realisiert ?

In so einem Fall fange ich immer damit an, einen Programmablaufplan zu kritzeln. Für mich ist das immer die Methode, die mir die nötige Klarheit verschafft. Dass ich das tun muss, kommt zwar nur sehr selten vor, aber auf die Art habe ich schon die dämlichsten Programmier-Denkknoten entwirrt.

Gruß

Gregor

Was verstehst du darunter "mitbekommen" ?
Da vermutlich alle Transceiver auf der selben Frequenz arbeiten, werden die was mitbekommen.
Du kannst dann nur im Sketch den Empfang bzw. eine Auswertung verhindern.
Das kannst du lösen, indem du beim Senden einen Wert mitsendest, an dem der Empfänger erkennt, dass er gemeint ist.

Und du musst natürlich verhindern, das die Sendesignale sich in die quere kommen.
Also immer nur einer zur Zeit sendet.

Diee simpelste Methode ist den gleichen Channel wie die Melder zu benutzen,
das sollte dann natürlich an der Nachricht für das Ziel erkennbar sein.

Also stopListening, send, startListening. Die Pipe zum Schreiben kannst du einmal in setup öffnen.

Wie man Tasten auswertet, muss man dir nicht erzählen, oder?

Arduino 1: Geschwindigkeitsmessung sendet nur an arduino 2
Arduino 2: Wertet die Messung von Arduino 1 aus und gibt es an einem Display aus
Arduino 3: Geschwindigkeitsmessung sendet nur an arduino 4
Arduino 4: Wertet die Messung von Arduino 3 aus und gibt es an einem Display aus

4 Adressen kann man doch noch locker auflösen, der nRF hat mehr Buffer.

Wenn sie räumlich nahe beieinander sind, kein Problem.
Ein Mesh mit den nRF24L01+ ist da noch deutlich flexibler

Es gibt genug Beispiele....

Ja das mit dem Taster weis ich Danke. Mesh sagt mir jetzt so nichts aber ich gucke mal danach. Also mit mitbekommen meine ich sie nicht auswerten ja.

Also nicht direkt also 1-2 haben eine Adresse
Und 3-4 haben eine andere Adresse

Am liebsten wäre mir das 2-3 auch eine separate Adresse bekommen

Mitee:
Also nicht direkt also 1-2 haben eine Adresse
Und 3-4 haben eine andere Adresse

Am liebsten wäre mir das 2-3 auch eine separate Adresse bekommen

Das ergibt für mich keinen Sinn.

Meine Strategie wäre:

  • alle Knoten haben sowieso eine eigene Adresse
  • auf dieser sie lauschen wenn sie gerade nichts zu senden haben (mit Ack)
  • wer senden will, hört auf zu lauschen und sendet an den gewünschten Empfänger der die Nachricht quittiert
  • danach lauscht er wieder auf seinen KanälenWenn man noch Kanäle haben will auf die alle Knoten lauschen,
    kann man die zusätzlich öffnen und entsprechend konfigurieren (ohne Ack).

Naja warum arduino 1 und 3 hören nicht zu die senden nur und das stätig arduino 2 und 4 sollen kurzzeitig mal aufhören zuzuhören und dann wo anders hin senden

Mitee:
Naja warum arduino 1 und 3 hören nicht zu die senden nur und das stätig

Wer ständig sendet blockiert das Medium (und hat auch in der Regel nichts Neues zu berichten).

Mitee:
arduino 2 und 4 sollen kurzzeitig mal aufhören zuzuhören und dann wo anders hin senden

Mehr als sagen wie man das macht, kann ich kaum, deinen Kode werde ich nicht schreiben.

Whandall:
Die simpelste Methode ist den gleichen Channel wie die Melder zu benutzen,
das sollte dann natürlich an der Nachricht für das Ziel erkennbar sein.

Also stopListening, send, startListening. Die Pipe zum Schreiben kannst du einmal in setup öffnen.

Mitee:
Naja warum arduino 1 und 3 hören nicht zu die senden nur und das stätig arduino 2 und 4 sollen kurzzeitig mal aufhören zuzuhören und dann wo anders hin senden

Und damit machst du dir selbst das Problem.
Das hat Whandall dir ja schon deutlich mitgeteilt.