nRF24l01 empfängt Daten nicht

Hallo zusammen
Ich habe ein Problem beim Empfangen von Daten mit dem nRF24l01 Kommunikationsmodul.
Das Ziel ist die Daten eines Temperatursensor mit einem nRF24l01 an ein zweites nRF24l01 zu senden um es dann anzuzeigen, vorerst auf dem Seriellen Monitor, dann auf einem 7-Segment-Display. Ich verwende zwei Arduino Unos, der Sendende soll dann durch einen ATTiny84 ersetzt werden.
Ich denke, dass ich irgendwo im Code einen Fehler haben muss, da die Ausgaben auf dem Seriellen Monitor gleich sind, wenn ich die beiden Kommunikationsmodule wechsle und ich annehme, dass die Chance, dass beide nicht empfangen können aber senden können sehr klein ist.

Dies ist der Code für das Sendende Modul (TX):

#include <OneWire.h>
#include <DallasTemperature.h>
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

#define CE_PIN   7
#define CSN_PIN 8

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

RF24 radio(CE_PIN, CSN_PIN); // Create a Radio

#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);



void setup() {

  Serial.begin(9600);
  Serial.println("SimpleTx Starting");
  sensors.begin();
  sensors.setResolution(9);
  // Setup and configure rf radio
  radio.begin();
  radio.setDataRate( RF24_250KBPS );
  radio.setRetries(3, 5); // delay, count
  radio.openWritingPipe(slaveAddress);
}

void loop() {
  sensors.requestTemperaturesByIndex(0);
  tempout = sensors.getTempCByIndex(0);
  bool rslt;
  rslt =  radio.write( &tempout, sizeof(tempout) );
  if (rslt) {
    Serial.println("  Acknowledge received");
    // so you can see that new data is being sent
    Serial.print(tempout);
}
}

Mit diesem Code bekomme ich folgende Ausgabe auf dem Serial Monitor:

24.87  Acknowledge received
24.87  Acknowledge received
24.87  Acknowledge received
24.87  Acknowledge received
24.87  Acknowledge received
24.87  Acknowledge received
24.87  Acknowledge received
24.87  Acknowledge received
24.87  Acknowledge received
24.87  Acknowledge received
24.87  Acknowledge received
24.87  Acknowledge received
24.87  Acknowledge received
24.87  Acknowledge received
24.87  Acknowledge received
24.87  Acknowledge received
24.87  Acknowledge received
24.87  Acknowledge received
24.87  Acknowledge received
24.87  Acknowledge received

Zum Empfangen habe ich folgenden Code:

//Kommunikation
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

#define CE_PIN   7
#define CSN_PIN 8

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

RF24 radio(CE_PIN, CSN_PIN);

float tempout; // this must match dataToSend in the TX
bool newData = false;



void setup () {

 //Kommunikation starten
  radio.begin();
  radio.setDataRate( RF24_250KBPS );
  radio.openReadingPipe(1, thisSlaveAddress);
  radio.startListening();

  Serial.begin(9600);
}




void loop () {

if ( radio.available() ) {
    radio.read( &tempout, sizeof(tempout) );
    newData = true;
  }
  if (newData == true) {
    Serial.print("Data received ");
    Serial.println(tempout);
    newData = false;
  }

}

Dargestellt auf dem Serial Monitor kommt das:

0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00
0.00Data received 0.00

Also wird mir eigentlich mitgeteilt, dass ich Daten empfangen habe, aber diese Daten sind irgendwie verloren gegangen.

Kennt jemand dieses Problem?
Kann mir dabei jemand helfen?

Vielen Dank
techniclover

Leider kann ich dir bei diesem Problem nicht direkt helfen, da ich diese Module nicht kenne.
Aber warum setzt du nicht einfache 433 MHz Sender und Empfänger zur Übertragung von Sensordaten ein.
Diese haben sich dafür bewährt, wenn du nicht gerade die ganz billigen Empfänger dafür verwendest.

Danke für deinen Tipp. Allerdings möchte ich trotzdem gerne wissen was das Problem ist. Ich mag keine halben Sachen.

techniclover:
Danke für deinen Tipp. Allerdings möchte ich trotzdem gerne wissen was das Problem ist. Ich mag keine halben Sachen.

Kann ich verstehen.
Allerdings ist die verwendete Library schon 5 Jahre alt, evtl. ist da das Problem.
Oder du wartest noch, bis jemand die Lösung parat hat.

Bist du denn sicher, dass deine Werte auch gesendet weren ?
Also, ob der Sender diese auch tatsächlich raussendet.

Dazu sollte man auch einen Empfänger haben, mitdem man das überprüfen kann.
Was natürlich jetzt bei dir schwierig ist.

