I’m using a nano and nRF24l01 to send a moisture value and temperature value to a UNO and another nRF24l01.
The transmitter (nano) reads the moisture sensor and temperature data ok. (confirmed with serial viewer). The receiver (UNO) will receive the temperature value but only states a value of 0.00 for the moisture value. It must be something small but I can’t see it.
Transmitter:
#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>
#include <DHT.h>
#define DHTPIN 7 // do not connect to pin 0 or pin 1
#define DHTTYPE DHT11 // Define DHT11 module
DHT dht(DHTPIN, DHTTYPE); //create DHT object called dht
int sensor_pin = A0; //added the moisture sensor
int output_value ;
float moisture ;
RF24 transmit (9,10); //ce=9, csn=10 create RF24 object called transmit
byte address [5] = "00001"; //set address to 00001
struct package
{
float temperature = 0;
float moisture = 0;
};
typedef struct package Package;
Package data;
void setup() {
dht.begin();
transmit.begin();
transmit.openWritingPipe(address); //open writing pipe to address 00001
transmit.setPALevel(RF24_PA_MAX); //set RF power output to maximum
transmit.setDataRate(RF24_250KBPS); //set datarate to 250kbps
transmit.setChannel(100); //set frequency to channel 100
transmit.stopListening();
}
void loop() {
Serial.begin(9600);
data.temperature = dht.readTemperature();
output_value = analogRead(sensor_pin);
moisture = map(output_value,1023,450,0,100);
Serial.println(moisture);
Serial.println(data.temperature);
transmit.write(&data,sizeof(data));
delay(1000);
}
Receiver:
#include <nRF24L01.h>
//#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>
RF24 receive (9,10);
byte address [5] = "00001";
float moisture ;
struct package
{
float temperature = 0;
float moisture = 0;
};
typedef struct package Package;
Package data;
void setup() {
Serial.begin(9600);
receive.begin();
receive.openReadingPipe(0,address);
receive.setPALevel(RF24_PA_MIN);
receive.setDataRate(RF24_250KBPS);
receive.setChannel(100);
receive.startListening();
}
void loop() {
if (receive.available()) //check when received data available
{
receive.read(&data, sizeof(data));
Serial.println(moisture);
Serial.print(data.temperature);
Serial.println("C ");
}
}