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