Det er mange GPS-satellitter rundt jorden som brukes til å gi den nøyaktige plasseringen av ethvert sted. Sammen med posisjonskoordinatene (Breddegrad og Lengdegrad), gir den også andre data som tid, dato, høyde, retningssporingsvinkel osv. Vi har allerede lært å lese disse GPS-dataene fra Satellite ved hjelp av Arduino. Så vi skal lage en GPS-klokke ved hjelp av 'Time and Date' data fra GPS-satellitten. GPS oppdatert klokke er veldig nøyaktig og gir sanntidsdata med presisjon på millisekunder.
Komponenter:
- Arduino Uno
- GPS-modul
- 16x2 LCD
- Koble ledninger
- Strømforsyning
Arbeidsforklaring:
GPS-modulen sender dataene i NMEA-format, se utdataene til GPS-data i skjermbildet nedenfor. NMEA-format består av flere setninger, der vi trenger en setning for å trekke ut dato og klokkeslett. Denne setningen starter fra $ GPRMC og inneholder koordinatene, tiden og annen nyttig informasjon. Denne $ GPRMC henvises til Anbefalte minimumsspesifikke GPS / transittdata, og lengden på denne strengen er omtrent 70 tegn. Vi har tidligere hentet $ GPGGA- streng i Vehicle Tracking System for å finne koordinatene for bredde og lengdegrad. Her er GPS-utgangen:
Og $ GPRMC-streng inneholder hovedsakelig hastighet, tid, dato og posisjon
$ GPRMC, 123519.000, A, 7791.0381, N, 06727.4434, E, 022.4,084.4,230394,003.1, W * 6 A $ GPRMC, HHMMSS.SSS, A, breddegrad, N, lengdegrad, E, hastighet, vinkel, dato, MV, W, CMD
Identifikator |
Beskrivelse |
RMC |
Anbefalt minimum setning C |
HHMMSS.SSS |
Tid i time minutt sekunder og millisekunder format. |
EN |
Status // A = aktiv og V = ugyldig |
Breddegrad |
Breddegrad 49 grader 16.45 min. Nord |
N |
Retning N = Nord, S = Sør |
Lengdegrad |
Lengdegrad (koordinat) |
E |
Retning E = Øst, W = Vest |
Hastighet |
fart i knop |
Vinkel |
Sporingsvinkel i grader |
Dato |
DATO i UTC |
MV |
Magnetisk variasjon |
W |
Retning for variasjon E / W |
CMD (* 6A) |
Kontrollsumdata |
Vi kan trekke ut tid og dato fra $ GPRMC-streng ved å telle kommaene i strengen. Ved hjelp av Arduino og programmering finner vi $ GPRMC-streng og lagrer den i en matrise, så kan Time (24-timersformat) bli funnet etter ett komma og dato kan bli funnet etter ni kommaer. Tid og dato lagres videre i strenger.
En GPS-satellitt gir tid og dato i Coordinated Universal Time (UTC), så vi må konvertere den deretter. For å konvertere i henhold til indisk tid, har vi lagt til 5:30 i UTC-tid, da indisk tid er 5 og en halv time foran UTC / GMT.
Kretsdiagram:
Kretsforbindelser til Arduino GPS-klokke er enkle. Arduino brukes til å kontrollere hele prosessen, den mottar GPS-data fra satellitt gjennom GPS-modul, trekker ut dato og klokkeslett fra $ GPRMC-strengen og viser dem på LCD.
Datapinnene D4, D5, D6, D7 på 16x2 LCD er koblet til pin nr. 5, 4, 3, 2 av Arduino og kommandopinne RS og EN på LCD er koblet til henholdsvis pinne 7 og 6 på Arduino. GPS-mottaker Modul Tx pin er koblet til Rx pin 10 av Arduino. Bakken PIN av Arduino og GPS er koblet til hverandre. Her har vi brukt SKG13BL GPS-modul, som opererer med 9800 bps baudrate. Arduino er også konfigurert til 9800 bps baudrate ved å bruke funksjonen "Serial.begin (9800)".
Programmeringsforklaring:
I programmeringsdelen først inkluderer vi biblioteker og definerer pins for LCD- og programvareseriekommunikasjon. Definer også noen variabler med matriser for lagring av data. Ved å bruke Software Serial Library her har vi tillatt seriell kommunikasjon på pin 10 og 11, og gjort dem til henholdsvis Rx og Tx. Som standard brukes pin 0 og 1 i Arduino til seriell kommunikasjon, men ved å bruke SoftwareSerial-biblioteket kan vi tillate seriell kommunikasjon på andre digitale pinner i Arduino
#inkludere
Etter det har vi initialisert seriell kommunikasjon og LCD i oppsettfunksjon og vist en velkomstmelding på LCD.
Så har vi hentet tid og dato fra den mottatte strengen.
mens (x
Og konverter deretter tid og dato til desimal og modifiser den til indisk tid (UTC +5: 30)
int UTC_hourDec = UTC_hour.toInt (); int UTC_minutDec = UTC_minut.toInt (); int Second = UTC_second.toInt (); int Dato = UTC_date.toInt (); int Måned = UTC_month.toInt ();……………
Og til slutt har Tid og dato blitt vist på LCD-skjermen ved hjelp av lcd.print- funksjonen, sjekk hele koden nedenfor.