#include <TinyGPS++.h>
#include <Wire.h> // Incluimos la librería Wire para la comunicación I2C
#include <LiquidCrystal_I2C.h>
TinyGPSPlus gps;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Cambia 0x27 por la dirección I2C de tu LCD y ajusta las dimensiones si es necesario
void setup() {
Serial.begin(115200); //para el serial de la esp32
Serial2.begin(9600); //el serial para el gps
delay(5000);
lcd.init(); // Inicializamos la LCD
lcd.backlight(); // Encendemos la retroiluminación de la LCD
lcd.setCursor(0,0);
lcd.print ("Bienvenido");
delay (5000); // Retardo del tiempo que se mostrará el mensaje
}
void loop() {
if (Serial2.available() > 0) {
if (gps.encode(Serial2.read())) {
if (gps.location.isValid()) {
lcd.clear();
lcd.print("LAT: ");
lcd.print(gps.location.lat(),6);
lcd.setCursor (0, 1);
lcd.print("LON: ");
lcd.print(gps.location.lng(),6);
delay (3000);
lcd.clear();
lcd.print("VEL: ");
lcd.print(gps.speed.kmph());
lcd.print("Km/h");
lcd.setCursor (0, 1);
lcd.print("SAT: ");
lcd.print(gps.satellites.value());
delay (2000);
lcd.clear();
lcd.print("ALT: ");
lcd.print(gps.altitude.meters(), 0);
delay (2000);
lcd.clear();
lcd.print("HOR: ");
lcd.print(gps.time.hour());
lcd.print(":");
lcd.print(gps.time.minute());
lcd.print(":");
lcd.print(gps.time.second());
lcd.setCursor (0, 1);
lcd.print("FEC: ");
lcd.print(gps.date.day());
lcd.print("/");
lcd.print(gps.date.month());
lcd.print("/");
lcd.print(gps.date.year());
delay (2000);
} else {
// En caso de que la ubicación sea inválida, podemos mostrar un mensaje en la LCD
lcd.setCursor(0, 1);
lcd.print("Location: INVALID");
}
}
}
if (millis() > 10000 && gps.charsProcessed() < 10) {
// Si no se ha recibido datos del GPS, podemos mostrar un mensaje en la LCD
lcd.setCursor(0, 1);
lcd.print("No GPS data");
lcd.setCursor(0, 2);
lcd.print("received");
}
}
void Visualizacion_Serial(void)
{
if (gps.location.isValid() == 1)
{
Serial.print("Lat: ");
Serial.println(gps.location.lat(),6);
Serial.print("Lng: ");
Serial.println(gps.location.lng(),6);
Serial.print("Speed: ");
Serial.println(gps.speed.kmph());
Serial.print("SAT:");
Serial.println(gps.satellites.value());
Serial.print("ALT:");
Serial.println(gps.altitude.meters(), 0);
Serial.print("Date: ");
Serial.print(gps.date.day()); Serial.print("/");
Serial.print(gps.date.month()); Serial.print("/");
Serial.println(gps.date.year());
Serial.print("Hour: ");
Serial.print(gps.time.hour()); Serial.print(":");
Serial.print(gps.time.minute()); Serial.print(":");
Serial.println(gps.time.second());
Serial.println("---------------------------");
}
else
{
Serial.println("Sin señal gps");
}
}