Hay muchos satélites GPS alrededor de la Tierra que se utilizan para proporcionar la ubicación exacta de cualquier lugar. Junto con las coordenadas de ubicación (latitud y longitud), también proporciona otros datos como la hora, la fecha, la altitud, el ángulo de seguimiento de la dirección, etc. Ya hemos aprendido a leer estos datos de GPS desde el satélite usando Arduino. Así que vamos a hacer un reloj GPS usando los datos de 'Fecha y hora' del satélite GPS. El reloj actualizado con GPS es muy preciso y proporciona datos en tiempo real con una precisión de milisegundos.
Componentes:
- Arduino Uno
- Módulo GPS
- LCD de 16x2
- Cables de conexión
- Fuente de alimentación
Explicación de trabajo:
El módulo GPS envía los datos en formato NMEA, vea la salida de datos GPS en la siguiente captura de pantalla. El formato NMEA consta de varias oraciones, en las que necesitamos una oración para extraer la fecha y la hora. Esta oración comienza en $ GPRMC y contiene las coordenadas, la hora y otra información útil. Este $ GPRMC se refiere a los datos de tránsito / GPS específicos mínimos recomendados, y la longitud de esta cadena es de aproximadamente 70 caracteres. Hemos extraído previamente la cadena $ GPGGA en el sistema de seguimiento de vehículos para encontrar las coordenadas de latitud y longitud. Aquí está la salida de GPS:
Y la cadena $ GPRMC contiene principalmente velocidad, hora, fecha y posición
$ GPRMC, 123519.000, A, 7791.0381, N, 06727.4434, E, 022.4,084.4,230394,003.1, W * 6 A $ GPRMC, HHMMSS.SSS, A, latitud, N, longitud, E, velocidad, ángulo, fecha, MV, W, CMD
Identificador |
Descripción |
RMC |
Oración mínima recomendada C |
HHMMSS.SSS |
Hora en formato de horas, minutos, segundos y milisegundos. |
UN |
Estado // A = activo y V = vacío |
Latitud |
Latitud 49 grados. 16,45 min. norte |
norte |
Dirección N = Norte, S = Sur |
Longitud |
Longitud (coordinada) |
mi |
Dirección E = Este, W = Oeste |
Velocidad |
velocidad en nudos |
Ángulo |
Ángulo de seguimiento en grados |
Fecha |
DATE en UTC |
MV |
Variación magnética |
W |
Dirección de variación E / W |
CMD (* 6A) |
Datos de suma de comprobación |
Podemos extraer la fecha y la hora de la cadena $ GPRMC contando las comas en la cadena. Con la ayuda de Arduino y la programación, encontramos la cadena $ GPRMC y la almacenamos en una matriz, luego la hora (formato de 24 horas) se puede encontrar después de una coma y la fecha después de nueve comas. La hora y la fecha se guardan además en cadenas.
Un satélite GPS proporciona la hora y la fecha en hora universal coordinada (UTC), por lo que debemos convertirlo en consecuencia. Para convertir según la hora de la India, hemos agregado 5:30 en la hora UTC, ya que la hora de la India está 5 horas y media por delante de UTC / GMT.
Diagrama de circuito:
Las conexiones de los circuitos del reloj GPS Arduino son sencillas. Arduino se utiliza para controlar todo el proceso, recibe los datos GPS del satélite a través del módulo GPS, extrae la fecha y la hora de la cadena $ GPRMC y la muestra en la pantalla LCD.
Los pines de datos D4, D5, D6, D7 de la pantalla LCD 16x2 están conectados al pin no. 5, 4, 3, 2 de Arduino y el pin de comando RS y EN de LCD están conectados al pin 7 y 6 de Arduino respectivamente. El pin Tx del módulo receptor GPS está conectado al pin 10 de Rx de Arduino. El PIN de tierra de Arduino y GPS están conectados entre sí. Aquí hemos utilizado el módulo GPS SKG13BL, que funciona a una velocidad de transmisión de 9800 bps. Arduino también se configura a una tasa de baudios de 9800 bps mediante la función "Serial.begin (9800)".
Explicación de programación:
En la primera parte de programación, incluimos bibliotecas y definimos pines para la comunicación en serie de LCD y software. También defina alguna variable con matrices para almacenar datos. Al usar Software Serial Library aquí, permitimos la comunicación serial en los pines 10 y 11, y los hicimos Rx y Tx respectivamente. Por defecto, los pines 0 y 1 de Arduino se utilizan para la comunicación en serie, pero al usar la biblioteca SoftwareSerial, podemos permitir la comunicación en serie en otros pines digitales del Arduino
#incluir
Después, hemos inicializado la comunicación en serie y la pantalla LCD en la función de configuración y mostramos un mensaje de bienvenida en la pantalla LCD.
Luego, hemos extraído la hora y la fecha de la cadena recibida.
mientras (x
Y luego convierta la hora y la fecha a decimal y modifíquela a la hora de la India (UTC +5: 30)
int UTC_hourDec = UTC_hour.toInt (); int UTC_minutDec = UTC_minut.toInt (); int Second = UTC_second.toInt (); int Fecha = UTC_date.toInt (); int Mes = UTC_month.toInt ();……………
Y finalmente, la hora y la fecha se han mostrado en la pantalla LCD usando la función lcd.print , verifique el código completo a continuación.