#include <TinyGPS++.h>
#include <HardwareSerial.h>
// Create GPS and Serial objects
TinyGPSPlus gps;
HardwareSerial gpsSerial(1); // Use UART1
void setup() {
// Initialize Serial Monitor
Serial.begin(115200);
Serial.println("GPS Neo-6M with ESP32");
// Initialize UART1 for GPS
gpsSerial.begin(9600, SERIAL_8N1, 16, 17); // RX = GPIO16, TX = GPIO17
}
void loop() {
// Read data from GPS module
while (gpsSerial.available() > 0) {
char c = gpsSerial.read();
if (gps.encode(c)) {
// If new data is available, print it
displayGPSData();
}
}
}
// Function to display GPS data
void displayGPSData() {
if (gps.location.isUpdated()) {
Serial.print("Latitude: ");
Serial.print(gps.location.lat(), 6);
Serial.print(", Longitude: ");
Serial.println(gps.location.lng(), 6);
}
if (gps.date.isUpdated()) {
Serial.print("Date: ");
Serial.print(gps.date.day());
Serial.print("/");
Serial.print(gps.date.month());
Serial.print("/");
Serial.println(gps.date.year());
}
if (gps.time.isUpdated()) {
Serial.print("Time: ");
Serial.print(gps.time.hour());
Serial.print(":");
Serial.print(gps.time.minute());
Serial.print(":");
Serial.println(gps.time.second());
}
}