#include <MicroNMEA.h>
char buffer[85];
MicroNMEA nmea(buffer, sizeof(buffer));
char rmc[] = "$GNRMC,034035.000,A,3150.8617,N,11711.9038,E,3.02,183.45,240516,,,A*75\r\n";
char rmc2[] = "$GNRMC,034035.000,A,3150.8617,N,11711.9038,E,3.02,183.45,240516,,,A*75\r";
char gga[] = "$GNGGA,034035.000,3150.8617,N,11711.9038,E,1,4,1.50,40.9,M,0.0,M,,*44\r";
void fill(const char *sentence) {
for (int i = 0; i < strlen(sentence); i++) {
if (nmea.process(sentence[i])) {
return;
}
}
}
void imprimir() {
Serial.print("Valid fix: ");
Serial.println(nmea.isValid() ? "yes" : "no");
Serial.print("Nav. system: ");
if (nmea.getNavSystem())
Serial.println(nmea.getNavSystem());
else
Serial.println("none");
Serial.print("Num. satellites: ");
Serial.println(nmea.getNumSatellites());
Serial.print("HDOP: ");
Serial.println(nmea.getHDOP() / 10., 1);
Serial.print("Date/time: ");
Serial.print(nmea.getYear());
Serial.print('-');
Serial.print(int(nmea.getMonth()));
Serial.print('-');
Serial.print(int(nmea.getDay()));
Serial.print('T');
Serial.print(int(nmea.getHour()));
Serial.print(':');
Serial.print(int(nmea.getMinute()));
Serial.print(':');
Serial.println(int(nmea.getSecond()));
long latitude_mdeg = nmea.getLatitude();
long longitude_mdeg = nmea.getLongitude();
Serial.print("Latitude (deg): ");
Serial.println(latitude_mdeg / 1000000., 6);
Serial.print("Longitude (deg): ");
Serial.println(longitude_mdeg / 1000000., 6);
long alt;
Serial.print("Altitude (m): ");
if (nmea.getAltitude(alt))
Serial.println(alt / 1000., 3);
else
Serial.println("not available");
Serial.print("Speed: ");
Serial.println(nmea.getSpeed() / 1000., 3);
Serial.print("Course: ");
Serial.println(nmea.getCourse() / 1000., 3);
Serial.println("- - - - - - - - - - - - -");
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
fill(rmc2);
imprimir();
fill(gga);
imprimir();
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
}