A question about nrf240l

heyy
I have a Project to connect a 1 master 2 slaves nrf boards to get sensor values from the two slaves to the master board

It working with the first slave but with the second dosn't work
any help!
master code

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Wire.h> 
const int pinButton = 8;

const uint64_t pipeOut = {00};
const uint64_t pipeIn = {01};
const uint64_t pipeIn2 = {02};
RF24 radio(10, 9);
RF24 network(radio);
struct MyData {
 float re;
 float h;
 float t;
 float f;
 float v;
 float ds;
 float h2;
 float t2;
 float ds2;

};
MyData data;
void setup()
{
 Serial.begin(9600); 
  pinMode(pinButton, INPUT);
 radio.begin();
 radio.setAutoAck(false);
 radio.setDataRate(RF24_250KBPS);
   radio.openReadingPipe(1, pipeIn);
   radio.openReadingPipe(2, pipeIn);
 radio.openWritingPipe(pipeOut);
   radio.startListening();
}

void loop()
{
 
 if ( radio.available() ) {
   radio.read(&data, sizeof(MyData));

   Serial.print("relay: ");
   Serial.print(data.re);
   Serial.println(" " );
   
   Serial.print("Humidity: " ); 
   Serial.print(data.h);
   Serial.println(" " );

   Serial.print("Temperature: ");
   Serial.print(data.t);
   Serial.println(" " );

   Serial.print("flow rate: ");
   Serial.print(data.f);
   Serial.println(" " );
   
   Serial.print("volume: ");
   Serial.print(data.v);
   Serial.println(" " );
   
   Serial.print("external temp: ");
   Serial.print(data.ds);
   Serial.println(" " );
   
   Serial.println(" " );
   
   Serial.print("external temp 2: ");
   Serial.print(data.ds2);
   Serial.println(" " );

   Serial.print("Humidity 2: " ); 
   Serial.print(data.h2);
   Serial.println(" " );
   
   Serial.print("Temperature 2: ");
   Serial.print(data.t2);
   Serial.println(" " );
   
   Serial.println(" " );
      
   radio.read(&data, sizeof(MyData));
   delay (5000);
 }
}

