How do I send and receive multiple payloads using two nRF24L01+ 2.4GHz modules?

I only have about a month of arduinoing under my belt. The problem im having is after reading many posts I cant find the magic one that solves my problem which im sure is very simple. I have three arduinos setup. First one reads sensors and sends to the second thru 433mhz. It works flawlessly. Then the second one takes the data it recieved, combines it with readings from its sensors and sends it to the third thru 2.4 GHZ. A friend of mine with some programming experience patched together something that works but I dont think its the "right way" to do it. I have to reset the second arduino once a day because at some random point it stops sending the second package. Does anyone know of a link to a tutorial that shows how to send multiple payloads?

Here is a link to them. http://www.amazon.com/gp/product/B00E594ZX0/ref=oh_details_o07_s00_i00?ie=UTF8&psc=1

TL;DR.

Read the stickies.

I'm just going to delete stuff until you read and act on the stickies.

Well, i tried to post the sketches but it will only let put up one.

What stickies. Ive done every kind of search i could think of…

A sticky

I Read that one before i posted.......................

Right.

Here is the tx sketch im having trouble with.

#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h> 
#include <OneWire.h>
#include <DallasTemperature.h>
#include <VirtualWire.h>
#include <Wire.h>
#include <Adafruit_BMP085.h>
#include <dht11.h>
#include "RTClib.h"

#define DHT11PIN 39
#define ONE_WIRE_BUS 38
int txLED = 43;
int rxLED = 40;
int numbers[16];

RTC_DS1307 RTC;
dht11 DHT11;
Adafruit_BMP085 bmp;
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress Thermometer1 = {
  0x28, 0x50, 0x6B, 0xB3, 0x05, 0x00, 0x00, 0x7D };
