Hello guys I am trying to make a simple "wireless weather station" that could be expanded upon later on. (Photoresistor, Rain Level Gauge, RTC)
Here we go.
On my LCD screen after turning on both modules I am making a connection (I believe) as it displays the "now receiving"(if receive.available) but the data underneath is "0.00C 0.00%". I have tested the dht11 sensor separately and it DOES work, just doesn't want to display the data when being sent via Nrf24l01.
(Fritzing image in progress)(wasn't sure if necessary will upload when done)
2x Arduino Uno (later switching too nano for transmitter)
1x LCD 16x2 (without i2c)
1x DHT11
2x Nrf24L01 (without antenna)
2x Nrf24L01 Breakout Board
Later including:
DS3231 RTC Module.
20x2 LCD (more room)
Transmitter Code:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <DHT.h>
#define DHTPIN 5 // do not connect to pin 0 or pin 1
#define DHTTYPE DHT11 // Define DHT11 module
DHT dht(DHTPIN, DHTTYPE);
RF24 transmit (2,3); //create RF24 object called transmit
byte address [5] = {'R','x','A','A','A'}; //set address to 00001
struct package
{
float temperature = 0;
float humidity = 0;
float light = 0;
};
typedef struct package Package;
Package data;
void setup(void) {
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(void)
{
data.temperature = dht.readTemperature();
data.humidity = dht.readHumidity();
transmit.write(&data,sizeof(data));
delay(1000);
}
Receiver Code:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal.h>
const int rs = 10, en = 8, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
RF24 receive (2,3);
byte address [5] = {'R','x','A','A','A'};
struct package
{
float temperature = 0;
float humidity = 0;
//float light = 0;
};
typedef struct package Package;
Package data;
void setup(void) {
Serial.begin(9600);
receive.begin();
receive.openReadingPipe(0, address);
receive.setPALevel(RF24_PA_MAX);
receive.setDataRate(RF24_250KBPS);
receive.setChannel(100);
receive.startListening();
lcd.begin(16, 2);
}
void loop(void)
{
if (receive.available()) //check when received data available
{
receive.read(&data, sizeof(data));
lcd.setCursor(0,0);
lcd.print("Now Receiving");
lcd.setCursor(0,1);
lcd.print(data.temperature);
lcd.print("C ");
lcd.print(data.humidity);
lcd.print("%");
//lcd.print(data.light);
}
else
{
lcd.setCursor(0, 0);
lcd.print("Radio Unavailable");
lcd.clear();
}
}