Hi ha molts satèl·lits GPS al voltant de la Terra que s’utilitzen per proporcionar la ubicació exacta de qualsevol lloc. Juntament amb les coordenades d'ubicació (latitud i longitud), també proporciona altres dades com ara l'hora, la data, l'altitud, l'angle de seguiment de la direcció, etc. Ja hem après a llegir aquestes dades GPS des de satèl·lit mitjançant Arduino. Per tant, farem un rellotge GPS mitjançant les dades "Hora i data" del satèl·lit GPS. El rellotge actualitzat per GPS és molt precís i proporciona les dades en temps real amb una precisió de mil·lisegons.
Components:
- Arduino Uno
- Mòdul GPS
- LCD de 16x2
- Connexió de cables
- Font d'alimentació
Explicació de treball:
El mòdul GPS envia les dades en format NMEA; consulteu la sortida de les dades GPS a la captura de pantalla següent. El format NMEA consta de diverses frases, en què necessitem una frase per extreure la data i l’hora. Aquesta frase comença a partir de $ GPRMC i conté les coordenades, el temps i altra informació útil. Aquest $ GPRMC es refereix a dades GPS / trànsit mínimes específiques recomanades i la longitud d'aquesta cadena és d'aproximadament 70 caràcters. Prèviament, hem extret la cadena $ GPGGA al sistema de seguiment de vehicles per trobar les coordenades de latitud i longitud. Aquí teniu la sortida GPS:

I la cadena $ GPRMC conté principalment velocitat, hora, data i posició
$ 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, velocitat, angle, data, MV, W, CMD
|
Identificador |
Descripció |
|
RMC |
Frase mínima recomanada C |
|
HHMMSS.SSS |
Temps en format hora hora segon i mil·lisegons. |
|
A |
Estat // A = actiu i V = nul |
|
Latitud |
Latitud 49 graus 16.45 min. Nord |
|
N |
Direcció N = nord, S = sud |
|
Longitud |
Longitud (coordenada) |
|
E |
Direcció E = Est, O = Oest |
|
Velocitat |
velocitat en nusos |
|
Angle |
Angle de seguiment en graus |
|
Data |
DATE en UTC |
|
MV |
Variació magnètica |
|
W |
Direcció de variació E / W |
|
CMD (* 6A) |
Dades de suma de verificació |
Podem extreure l’hora i la data de la cadena $ GPRMC comptant les comes de la cadena. Amb l'ajut d'Arduino i la programació, trobem una cadena de $ GPRMC i l'emmagatzema en una matriu; llavors es pot trobar l'hora (format 24 hores) després d'una coma i la data després de nou comes. L'hora i la data es guarden en cadenes.
Un satèl·lit GPS proporciona l’hora i la data en temps universal coordinat (UTC), de manera que hem de convertir-lo en conseqüència. Per convertir-lo segons l'hora de l'Índia, hem afegit les 5:30 en hora UTC, ja que l'hora de l'Índia és 5 hores i mitja abans que UTC / GMT.
Esquema de connexions:
Les connexions de circuit d' Arduino GPS Clock són senzilles. Arduino s’utilitza per controlar tot el procés, rep les dades GPS del satèl·lit a través del mòdul GPS, extreu la data i l’hora de la cadena $ GPRMC i les mostra a la pantalla LCD.
Els pins de dades D4, D5, D6, D7 de 16x2 LCD estan connectats al pin núm. 5, 4, 3, 2 d'Arduino i el pin de comandament RS i EN de LCD estan connectats als pins 7 i 6 d'Arduino respectivament. El receptor GPS del mòdul Tx està connectat al pin Rx 10 d'Arduino. El PIN de terra d'Arduino i el GPS estan connectats entre si. Aquí hem utilitzat el mòdul GPS SKG13BL, que funciona a una velocitat de transmissió de 9800 bps. Arduino també es configura a una velocitat de transmissió de 9800 bps mitjançant la funció “Serial.begin (9800)”.

Explicació de la programació:
A la primera part de programació, incloem biblioteques i definim pins per a la comunicació en sèrie de programari i LCD. Definiu també algunes variables amb matrius per emmagatzemar dades. En fer servir la Biblioteca en sèrie de programari aquí, hem permès la comunicació en sèrie als pins 10 i 11 i els hem convertit en Rx i Tx respectivament. Per defecte, els pins 0 i 1 d’Arduino s’utilitzen per a la comunicació en sèrie, però mitjançant la biblioteca SoftwareSerial podem permetre la comunicació en sèrie en altres pins digitals de l’Arduino.
#incloure
Després d'això, hem inicialitzat la comunicació en sèrie i la pantalla LCD en funció de configuració i hem mostrat un missatge de benvinguda a la pantalla LCD.
A continuació, hem extret l'hora i la data de la cadena rebuda.
mentre que (x
I després converteix l'hora i la data en decimal i modifiqueu-les a l'hora índia (UTC +5: 30)
int UTC_hourDec = UTC_hour.toInt (); int UTC_minutDec = UTC_minut.toInt (); int Second = UTC_second.toInt (); int Data = UTC_date.toInt (); int Mes = UTC_month.toInt ();……………
I finalment, Data i hora, s'han mostrat a la pantalla LCD mitjançant la funció lcd.print , comproveu el codi complet a continuació.
