Using Neo 6m GPS and Nrf24l01. I have issues on the gps data which is being sent to the transmitter.
Transmitter Serial monitor gps coordinates which is correct:
Latitude= 14.565749 Longitude= 120.994232
Humidity: 72.00 Temperature: 30.00
Latitude= 14.565739 Longitude= 120.994224
Humidity: 72.00 Temperature: 30.00
Latitude= 14.565732 Longitude= 120.994216
Humidity: 72.00 Temperature: 30.00
Latitude= 14.565726 Longitude= 120.994216
Humidity: 72.00 Temperature: 30.00
Latitude= 14.565724 Longitude= 120.994209
Humidity: 72.00 Temperature: 30.00
Latitude= 14.565716 Longitude= 120.994201
Humidity: 72.00 Temperature: 30.00
Reciever Serial monitor gps coordinates which is wrong and sometimes humidity and temperature goes zero:
Latitude= 16881.117187 Longitude= 0.000000
Humidity: 73.00 Temperature: 30.00
Latitude= 16881.117187 Longitude= 0.000000
Humidity: 72.00 Temperature: 30.00
Latitude= 16881.117187 Longitude= 0.000000
Humidity: 72.00 Temperature: 30.00
Latitude= 16881.117187 Longitude= 0.000000
Humidity: 73.00 Temperature: 30.00
Latitude= 16881.117187 Longitude= 0.000000
Humidity: 73.00 Temperature: 30.00
Latitude= 16881.117187 Longitude= 0.000000
Humidity: 0.00 Temperature: 0.00
Latitude= 16881.117187 Longitude= 0.000000
Humidity: 73.00 Temperature: 30.00
Latitude= 16881.117187 Longitude= 0.000000
Humidity: 73.00 Temperature: 30.00
Latitude= 14.565686 Longitude= 120.994338
Humidity: 73.00 Temperature: 30.00
Latitude= 16881.117187 Longitude= 0.000000
Humidity: 73.00 Temperature: 30.00
Latitude= 16881.117187 Longitude= 0.000000
Humidity: 0.00 Temperature: 0.00
Latitude= 16881.117187 Longitude= 0.000000
Humidity: 0.00 Temperature: 0.00
Latitude= 16881.117187 Longitude= 0.000000
Humidity: 0.00 Temperature: 0.00
Latitude= 16881.117187 Longitude= 0.000000
Humidity: 73.00 Temperature: 30.00
This is my Transmitter code:
#include "dht.h"
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#include <SPI.h>
#include <RF24.h>
static const int RXPin = 2, TXPin = 3;//RXpinmodule to pin 3 and Txpinmodule to pin 2
static const uint32_t GPSBaud = 9600;
unsigned long currentMillis = 0;
// The TinyGPS++ object
TinyGPSPlus gps;
// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);
#define dht_apin A0
dht DHT;
struct package
{
float temperature ;
float humidity ;
};
typedef struct package Package;
Package data;
RF24 radio(9, 10); // CE, CSN
const byte address[6] = "00001";
void setup()
{
Serial.begin(9600);
ss.begin(GPSBaud);
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN);
radio.setDataRate(RF24_1MBPS);
radio.stopListening();
}
void loop(){
currentMillis = millis();
Update_DHT11();
Update_GPS();
}
void Update_GPS() {
// This sketch displays information every time a new sentence is correctly encoded.
while (ss.available() > 0){
gps.encode(ss.read());
if (gps.location.isUpdated()){
Serial.print("Latitude= ");
Serial.print(gps.location.lat(), 6);
Serial.print(" Longitude= ");
Serial.println(gps.location.lng(), 6);
Serial.print("Humidity: ");
Serial.print(data.humidity);
Serial.print(" Temperature: ");
Serial.println(data.temperature);
radio.write(&gps.encode, sizeof(gps.encode));
}
}
}
void Update_DHT11()
{
DHT.read11(dht_apin);
data.humidity = DHT.humidity;
data.temperature = DHT.temperature;
radio.write(&data, sizeof(data));
}
This is my Reciever Code:
#include <dht.h>
#include <SPI.h>
#include <RF24.h>
#include <Wire.h>
#include "LiquidCrystal_I2C.h"
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
struct package
{
float temperature;
float humidity;
};
typedef struct package Package;
Package data;
TinyGPSPlus gps;
RF24 radio(9, 10); // CE, CSN
const byte address[6] = "00001";
void setup()
{
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(0, address);
radio.getPALevel();
radio.getDataRate();
lcd.begin(16, 2);
lcd.backlight();
lcd.clear();
lcd.print("Humidity & temp");
delay(1000);
lcd.clear();
lcd.print("Starting");
delay(1000);
radio.startListening();
}
void loop()
{
if (radio.available())
{
radio.read(&data, sizeof(data));
radio.read(&gps.location, sizeof(gps.location));
Serial.print("Latitude= ");
Serial.print(gps.location.lat(), 6);
Serial.print(" Longitude= ");
Serial.println(gps.location.lng(), 6);
Serial.print("Humidity: ");
Serial.print(data.humidity);
Serial.print(" Temperature: ");
Serial.println(data.temperature);
lcd.setCursor(0, 0);
lcd.print("Hum: ");
lcd.print(data.humidity);
lcd.print(" %");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(data.temperature);
lcd.print(" C");
delay(500);
}
else
Serial.println("No Radio Available");
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("No Radio");
lcd.setCursor(0, 1);
lcd.print("Available");
}