diff --git a/utils/GEOnex_Base_ESP32/include/config.h b/utils/GEOnex_Base_ESP32/include/config.h index ddcbd48..dde5198 100644 --- a/utils/GEOnex_Base_ESP32/include/config.h +++ b/utils/GEOnex_Base_ESP32/include/config.h @@ -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" @@ -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 diff --git a/utils/GEOnex_Base_ESP32/include/gps_manager.h b/utils/GEOnex_Base_ESP32/include/gps_manager.h index 0f7470a..7de3af6 100644 --- a/utils/GEOnex_Base_ESP32/include/gps_manager.h +++ b/utils/GEOnex_Base_ESP32/include/gps_manager.h @@ -4,7 +4,16 @@ #include #include -void processGPS(); +// Structure to hold GPS data +struct GPSData +{ + double latitude; + double longitude; + int satellites; + bool isValid; +}; + +GPSData processGPS(); void handleGPSLED(int sat); #endif diff --git a/utils/GEOnex_Base_ESP32/include/mqtt_manager.h b/utils/GEOnex_Base_ESP32/include/mqtt_manager.h index 8c07684..d53d150 100644 --- a/utils/GEOnex_Base_ESP32/include/mqtt_manager.h +++ b/utils/GEOnex_Base_ESP32/include/mqtt_manager.h @@ -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 diff --git a/utils/GEOnex_Base_ESP32/src/base_calibration.cpp b/utils/GEOnex_Base_ESP32/src/base_calibration.cpp index 8b114bf..28f272d 100644 --- a/utils/GEOnex_Base_ESP32/src/base_calibration.cpp +++ b/utils/GEOnex_Base_ESP32/src/base_calibration.cpp @@ -3,11 +3,10 @@ #include "WiFi.h" #include "TinyGPSPlus.h" #include +#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]; diff --git a/utils/GEOnex_Base_ESP32/src/gps_manager.cpp b/utils/GEOnex_Base_ESP32/src/gps_manager.cpp index 61e061c..d4072eb 100644 --- a/utils/GEOnex_Base_ESP32/src/gps_manager.cpp +++ b/utils/GEOnex_Base_ESP32/src/gps_manager.cpp @@ -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 @@ -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) diff --git a/utils/GEOnex_Base_ESP32/src/main.cpp b/utils/GEOnex_Base_ESP32/src/main.cpp index fb1ea1f..1046541 100644 --- a/utils/GEOnex_Base_ESP32/src/main.cpp +++ b/utils/GEOnex_Base_ESP32/src/main.cpp @@ -20,10 +20,10 @@ void setup() setupPins(); // Initialize WiFi and connect to network - //connectWiFi(); + connectWiFi(); // Initialize MQTT - //connectMQTT(); + connectMQTT(); Serial.println("[INFO] ESP32 Setup complete"); } @@ -31,10 +31,14 @@ void setup() 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); } diff --git a/utils/GEOnex_Base_ESP32/src/mqtt_manager.cpp b/utils/GEOnex_Base_ESP32/src/mqtt_manager.cpp index 4c41c63..f61f6bd 100644 --- a/utils/GEOnex_Base_ESP32/src/mqtt_manager.cpp +++ b/utils/GEOnex_Base_ESP32/src/mqtt_manager.cpp @@ -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 { @@ -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); }