#include <TinyGPS++.h>
#define GPS_BAUDRATE 9600
#define RX2 16
#define TX2 17
TinyGPSPlus gps;
void setup() {
Serial.begin(9600);
Serial2.begin(GPS_BAUDRATE, SERIAL_8N1, RX2, TX2);
Serial.println("NEO-6M GPS Module Simulation on ESP32");
}
void loop() {
if(Serial2.available() > 0) {
if(gps.encode(Serial2.read())) {
// Location information
Serial.print(F("Location:\t("));
if(gps.location.isValid()) {
Serial.print(F("Latitude: ")); Serial.print(gps.location.lat()); Serial.print(F(", "));
Serial.print(F("Longitude: ")); Serial.print(gps.location.lng()); Serial.print(F(", "));
if(gps.altitude.isValid()) Serial.print(gps.altitude.meters());
else Serial.println(F("INVALID"));
} else Serial.println(F("INVALID"));
Serial.println(F(")"));
// Speed information
Serial.print(F("Speed:\t\t"));
if(gps.speed.isValid()) { Serial.print(gps.speed.kmph()); Serial.println(" km/h");}
else Serial.println(F("INVALID"));
// Date & Time information
Serial.print(F("GPS Date&Time:\t"));
if(gps.date.isValid() && gps.time.isValid()) {
Serial.print(gps.date.year()); Serial.print(F("-"));
Serial.print(gps.date.month()); Serial.print(F("-"));
Serial.print(gps.date.day()); Serial.print(F(" "));
Serial.print(gps.time.hour()); Serial.print(F(":"));
Serial.print(gps.time.minute()); Serial.print(F(":"));
Serial.println(gps.time.second());
} else Serial.println(F("INVALID"));
Serial.println();
}
// No GPS Data Exception
if(millis() > 5000 && gps.charsProcessed() < 10)
Serial.println(F("No GPS data received: check wiring"));
}
}