RF24 radio(48,49);
RF24Network network(radio);
const uint16_t this_node = 1;
const uint16_t other_node = 0;
const unsigned long interval = 2000; //ms
unsigned long last_sent;
unsigned long packets_sent;
struct payload_t
{
  int temps[11]; 
}; 
struct payload1_t
{
  int temps1[11];  
}; 
void setup()   
{
  Serial.begin(9600);
  RTC.begin();  
  pinMode(rxLED, OUTPUT);
  pinMode(txLED, OUTPUT);   
  vw_set_ptt_inverted(true);
  vw_setup(1000); 
  vw_rx_start(); 
  vw_set_rx_pin(41);
  bmp.begin();
  sensors.begin();
  sensors.setResolution(Thermometer1, 10);
  Serial.println("RF24 Network Tx from Uno"); 
  SPI.begin();
  radio.begin();
  network.begin(/*channel*/ 80, /*node address*/ this_node);
}
void loop(void) {
  sensors.requestTemperatures();   
  DHT11.read(DHT11PIN);
  delay(500); 
  DateTime now = RTC.now();  
  Serial.print(now.year(), DEC);
  Serial.print('/');
  Serial.print(now.month(), DEC);
  Serial.print('/');
  Serial.print(now.day(), DEC);
  Serial.print(' ');
  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second(), DEC);
  Serial.println();
  
  digitalWrite(rxLED, HIGH); //Turn on LED when Recieving
  uint8_t buf[VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;
  if (vw_get_message(buf, &buflen)) // Non-blocking
  {  
    for (int i = 0; i < buflen; i++)
      for (int i = 0; i < 16; i++) //If you add more integers you have to change the 6 to how many intergers you have.
        numbers[i] = word(buf[i*2+1], buf[i*2]);
    digitalWrite(rxLED, LOW); //Turn off LED when done Recieving    

    float tempA = (bmp.readTemperature() * 9.0 / 5.0 + 32); //Read Temperature and convert to fahrenheit
    int temp1 = (int)tempA; //Read Temperature digits on the left of the decimal place
    int temp2 = (int)((tempA - temp1) * 100.0); //Read Temperature digits on the right of the decimal place
    float bar = bmp.readPressure() * 0.0002952998751; //Read Barometric Pressure
    int bar1 = (int)bar; //Read Altitude digits on the left of the decimal place
    int bar2 = (int)((bar - bar1) * 100.0); //Read Altitude digits on the right of the decimal place    
    delay(1000);    
    Serial.print ("Temperature= "); //Print Temperature 
    Serial.print (numbers[0]); //Print Temperature digits on the left of the decimal place
    Serial.println (" *F"); //Print degrees in fahrenheit
    Serial.print ("Barometric Pressure= "); //Print Barometric Pressure
    Serial.print (numbers[1]); //Print Barometric Pressure digits on the left of the decimal place
    Serial.print ("."); //Print decimal
    Serial.print (numbers[2]); //Print Barometric Pressure digits on the left of the decimal place
    Serial.println (" inHg");   
    Serial.print ("Humidity= ");
    Serial.print (numbers[3]); //Print Humidity digits on the left of the decimal place
    Serial.println (" %"); 
    Serial.print ("Water Temp 1= "); //Print Barometric Pressure
    Serial.print (numbers[4]);
    Serial.println (" F"); //Print unit of measure    
    Serial.print ("Water Temp 2= "); //Print Barometric Pressure
    Serial.print (numbers[5]);
    Serial.println (" F"); //Print unit of measure    
    Serial.print ("Water Temp 3= "); //Print Barometric Pressure
    Serial.print (numbers[6]); 
    Serial.println (" F"); //Print unit of measure    
    Serial.print ("Water Temp 4= "); //Print Barometric Pressure
    Serial.print (numbers[7]); 
    Serial.println (" F"); 
    Serial.print ("IR= "); 
    Serial.print (numbers[8]); 
    Serial.println (" "); 
    Serial.print ("Lux= "); 
    Serial.print (numbers[9]); 
    Serial.println ("\t");
    Serial.print("ResWTemp");
    Serial.print("  ");
    Serial.print(DallasTemperature::toFahrenheit(sensors.getTempC(Thermometer1)));   
    Serial.println("F");
    Serial.print("Control Humidity");
    Serial.print (DHT11.humidity);    
    Serial.print("  ");
    //    Serial.print((float)DHT11.humidity, 2);
    unsigned int numberOfDevices = 11;   // Number of temperature devices installed on bus
    int sizeofpayload;
    network.update();
    unsigned long now = millis();
    if ( now - last_sent >= interval  )
    {
      last_sent = now;  
      int sens0 = (numbers[0]);
      int sens1 = (numbers[1]);
      int sens2 = (numbers[2]);
      int sens3 = (numbers[3]);
      int sens4 = (numbers[4]);
      int sens5 = (numbers[5]);
      int sens6 = (numbers[6]);
      int sens7 = (numbers[7]);
      int sens8 = (numbers[8]);
      int sens9 = (numbers[9]);
      int sens10 = 0;  
      int sens11 = (DallasTemperature::toFahrenheit(sensors.getTempC(Thermometer1)));
      int sens12 = (DHT11.humidity);      
      //      int sens12 = (float)DHT11.humidity;
      int sens13 = (temp1);
      int sens14 = (bar1);
      int sens15 = (bar2);
      int sens16 = (numbers[15]); 
      int sens17 = (numbers[11]);
      int sens18 = (numbers[12]);
      int sens19 = (numbers[13]);
      int sens20 = (numbers[14]);
      int sens21 = (numbers[15]);
      int sens22 = 1;

      digitalWrite(txLED, HIGH); //Turn on LED when Recieving     
      int temps[] = {
        sens0, sens1, sens2, sens3, sens4, sens5, sens6, sens7, sens8, sens9, sens10
      };  //this is the Tx payload 
      payload_t payload = {
        sens0, sens1, sens2, sens3, sens4, sens5, sens6, sens7, sens8, sens9, sens10                        };    
      RF24NetworkHeader header(/*to node*/ other_node);
      bool ok = network.write(header,&payload,sizeof(payload));
      int temps1[] = {
        sens11, sens12, sens13, sens14, sens15, sens16, sens17, sens18, sens19, sens20, sens21                        };  
      payload1_t payload1 = {
        sens11, sens12, sens13, sens14, sens15, sens16, sens17, sens18, sens19, sens20, sens21                        };    
      RF24NetworkHeader header1(/*to node*/ other_node);
      bool ok1 = network.write(header1,&payload1,sizeof(payload1));
      digitalWrite(txLED, LOW); //Turn on LED when Recieving
    }
  }
}