slave code

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Wire.h> 
int dataToSend = 6;
#include "DHT.h"
const byte address[5] = "00001";
const uint64_t pipeIn = 00;
const uint64_t pipeOut = 01; 
const int pinButton = 8;
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 4     
#define DHTTYPE    DHT11    
DHT_Unified dht(DHTPIN, DHTTYPE);
uint32_t delayMS;
#include <DS18B20.h>
DS18B20 ds(3);
#include <FlowMeter.h> 
FlowMeter Meter = FlowMeter(2);
const unsigned long period = 1000;
void MeterISR() {
   Meter.count();
}
RF24 radio(10, 9); //  CN and CSN  pins of nrf
RF24 network(radio);
struct MyData {
 float re;
 float h;
 float t;
 float f;
 float v;
 float ds;

};
MyData data;
void setup()
{
lcd.init();                     
 lcd.backlight();
 Serial.print("Devices: ");
 Serial.println(ds.getNumberOfDevices());
 Serial.println();
 Serial.begin(9600); 
 dht.begin();
 sensor_t sensor;
 dht.temperature().getSensor(&sensor);
 Serial.println(F("------------------------------------"));
 Serial.println(F("Temperature Sensor"));
 Serial.print  (F("Sensor Type: ")); Serial.println(sensor.name);
 Serial.print  (F("Driver Ver:  ")); Serial.println(sensor.version);
 Serial.print  (F("Unique ID:   ")); Serial.println(sensor.sensor_id);
 Serial.print  (F("Max Value:   ")); Serial.print(sensor.max_value); Serial.println(F("°C"));
 Serial.print  (F("Min Value:   ")); Serial.print(sensor.min_value); Serial.println(F("°C"));
 Serial.print  (F("Resolution:  ")); Serial.print(sensor.resolution); Serial.println(F("°C"));
 Serial.println(F("------------------------------------"));
 dht.humidity().getSensor(&sensor);
 Serial.println(F("Humidity Sensor"));
 Serial.print  (F("Sensor Type: ")); Serial.println(sensor.name);
 Serial.print  (F("Driver Ver:  ")); Serial.println(sensor.version);
 Serial.print  (F("Unique ID:   ")); Serial.println(sensor.sensor_id);
 Serial.print  (F("Max Value:   ")); Serial.print(sensor.max_value); Serial.println(F("%"));
 Serial.print  (F("Min Value:   ")); Serial.print(sensor.min_value); Serial.println(F("%"));
 Serial.print  (F("Resolution:  ")); Serial.print(sensor.resolution); Serial.println(F("%"));
 Serial.println(F("------------------------------------"));
 if (isnan(data.h) || isnan(data.t)){
     Serial.println(F("Failed to read from DHT sensor!"));
     return;
 }
 delayMS = sensor.min_delay / 1000;
 attachInterrupt(INT0, MeterISR, RISING);
 Meter.reset();
 radio.begin();
 radio.setAutoAck(false);
 radio.setDataRate(RF24_250KBPS);
 radio.openReadingPipe(1, pipeIn);
 radio.openWritingPipe(pipeOut);
 radio.stopListening();

 pinMode(pinButton, INPUT);
 //lcd.println("Receiver ");
}
void loop()
{
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 while (ds.selectNext()) {
   switch (ds.getFamilyCode()) {
     case MODEL_DS18S20:
       Serial.println("Model: DS18S20/DS1820");
       break;
     case MODEL_DS1822:
       Serial.println("Model: DS1822");
       break;
     case MODEL_DS18B20:
       Serial.println("Mode2: DS18B20");
       break;
     default:
       Serial.println("Unrecognized Device");
       break;
   }

   uint8_t address[8];
   ds.getAddress(address);

   Serial.print("Address:");
   for (uint8_t i = 0; i < 8; i++) {
     Serial.print(" ");
     Serial.print(address[i]);
   }
   Serial.println();

   Serial.print("Resolution: ");
   Serial.println(ds.getResolution());

   Serial.print("Power Mode: ");
   if (ds.getPowerMode()) {
     Serial.println("External");
   } else {
     Serial.println("Parasite");
   }

   Serial.print("Temperature: ");
   Serial.print(ds.getTempC());
   data.ds = ds.getTempC();
   Serial.print(" C / ");
   lcd.setCursor(0,2);
   lcd.print(ds.getTempC());
   lcd.setCursor(6,2);
   lcd.print("C");

 }

 delay(2000);
 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 delay(delayMS);
 
 sensors_event_t event;
 dht.temperature().getEvent(&event);
 if (isnan(event.temperature)) {
   Serial.println(F("Error reading temperature!"));
   lcd.setCursor(3,0);
 lcd.print(F("Error reading temperature!"));
 }
 else {
   Serial.print(F("Temperature: "));
   Serial.print(event.temperature);
   Serial.println(F("°C"));
   lcd.setCursor(0,0);
   lcd.print(F("Temp:"));
   lcd.print(event.temperature);
    data.t = event.temperature;
   lcd.print(F("°C"));
 }
 
 dht.humidity().getEvent(&event);
 if (isnan(event.relative_humidity)) {
   Serial.println(F("Error reading humidity!"));
 }
 else {
   Serial.print(F("Humi:"));
   Serial.print(event.relative_humidity);
   Serial.println(F("%"));
   lcd.setCursor(0,1);
   lcd.print(F("Humidity: "));
   lcd.print(event.relative_humidity);
   data.h = event.relative_humidity;
   lcd.print(F("%"));
 }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   delay(period);
   Meter.tick(period);
   Serial.println("Currently " + String(Meter.getCurrentFlowrate()));
    data.f = Meter.getCurrentFlowrate();
   Serial.println ( " l/min, " + String(Meter.getTotalVolume()));
    data.v = Meter.getTotalVolume();
   Serial.println (" l total.");
   lcd.setCursor(0,3);
   lcd.print("Currently " + String(Meter.getCurrentFlowrate()));
  
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   
  radio.write(&data, sizeof(MyData));

   radio.write( &dataToSend, sizeof(dataToSend) );
   data.re = digitalRead(pinButton);
  
   Serial.print("relay: ");
   Serial.print(data.re);
  
   Serial.println(" " );
       
   Serial.print("Humidity: " ); 
   Serial.print(data.h);
   
   Serial.println(" " );
     
   Serial.print("Temperature: ");
   Serial.print(data.t);
   
   Serial.println(" " );
   
   Serial.print("flow rate: ");
   Serial.print(data.f);
   
   Serial.println(" " );
   
   Serial.print("volume: ");
   Serial.print(data.v);
  
   Serial.println(" " );
   
   Serial.print("external temp: ");
   Serial.print(data.ds);
   
   Serial.println(" " );
}