Welche nRF24 Lib benutzt du? Ich hatte diese bei mir im Einsatz. Eine andere die schon paar Jahre alt ist, wollte bei mir nicht. Dann gehe ich mal davon aus dass du mit dem GettingStarted Sketch angefangen hast, um die korrekte Funktion/Übertragung sicherzustellen. Ich hatte mit den Modulen auch schon meinen "Spaß". Da hatte der Sender sogar Antworten bekommen, obwohl der Empfänger noch nicht mal aufgeschalten war ;D das Wechseln auf die neuere Lib brachte Abhilfe.

Vorher gab es noch andere Stolpersteine, mit dem Micro und Saintsmart Nano wollte der nRF24 auf Empfängerseite nicht empfangen/senden. Erst ein Selfmade-UNO brachte letztendlich den Erfolg. Allerdings hab ich die Module wieder ad acta gelegt, die Reichweite war zu gering. Schon eine Wand, und es gab Aussetzer.

Eigentlich funzen diese Dinger prima.
Wo nimmst du die 3V3 her ? Vom UNO ?
Falls ja: .... das könnte ein bischen dünne vom Strom her sein - auf jeden Fall sollte man ein wenig Kapazität direkt an den NRF löten. Ein 100n Kondensator kann reichen, ein Kleiner Tantal-Elko mit 1-10µ tuts (zusätzlich auch (besser).

Dieses Prob hatte ich speziell bei Verwendung von (China-) Unos. Mit einem Mega lief es immer prima.
Sinn und Zweck ist eigentlich die (HF-) Entkopplung, nicht unbedingt Strom-Puffer.

Betreff Reichweite: Die BRF mit dem Power-Chip und der ext. SMC-Buchse für Antenne machen schon gut Dampf.
Mit einer 6dB Antenne komme ich hier (draussen) locker min. 500m.
Allerdings brauchen diese Module eine "richtige", externe 3V3-Quelle. Da geht der Regler auf dem Dino bei voller Sendeleistung und vielen Daten in die Knie

Bist du denn sicher, dass deine Werte auch gesendet weren ?
Also, ob der Sender diese auch tatsächlich raussendet.

In meinem Programm ist ja geschrieben, dass die Daten nur im Serial Monitor angezeigt werden sollen, wenn sie auch wirklich rausgehen. Von dem her nehme ich an, dass sie gesendet werden.

Dann gehe ich mal davon aus dass du mit dem GettingStarted Sketch angefangen hast, um die korrekte Funktion/Übertragung sicherzustellen.

Ich verwende die Library von TMRh20 die an vielen Orten empfohlen wird. Und da habe ich den GettingStarted Sketch probiert. Allerdings hat dieser garnicht funktioniert. Ich habe dann die Sketches aus diesem Tutorial ausprobiert, allerdings gingen auch diese nicht. Also die Ausgaben waren ähnlich wie bei meinem Programm. Ich konnte senden, aber nicht empfangen.

Wo nimmst du die 3V3 her ? Vom UNO ?

Ja der Strom kommt vom Uno. Ich werde das mit dem Kondensator probieren.

techniclover:
In meinem Programm ist ja geschrieben, dass die Daten nur im Serial Monitor angezeigt werden sollen, wenn sie auch wirklich rausgehen. Von dem her nehme ich an, dass sie gesendet werden.
Ich verwende die Library von TMRh20 die an vielen Orten empfohlen wird. Und da habe ich den GettingStarted Sketch probiert. Allerdings hat dieser garnicht funktioniert. Ich habe dann die Sketches aus diesem Tutorial ausprobiert, allerdings gingen auch diese nicht. Also die Ausgaben waren ähnlich wie bei meinem Programm. Ich konnte senden, aber nicht empfangen.

Da du nichts empfangen kannst, ist es auch nicht sicher, ob du gesendet hast.

Das ist leider immer ein Problem.

Kannst du dich nicht mit jemandem zusammen tun, der auch einen funktionierenden Empfänger hat und dann weiter testen.
So ist es doch nur ein "stochern im Trüben".

Leider kann das Problem an vielen Dingen liegen, auch an den Modulen oder dem Sketch.

Nochmals,?um ein schnelles Ergebnis zu erzielen, baue das mit den einfachen 433 MHz Modulen auf, das st deutlich einfacher.

Moin,

Hab auch nen DS18B20 an nem Uno mit der RF24 lib hängen.

Hier nur ein kurzer ausschnitt des Sendercodes im Loop.

  sensors.requestTemperatures();

  t = sensors.getTempCByIndex(0);

  Serial.println(t);

  long message[8] = {int(t), int(h), int(p), (id)};

  radio.stopListening();
  radio.write(&message, sizeof(message));
  radio.startListening();

  Serial.println("Sent");

Beim empfänger ist es in etwa so:

  radio.startListening();                             
  if (radio.available()) {
    long got_message[8] = {0, 0, 0, 0, 0, 0, 0, 0};
    bool done = false;
    radio.read(&got_message, sizeof(got_message));

Vielleicht helfen dir die Codeschnipsel ja.

Ich habe leider nur einen riesen Code mit vielen Tabs wo insgesammt ca. 1000 Zeilen Code laufen. Daher kann und will ich nicht alles Posten.