Is this what you meant?

Yup. The missing italics make the whole thing easier to read.

Here is the receiving end.

#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>
RF24 radio(48,49);     
RF24Network network(radio);
const uint16_t this_node = 0;
const uint16_t other_node = 1;
struct payload_t
{
  int sens[11];    
};
struct payload1_t
{
  int sens1[11];
};
void setup(void)
{
  Serial.begin(9600);
  SPI.begin();
  radio.begin();
  network.begin(/*channel*/ 80, /*node address*/ this_node); 
}
void loop(void)
{

  network.update();
  while ( network.available() )
  {
    RF24NetworkHeader header;
    payload_t payload;
    network.read(header,&payload,sizeof(payload));  
    if (payload.sens[10] == 0)
    {
      Serial.print ("Temperature= "); 
      Serial.print (payload.sens[0]);
      Serial.println (" *F"); 
      Serial.print ("Barometric Pressure= "); 
      Serial.print (payload.sens[1]); 
      Serial.print ("."); 
      Serial.print (payload.sens[2]); 
      Serial.println (" inHg");   
      Serial.print ("Humidity= ");
      Serial.print (payload.sens[3]); 
      Serial.println (" %"); 
      Serial.print ("Water Temp 1= ");
      Serial.print (payload.sens[4]);
      Serial.println (" F");    
      Serial.print ("Water Temp 2= ");
      Serial.print (payload.sens[5]);
      Serial.println (" F");    
      Serial.print ("Water Temp 3= ");
      Serial.print (payload.sens[6]); 
      Serial.println (" F");   
      Serial.print ("Water Temp 4= ");
      Serial.print (payload.sens[7]); 
      Serial.println (" F"); 
      Serial.print ("IR= "); 
      Serial.print (payload.sens[8]); 
      Serial.println (" "); 
      Serial.print ("Lux= "); 
      Serial.print (payload.sens[9]);
    }
    else
    {
      Serial.print("ResWTemp");
      Serial.print("  ");
      Serial.print(wtemp);   
      Serial.println("F");
      Serial.print("Control Humidity");
      Serial.print("  ");
      Serial.print(huma);   
      Serial.println("%");
      Serial.print("Control Temp");
      Serial.print("  ");
      Serial.print(payload.sens[2]);  
      Serial.println("F");
      Serial.print ("Control Barometric Pressure ");
      Serial.print (payload.sens[3]);
      Serial.print ("."); 
      Serial.print (payload.sens[4]);
      Serial.println (" inHg");
      Serial.println ("....................................."); 
    }
    Serial.print("\n\r\n\r"); 
  }
}

Here is the original sketch I found online before we messed with it. The author talks about sending additional packets but I simply dont have the programming knowledge to figure it out. I rarely ask for help on forums since most of my questions are already answered somewhere online but I just cant find it in this case.

