Skip to content

Commit

Permalink
Refined code of processing gps data using struct gpsdata
Browse files Browse the repository at this point in the history
  • Loading branch information
gssamuditha committed Feb 27, 2025
1 parent 862f3ad commit 07eb0a9
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 25 deletions.
11 changes: 6 additions & 5 deletions utils/GEOnex_Base_ESP32/include/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@


// WiFi Credentials
// #define WIFI_SSID "Ministry Of Wifi"
// #define WIFI_PASS "ExpectoRouter"
#define WIFI_SSID "Ministry Of Wifi"
#define WIFI_PASS "ExpectoRouter"

// #define WIFI_SSID "Samuditha's iPhone"
// #define WIFI_PASS "Gnpss2001"

#define WIFI_SSID "Eng-Student"
#define WIFI_PASS "3nG5tuDt"
// #define WIFI_SSID "Eng-Student"
// #define WIFI_PASS "3nG5tuDt"

// MQTT Broker
#define MQTT_HOST "a1qulasp0wzg24-ats.iot.eu-north-1.amazonaws.com"
Expand All @@ -26,7 +26,8 @@

// MQTT Topics (published)
// #define MQTT_TOPIC_DATA_LIVE "GEOnex/siteSurvey/data/" DEVICE_ID "/gps/live"
#define MQTT_TOPIC_DATA_LIVE "esp8266/pub"
// #define MQTT_TOPIC_DATA_LIVE "esp8266/pub"
#define MQTT_TOPIC_DATA_LIVE "tracking/r/live/rover1234/data"

// Hardware Pins
#define GPS_RX 16
Expand Down
11 changes: 10 additions & 1 deletion utils/GEOnex_Base_ESP32/include/gps_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,16 @@
#include <TinyGPS++.h>
#include <HardwareSerial.h>

void processGPS();
// Structure to hold GPS data
struct GPSData
{
double latitude;
double longitude;
int satellites;
bool isValid;
};

GPSData processGPS();
void handleGPSLED(int sat);

#endif
2 changes: 1 addition & 1 deletion utils/GEOnex_Base_ESP32/include/mqtt_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ void publishGPSData(float latitude, float longitude, int satellites);
bool mqttConnected();
void mqttLoop();
void mockPublishGPSData();
void handleMQTTLED(double Lat, double Lon, int sat) ;
void handleMQTTLED() ;

#endif
5 changes: 2 additions & 3 deletions utils/GEOnex_Base_ESP32/src/base_calibration.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@
#include "WiFi.h"
#include "TinyGPSPlus.h"
#include <BasicLinearAlgebra.h>
#include "config.h"
#include "gps_manager.h"

// Create GPS module instance
GPSModule gpsModule(16, 17, 9600);

TinyGPSPlus gps;

#define BUFFER_SIZE 50
double lat_buffer[BUFFER_SIZE];
Expand Down
22 changes: 14 additions & 8 deletions utils/GEOnex_Base_ESP32/src/gps_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,31 @@

GPSModule gpsModule(GPS_RX, GPS_TX, GNSS_BAUD_RATE);

void processGPS()
GPSData processGPS()
{
gpsModule.processGPSData();
Serial.println("[INFO] Processing GPS data...");

GPSData gpsdata = {0.0, 0.0, 0, false};

if (gpsModule.hasNewLocation())
{

gpsdata.latitude = gpsModule.getLatitude();
gpsdata.longitude = gpsModule.getLongitude();
gpsdata.satellites = gpsModule.getSatellites();
gpsdata.isValid = true;

Serial.print("\nLatitude: ");
double Lat = gpsModule.getLatitude();
Serial.print(Lat, 6);
Serial.print(gpsdata.latitude, 6);

Serial.print(", Longitude: ");
double Lon = gpsModule.getLongitude();
Serial.println(Lon, 6);
Serial.println(gpsdata.longitude, 6);

Serial.print("Satellites: ");
int sat = gpsModule.getSatellites();
Serial.println(sat);
Serial.println(gpsdata.satellites);

// handleGPSLED(sat);
handleGPSLED(gpsdata.satellites);
// handleMQTTLED(Lat, Lon, sat);
}
else
Expand All @@ -35,6 +40,7 @@ void processGPS()
digitalWrite(LED_GPS, HIGH);
//digitalWrite(LED_GPS, !digitalRead(LED_GPS)); // Blink in float mode
}
return gpsdata; // Return the struct containing GPS values
}

void handleGPSLED(int sat)
Expand Down
14 changes: 9 additions & 5 deletions utils/GEOnex_Base_ESP32/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,25 @@ void setup()
setupPins();

// Initialize WiFi and connect to network
//connectWiFi();
connectWiFi();

// Initialize MQTT
//connectMQTT();
connectMQTT();

Serial.println("[INFO] ESP32 Setup complete");
}

void loop()
{
// Process GPS Data
processGPS();
GPSData gpsInfo = processGPS();
publishGPSData(gpsInfo.latitude, gpsInfo.longitude, gpsInfo.satellites);

//mqttLoop();
//checkButtonPresses();
mqttLoop();

checkButtonPresses();

//Main loop delay
delay(MAIN_LOOP_DELAY);
}

Expand Down
4 changes: 2 additions & 2 deletions utils/GEOnex_Base_ESP32/src/mqtt_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ void publishGPSData(float latitude, float longitude, int satellites)
if (client.publish(MQTT_TOPIC_DATA_LIVE, jsonBuffer))
{
Serial.println("[INFO] GPS data published successfully");
handleMQTTLED();
}
else
{
Expand All @@ -115,10 +116,9 @@ void mockPublishGPSData()
publishGPSData(randomLatitude, randomLongitude, randomSatellites);
}

void handleMQTTLED(double Lat, double Lon, int sat)
void handleMQTTLED()
{
digitalWrite(LED_MQTT, LOW);
publishGPSData(Lat, Lon, sat);
delay(MQTT_LED_DELAY);
digitalWrite(LED_MQTT, HIGH);
}

0 comments on commit 07eb0a9

Please sign in to comment.