NRF24L01 empfängt nicht

Ich hatte dir in Post #11 zwei Links gepostet.
Warum baust du das nicht danach auf. So wird das sicher funktionieren.

Client:
id ist ein int und hat immer 1

byte thisSlaveAddress = 1;
byte slaveAddress = 0;
radio.begin();
  radio.setPALevel(RF24_PA_HIGH);
  radio.setDataRate( RF24_2MBPS );
  radio.setChannel(50);
  radio.setRetries(15, 15); // delay, count
  radio.openReadingPipe(1, id);
  radio.openWritingPipe(slaveAddress);
  radio.startListening()

Master:
Sendet an verschiedene Clients ein int zwischen 11 und 77

byte thisSlaveAddress = 0;
byte slaveAddress = 1;

  radio.begin();
  radio.setPALevel(RF24_PA_HIGH);
  radio.setDataRate( RF24_2MBPS );
  radio.setChannel(50);
  radio.setRetries(15, 15); // delay, count
  radio.openReadingPipe(1, thisSlaveAddress);
  radio.startListening();

so wird es im Programm aufgerufen:

radio.stopListening();
    dataToSend = erstefarbe + (zweitefarbe * 10);
      radio.openWritingPipe(random(1, AnzahlClients));
      send();
    radio.startListening();
void send() {

  bool rslt;
  rslt = radio.write( &dataToSend, sizeof(dataToSend) );

  Serial.print("Data Sent ");
  Serial.print(dataToSend);
  if (rslt) {
    Serial.println("  Acknowledge received");
  }
  else {
    Serial.println("  Tx failed");
  }
}

Ich hatte so viele Links, ich dachte, er wäre das... ich probiere es nochmal damit...

Ich hatte damit Probleme, wenn die WritingPipe Adresse des Senders, die gleiche Adresse wie die ReadingPipe0 des Empfängers hat.

Die Adressen sind bei mir aber anders aufgebaut.

uint8_t address[][6] = {"1Sens", "2Sens", "3Sens", "4Sens", "5Sens", "6Sens"};

Beim Sender wird folgende Writing Pipe geöffnet

radio.openWritingPipe(address[1]);        // Erstellt Sendekanal mit Addresse

Beim Empfänger lausche ich auf alle 6 Adressen

for(int i=0; i<6; i++){
  radio.openReadingPipe(i, address[i]);       // Erstellt Empfangskanal mit Nummer (0-5) mit Addresse
}

Wenn ich beim Sender die WritingPipe auf address[0] erstellt hatte, hatte ich auch Probleme mit dem ACK.

Aber schon ne Weile her. Aber da war was

dies hier ist für mich unverständlich:

uint8_t address[][6] = {"1Sens", "2Sens", "3Sens", "4Sens", "5Sens", "6Sens"};

uint8_t aber Strings?
Ich wollte weniger Speicher verwenden, deswegen nur bytes als adressen...

Die Writing Pipe ist doch ein Zufallswert zwischen 1 und anzahl der Clients. die Reading Pipe ist doch 0, es sollte also immer unterschiedlich sien.

Ich hätte jetzt bei mehreren Clients alle auf die adresse 0 schreiben lassen... ist das ein Fehler?

Ok, kein Problem. Dann noch mal den Tipp mit diesem Tutorial und da ab Post #3. Der hat bei mir sofort funktioniert.

Das ist absoluter Quatsch.

oh, das habe ich sogar genutzt...

ich habe nur die Adresse geändert:

const byte slaveAddress[5] = {'R','x','A','A','A'};

das brauchte ich gar nicht so aufwendig, deswegen einfach zu ein byte geändert.

Ich vermute eine nicht ausreichende Stromversorgung der NRFs.

Testweise kannst du die beiden NRFs ja mal mit 2 AA Batterien betreiben,
wenn das auch nicht funktioniert liegt der Fehler doch woanders.
GNDs wird dabei natürlich mit GND des Arduinos verbunden.

Warum ?
Du solltest den kompltten Sketch verwenden, so wie er vorgegeben ist, dann klappt das auch. Anschließend kannst du deine Änderungen einpflegen und immer testen.

Das mit der Stromversorgung ist ein wichtiger Hinweis von @Whandall

Hi, das mit der Stromversorgung werde ich mal weiter untersuchen... ich habe ja schon Kondensatoren hinzugefügt, aber wenn es insgesamt unter Last zu wenig Spannung gibt, kann es echt sein.

habe grade mal statt den USB Ports ein Steckernetzteil genommen und in einer Konstellation ging gar nichts mehr...

Also werde ich mal eine ordentliche Spannungsversorgung nutzen und berichten.

Zu einer guten, stabilen Spannungsversorgung zählt auch ein guter Kondensator.
Tantal Elkos sind da die bessere Wahl, oder noch besser keramische Kondensatoren.
Ich verwende meist 47yF keramisch plus einem 47yF Tantal. Das bei 3,3Volt mit einem LM1117 3,3V.
Da klappt das immer. Die 3,3V aus einem Arduino reichen da nicht.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.