INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
nRF24l01 empfängt Daten nicht
07.01.2017, 14:54
Beitrag #1
nRF24l01 empfängt Daten nicht
Hallo Zusammen
Ich habe Probleme mit meinem nRF24l01. Eigenlich sind es zwei von diesen. Ich möchte die Temperatur messen und dann von dem einen nRF24l01 an das zweite schicken. Für mich sieht es mit meine Programmen so aus als würden die Daten gesendet, aber kommen nicht an. Verwendet werden zwei Arduino Unos und die Anschlüsse des Moduls an den Arduino wurden mehrfach überprüft.

Für das sendende Programm habe ich folgenden Code:
Code:
#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.println (tempout);

  }
}

Dabei kommt auf dem Serial Monitor folgendes raus:
Code:
SimpleTx Starting
  Acknowledge received
22.62
  Acknowledge received
22.62
  Acknowledge received
22.69
  Acknowledge received
22.69
  Acknowledge received
22.75
  Acknowledge received
22.75
  Acknowledge received
22.75
  Acknowledge received
22.75
  Acknowledge received
22.81


Empfangen sollte mit folgendem Programm werden:
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;
  }

}

Dabei raus kommt folgendes:
Code:
Data received 0.00
Data received 0.00
Data received 0.00
Data received 0.00
Data received 0.00
Data received 0.00
Data received 0.00
Data received 0.00
Data received 0.00
Data received 0.00
Data received 0.00
Data received 0.00
Data received 0.00
Data received 0.00
Data received 0.00
Data received 0.00
Data received 0.00
Data received 0.00
Data received 0.00

Laut dem Programm und den Ausgaben müsste also 0.00 empfangen werden und die richtige Temperatur gesendet werden. Die Daten bleiben auf der Strecke.
Kennt jemand dieses Problem? Kann mir dabei jemand helfen?
Vielen Dank und liebe Grüsse technicloverHuhHuh
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.01.2017, 19:20
Beitrag #2
RE: nRF24l01 empfängt Daten nicht
Hallo,
ich habe neulich vor einem ähnlichen Problem gestanden.
Allerdings sende ich keine Temperaturen, sondern die Werte von einem PS2X GamePAd von einem Uno an einen Uno.

Bei mir funktioniert es folgendermassen:

Sender:
Du musst dir die Temperaturen so einlesen:

byte TempOut [2];
TempOut [0] = Wert vor dem Komma;
TempOut [1] = Wert nach dem Komma;

Empfänger:

byte TempOut [2];

if (radio.available())
{
radio.read(&TempOut, 2) // du erwartest 2 Werte
}

Serial.print(TempOut[0]);
Serial.print(".");
Serial.println(TemoOut[1]);

Ich hoffe es klappt bei dir jetzt auch.

LG Celle
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Sketch für WS2812 klappt nicht ThorstenP 9 127 Gestern 14:50
Letzter Beitrag: ThorstenP
  Nano Every upload geht nicht Jeanlion1 6 139 01.04.2020 17:45
Letzter Beitrag: Tommy56
  Menu funktioniert ohne Serial.println nicht GSA1150 7 144 30.03.2020 18:26
Letzter Beitrag: Tommy56
  Brauche Hilfe, Was Stimmt an meinem Sketch nicht Andi-1090 12 394 20.03.2020 10:04
Letzter Beitrag: hotsystems
  Hochladen eines Sketches funktioniert nicht otti123 24 913 29.02.2020 18:25
Letzter Beitrag: MicroBahner
  int variable wird nicht in Schleife übertragen ha0248 8 464 11.02.2020 15:25
Letzter Beitrag: ha0248
  SPI(?)-Schnittstelle Daten empfangen und auswerten RivaDynamite 8 683 27.01.2020 14:04
Letzter Beitrag: RivaDynamite
  Led will nicht bergfrei 2 1.253 23.01.2020 13:27
Letzter Beitrag: hotsystems
  Mal geht das kompilieren mal nicht ???? MarkZero0815 12 844 06.01.2020 10:34
Letzter Beitrag: Tommy56
  Programm läuft auf UNO aber nicht auf ATTINY85 Diwo13 55 3.042 17.12.2019 17:45
Letzter Beitrag: Diwo13

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste