Existem muitos satélites GPS ao redor da Terra que são usados para fornecer a localização exata de qualquer lugar. Junto com as coordenadas de localização (latitude e longitude), ele também fornece outros dados como hora, data, altitude, ângulo de rastreamento de direção, etc. Já aprendemos a ler esses dados de GPS do satélite usando o Arduino. Portanto, vamos fazer um relógio GPS usando os dados de 'Hora e Data' do satélite GPS. O GPS Atualizado Clock é muito preciso e fornece dados em tempo real com precisão de milissegundos.
Componentes:
- Arduino Uno
- Módulo GPS
- LCD 16x2
- Fios de conexão
- Fonte de energia
Explicação de trabalho:
O módulo GPS envia os dados no formato NMEA, veja a saída dos dados GPS na imagem abaixo. O formato NMEA consiste em várias frases, nas quais precisamos de uma frase para extrair a data e a hora. Esta frase começa em $ GPRMC e contém as coordenadas, hora e outras informações úteis. Este $ GPRMC é referido como dados de GPS / trânsito específicos mínimos recomendados, e o comprimento desta sequência é de cerca de 70 caracteres. Anteriormente, extraímos a string $ GPGGA no Vehicle Tracking System para encontrar as coordenadas de latitude e longitude. Aqui está a saída do GPS:
E a string $ GPRMC contém principalmente velocidade, hora, data e posição
$ GPRMC, 123519.000, A, 7791.0381, N, 06727.4434, E, 022.4.084.4,230394.003,1, W * 6 A $ GPRMC, HHMMSS.SSS, A, latitude, N, longitude, E, velocidade, ângulo, data, MV, W, CMD
Identificador |
Descrição |
RMC |
Frase mínima recomendada C |
HHMMSS.SSS |
Tempo em hora, minuto, segundo e formato milissegundos. |
UMA |
Status // A = ativo e V = vazio |
Latitude |
Latitude 49 graus. 16,45 min. Norte |
N |
Direção N = Norte, S = Sul |
Longitude |
Longitude (Coordenada) |
E |
Direção E = Leste, W = Oeste |
Rapidez |
velocidade em nós |
Ângulo |
Ângulo de rastreamento em graus |
Encontro |
DATE em UTC |
MV |
Variação Magnética |
W |
Sentido de variação E / W |
CMD (* 6A) |
Dados de soma de verificação |
Podemos extrair a hora e a data da string $ GPRMC contando as vírgulas na string. Com a ajuda do Arduino e da programação, encontramos a string $ GPRMC e a armazenamos em um array, então a hora (formato de 24 horas) pode ser encontrada após uma vírgula e a data pode ser encontrada após nove vírgulas. A hora e a data são posteriormente salvas em strings.
Um satélite GPS fornece data e hora em Tempo Universal Coordenado (UTC), portanto, precisamos convertê-lo de acordo. Para converter de acordo com o horário indiano, adicionamos 5:30 no horário UTC, já que o horário indiano está 5 horas e meia adiantado em relação ao UTC / GMT.
Diagrama de circuito:
As conexões dos circuitos do Arduino GPS Clock são simples. O Arduino é usado para controlar todo o processo, ele recebe os dados GPS do satélite através do módulo GPS, extrai a Data e Hora da string $ GPRMC e mostra no LCD.
Os pinos de dados D4, D5, D6, D7 do LCD 16x2 são conectados ao pino no. 5, 4, 3, 2 do Arduino e os pinos de comando RS e EN do LCD estão conectados aos pinos 7 e 6 do Arduino, respectivamente. O pino Tx do módulo receptor GPS está conectado ao pino 10 Rx do Arduino. O PIN de aterramento do Arduino e o GPS estão conectados um ao outro. Aqui, usamos o módulo GPS SKG13BL, operando a uma taxa de transmissão de 9800 bps. O Arduino também é configurado a uma taxa de transmissão de 9800 bps usando a função “Serial.begin (9800)”.
Explicação de programação:
Na parte de programação, primeiro incluímos bibliotecas e definimos pinos para LCD e comunicação serial de software. Defina também algumas variáveis com matrizes para armazenar dados. Usando a Biblioteca serial do software aqui, permitimos a comunicação serial nos pinos 10 e 11 e os tornamos Rx e Tx, respectivamente. Por padrão, os pinos 0 e 1 do Arduino são usados para comunicação serial, mas usando a biblioteca SoftwareSerial, podemos permitir a comunicação serial em outros pinos digitais do Arduino
#incluir
Depois disso, inicializamos a comunicação serial e o LCD na função de configuração e mostramos uma mensagem de boas-vindas no LCD.
Em seguida, extraímos a hora e a data da string recebida.
while (x
Em seguida, converta a hora e a data em decimal e modifique para a hora indiana (UTC +5: 30)
int UTC_hourDec = UTC_hour.toInt (); int UTC_minutDec = UTC_minut.toInt (); segundo int = UTC_segundo.toInt (); data int = UTC_date.toInt (); int Mês = UTC_month.toInt ();……………
E finalmente a hora e a data foram mostradas no LCD usando a função lcd.print , verifique o código completo abaixo.