Is slave two writing on a different pipe?

no

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Wire.h> 
int dataToSend = 6;
#include "DHT.h"
const uint64_t pipeIn = {00}; 
const uint64_t pipeOut = {02}; 
const int pinButton = 8;
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 4     
#define DHTTYPE    DHT11    
DHT_Unified dht(DHTPIN, DHTTYPE);
uint32_t delayMS;
#include <DS18B20.h>
DS18B20 ds(3);

RF24 radio(10, 9); //  CN and CSN  pins of nrf
RF24 network(radio);
struct MyData {

 float h2;
 float t2;
 
 float ds2;

};
MyData data;
void setup()
{
lcd.init();                     
 lcd.backlight();
 Serial.print("Devices: ");
 Serial.println(ds.getNumberOfDevices());
 Serial.println();
 Serial.begin(9600); 
 dht.begin();
 sensor_t sensor;
 dht.temperature().getSensor(&sensor);

 dht.humidity().getSensor(&sensor);

 if (isnan(data.h2) || isnan(data.t2)){
     Serial.println(F("Failed to read from DHT sensor!"));
     return;
 }
 
 radio.begin();
 radio.setAutoAck(false);
 radio.setDataRate(RF24_250KBPS);
 radio.openReadingPipe(1, pipeIn);
 radio.openWritingPipe(pipeOut);
 radio.stopListening();

 pinMode(pinButton, INPUT);
 //lcd.println("Receiver ");
}
void loop()
{

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 while (ds.selectNext()) {
   switch (ds.getFamilyCode()) {
     case MODEL_DS18S20:
       Serial.println("Model: DS18S20/DS1820");
       break;
     case MODEL_DS1822:
       Serial.println("Model: DS1822");
       break;
     case MODEL_DS18B20:
       Serial.println("Mode2: DS18B20");
       break;
     default:
       Serial.println("Unrecognized Device");
       break;
   }

   uint8_t address[8];
   ds.getAddress(address);

   Serial.print("Address:");
   for (uint8_t i = 0; i < 8; i++) {
     Serial.print(" ");
     Serial.print(address[i]);
   }
   Serial.println();

   Serial.print("Resolution: ");
   Serial.println(ds.getResolution());

   Serial.print("Power Mode: ");
   if (ds.getPowerMode()) {
     Serial.println("External");
   } else {
     Serial.println("Parasite");
   }
  
   data.ds2 = ds.getTempC();
   
   lcd.setCursor(0,2);
   lcd.print(ds.getTempC());
   lcd.setCursor(6,2);
   lcd.print("C");

 }

 delay(2000);
 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 delay(delayMS);
 
 sensors_event_t event;
 dht.temperature().getEvent(&event);
 if (isnan(event.temperature)) {
   Serial.println(F("Error reading temperature!"));
   lcd.setCursor(3,0);
 lcd.print(F("Error reading temperature!"));
 }
 else {
   
   lcd.setCursor(0,0);
   lcd.print(F("Temp:"));
   lcd.print(event.temperature);
    data.t2 = event.temperature;
   lcd.print(F("°C"));
 }
 
 dht.humidity().getEvent(&event);
 if (isnan(event.relative_humidity)) {
   Serial.println(F("Error reading humidity!"));
 }
 else {

   lcd.setCursor(0,1);
   lcd.print(F("Humidity: "));
   lcd.print(event.relative_humidity);
   data.h2 = event.relative_humidity;
   lcd.print(F("%"));
 }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   
  radio.write(&data, sizeof(MyData));

   radio.write( &dataToSend, sizeof(dataToSend) );
   
   Serial.print("Humidity 2: " ); 
   Serial.print(data.h2);
   
   Serial.println(" " );
     
   Serial.print("Temperature 2: ");
   Serial.print(data.t2);
   
   Serial.println(" " );
   
   Serial.print("external temp 2: ");
   Serial.print(data.ds2);
   
   Serial.println(" " );
}

Please use the code tag button, </> on the menu, next time you post your code.
Thank you.
Moderator.

Have a look at this Simple nRF24L01+ Tutorial.

The examples are as simple as I could make them and they have worked for other Forum members. If you get stuck it will be easier to help with code that I am familiar with. Start by getting the first example to work

The Tutorial includes an example for a master and 2 slaves that can easily be extended to a larger number of slaves.

...R