//ARDUINO 1.0 ONLY
  
 //UNO Tx SKETCH FOR USE WITH MEGA2560 Rx OVER nRF24L01 WIRELESS
 //MAX NUMBER OF DS18B20 SENSORS IS 11 -- MAX NUMBER OF BYTES Tx = 32;  10 BYTES FOR HEADER & 2 BYTES FOR EACH SENSOR
 //MORE SENSORS WOULD HAVE TO SENT AS A NEW Tx PACKET

 #include <RF24Network.h>
 #include <RF24.h>
 #include <SPI.h>

 // nRF24L01(+) radio attached using Getting Started board 
 RF24 radio(9,10);            //NRF24L01 CE to pin9, CSN to pin10 on Uno

 // Network uses that radio
 RF24Network network(radio);

 // Address of our node
 const uint16_t this_node = 1;

 // Address of the other node
 const uint16_t other_node = 0;

 // How often to send data to the other unit
 const unsigned long interval = 2000; //ms

 // When did we last send?
 unsigned long last_sent;

 // How many have we sent already
 unsigned long packets_sent;

 // Structure of our payload
 struct payload_t
 {
   int temps[11];     //int temps[X] where X is the number of temp sensors data Tx (0 to X)
                      //max number of temp sensors is 11 for each packet Tx'ed
 };


 //End of nRF24L01 initialisation

 void setup()   /****** SETUP: RUNS ONCE ******/
 {
  // start serial port to show results
  Serial.begin(9600);                       //the lower the baud rate the longer the Tx/Rx distance
  
  Serial.println("RF24 Network Tx from Uno");
 
  SPI.begin();
  radio.begin();
  network.begin(/*channel*/ 80, /*node address*/ this_node);

 }//--(end setup )---

 void loop(void)   /****** LOOP: RUNS CONSTANTLY ******/
 {
  delay(2000);
 
  unsigned int numberOfDevices = 11;                          // Number of temperature devices installed on bus

  
 //prints the number of devices on the 1-wire bus
  int sizeofpayload;
  Serial.println("");
  Serial.print("Number of devices initially installed on 1-wire bus = ");  

  Serial.println(numberOfDevices);

  Serial.println("Getting temperatures........... ");  
 
 // Pump the network regularly
   network.update();

 // If it's time to send a message, send it!


  unsigned long now = millis();
  if ( now - last_sent >= interval  )
  {
    last_sent = now;
 
 
 int temps[] = {sens0, sens1, sens2, sens3, sens4, sens5, sens6, sens7,sens8, sens9, sens10};                     //this is the Tx payload

    Serial.print("Sending...");
    payload_t payload = {sens0, sens1, sens2, sens3, sens4, sens5, sens6, sens7, sens8, sens9, sens10};
    RF24NetworkHeader header(/*to node*/ other_node);
    bool ok = network.write(header,&payload,sizeof(payload));
    if (ok)
    Serial.println("ok.");
    else
    Serial.println("failed.");
  }
    Serial.println("");
 }
 //--------------(end main loop )---------------------------

Here is the receiving end.

//*********************************** RECEIVED AT MEGA2560 *************************************

/*
 * Simplest possible example of using RF24Network,
 *
 * RECEIVER NODE
 * Listens for messages from the transmitter and prints them out.
 */

#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>

// nRF24L01(+) radio attached using Getting Started board 
RF24 radio(49,53);            //CE to pin 49, CSN to pin 53 -  connections on NRF24L01 board for Mega2560

// Network uses that radio
RF24Network network(radio);

// Address of our node
const uint16_t this_node = 0;

// Address of the other node
const uint16_t other_node = 1;

// Structure of our payload
struct payload_t
{
  int temps[11];          //set int temps[] to match number of temp sensors at Uno (Tx) - default 11 (0-10)

};
//********************************* END OF INITIALISATION END *************************************

void setup(void)
{
  Serial.begin(9600);
  SPI.begin();
  radio.begin();
  network.begin(/*channel*/ 80, /*node address*/ this_node); 
}
//***************************************** END OF SETUP ****************************************************

void loop(void)
{
  // Pump the network regularly
  network.update();

  // Is there anything ready for us?
  while ( network.available() )
  {  
    // If so, grab it and print it out
    RF24NetworkHeader header;
    payload_t payload;
    network.read(header,&payload,sizeof(payload));  //header contains Tx/Rx channel & node address, &payloads holds data defined in struct payload_t, sizeof(payload) is the size of data packet in bytes
    int temps[sizeof(payload)];                     //sets int temps[] to match number of temp sensors at Uno (Tx)

    for (int i = 0; i < sizeof(payload)/2; i++)        //since an integer in the range -127 to 128 needs 2 bytes (2 power 8)
      //sizeof(payload) = number of temp sensors x 2 
    {    
      Serial.print("Probe");
      Serial.print(i);
      Serial.print("  ");
      Serial.print(payload.temps[i]);
      Serial.println("C");

    } 
    if (int i = sizeof(payload)/2 - 1)                 //since sizeof(payload) = number of temp sensors x 2 then number of sensors
      //is half the sizeof(payload)
    {
      Serial.println("");
      Serial.print("Received ");
      Serial.print(sizeof(payload)/2);
      Serial.println(" Temp Readings from Uno");
      Serial.println("");
    }
  }
}