Presentación.
Este proyecto tiene el propósito de mostrar los valores de latitud, longitud, día, mes, año, hora, min y segundos en un LCD utilizando Arduino Nano junto al dispositivo GPS de forma clara y entendible.
Funcionamiento.
Al encender el arduino nano debe tomar los valores del GPS y mostrar esos valores en un display LCD.
Realización.
Materiales necesarios para el desarrollo del proyecto:
- 1 Arduino Nano.
- 1 Módulo GPS
- Cables Jumpers
- Panel LCD I2C
El resultado de las conexiones quedara de la siguiente manera:
Programación.
Se debe instalar las librerías del LCD I2C, del modulo GPS y Software Serial
El código utilizado para el Arduino Nano fue el siguiente:
#include // Incluimos la librería Wire para la comunicación I2C
#include // Incluimos la librería LiquidCrystal_I2C
#include // Incluimos SoftwareSerial
#include // Incluimos TinyGPS
TinyGPS gps; // Declaramos el objeto gps
SoftwareSerial serialgps(4, 3); // Declaramos el pin 4 Tx y 3 Rx
LiquidCrystal_I2C lcd(0x3F, 16, 2); // Inicializamos el LCD I2C, dirección 0x3F, 16 columnas y 2 filas
// Declaramos las variables para la obtención de datos
int year;
byte month, day, hour, minute, second, hundredths;
unsigned long chars;
unsigned short sentences, failed_checksum;
void setup()
{
Serial.begin(115200); // Iniciamos el puerto serie
serialgps.begin(9600); // Iniciamos el puerto serie del gps
lcd.init(); // Inicializamos el LCD
lcd.backlight(); // Encendemos la luz de fondo del LCD
// Imprimimos en el LCD:
lcd.setCursor(0, 0);
lcd.print("GPS GY-GPS6MV2");
lcd.setCursor(0, 1);
lcd.print("Buscando senal");
delay(5000); // Esperamos 5 segundos para leer el mensaje en el LCD
lcd.clear(); // Limpiamos la pantalla del LCD
}
void loop()
{
while (serialgps.available())
{
int c = serialgps.read();
if (gps.encode(c))
{
float latitude, longitude;
gps.f_get_position(&latitude, &longitude);
lcd.setCursor(0, 0);
lcd.print("Lat: ");
lcd.print(latitude, 5);
lcd.setCursor(0, 1);
lcd.print("Lon: ");
lcd.print(longitude, 5);
delay(5000); // Esperamos 5 segundos para leer los datos de latitud y longitud en el LCD
gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths);
unsigned long startMillis = millis();
while (millis() - startMillis < 5000) // Esperamos 5 segundos
{
// Ajustar la hora a la hora local
int localHour = hour - 6; // Ajuste de horas para la zona horaria
|
// Ajustar si la hora local es negativa
if (localHour < 0) {
localHour += 24;
day -= 1; // Ir al día anterior
// Ajustar la fecha correctamente
if (day < 1) {
month -= 1;
if (month < 1) {
month = 12;
year -= 1;
}
// Asumimos meses con 30 días para simplificar,
// en una implementación real se debería ajustar los días por mes y años bisiestos.
day = 30;
}
}
// Mostrar fecha y hora en el LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Fecha: ");
lcd.print(day, DEC); lcd.print("/");
lcd.print(month, DEC); lcd.print("/");
lcd.print(year);
lcd.setCursor(0, 1);
lcd.print("Hora: ");
lcd.print(localHour, DEC); lcd.print(":");
lcd.print(minute, DEC); lcd.print(":");
lcd.print(second, DEC);
// Espera de 1 segundo antes de actualizar los segundos
delay(1000);
second++;
if (second >= 60) {
second = 0;
minute++;
if (minute >= 60) {
minute = 0;
localHour++;
if (localHour >= 24) {
localHour = 0;
day++;
// Aquí deberías ajustar el día del mes correctamente
// considerando los meses y años bisiestos.
}
}
}
}
gps.stats(&chars, &sentences, &failed_checksum);
}
}
}
Utilización.
Al encender el arduino nano en el display primero mostrara que esta buscando la señal GPS indicando que se esta conectando a los satélites tomara un par de minutos cuando se haya conectado en el display primero mostrara los valores de la latitud y longitud luego mostrara el del día, mes, año, hora, minutos y segundos.
Se puede verificar la informacion de la altitud y longitud poniendo esos valores en Google Maps.
Conclusiones.
Miguel Huchim: Para concluir, el proyecto demostró la facilidad con la que se puede obtener información precisa sin tener que tener conexión a Internet o alguna aplicación.
Isaac Segura: Este proyecto representa una solución tecnológica que proporciona datos precisos de ubicación y tiempo de manera accesible y útil.
Referencias.
Campo, M. del. (1970). Geolocalización con módulo GPS GY-NEO6MV2 y LCD 1602. Retrieved from https://miarduinounotieneunblog.blogspot.com/2016/02/geolocalizacion-con-modulo-gps-gy.html
Leantec.ES, W. by leantec. E. E. de, leantec.ES, W. by, Leantec.ES, E. de, dice:, J. C., dice:, J., dice:, G., … Nombre. (2019). Tutorial Arduino: Modulo GPS GPS6MV2. Retrieved from https://leantec.es/tutorial-arduino-modulo-gps-gps6mv2/