Der er mange GPS-satellitter rundt om jorden, der bruges til at give den nøjagtige placering af ethvert sted. Sammen med placeringskoordinaterne (bredde og længdegrad) giver det også andre data som tid, dato, højde, retningssporingsvinkel osv. Vi har allerede lært at læse disse GPS-data fra satellit ved hjælp af Arduino. Så vi skal lave et GPS-ur ved hjælp af 'Time and Date'-data fra GPS-satellitten. GPS-opdateret ur er meget nøjagtigt og giver realtidsdata med præcision på millisekunder.
Komponenter:
- Arduino Uno
- GPS-modul
- 16x2 LCD
- Tilslutning af ledninger
- Strømforsyning
Arbejdsforklaring:
GPS-modul sender data i NMEA-format, se output af GPS-data i nedenstående skærmbillede. NMEA-format består af flere sætninger, hvor vi har brug for en sætning for at udtrække dato og klokkeslæt. Denne sætning starter fra $ GPRMC og indeholder koordinater, tid og anden nyttig information. Denne $ GPRMC henvises til Anbefalet minimumsspecifik GPS / Transit-data, og længden af denne streng er ca. 70 tegn. Vi har tidligere ekstraheret $ GPGGA- streng i Vehicle Tracking System for at finde bredde- og længdegradskoordinaterne. Her er GPS-output:
Og $ GPRMC-streng indeholder hovedsageligt hastighed, tid, dato og position
$ 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, længdegrad, E, hastighed, vinkel, dato, MV, W, CMD
Identifikator |
Beskrivelse |
RMC |
Anbefalet minimumssætning C |
HHMMSS.SSS |
Tid i time minut sekunder og millisekunder format. |
EN |
Status // A = aktiv og V = ugyldig |
Breddegrad |
Breddegrad 49 grader 16.45 min. Nord |
N |
Retning N = Nord, S = Syd |
Længde |
Længdegrad (Koordinat) |
E |
Retning E = øst, W = vest |
Hastighed |
hastighed i knob |
Vinkel |
Sporingsvinkel i grader |
Dato |
DATO i UTC |
MV |
Magnetisk variation |
W |
Retning af variation E / W |
CMD (* 6A) |
Data om kontrolsum |
Vi kan udtrække tid og dato fra $ GPRMC-streng ved at tælle kommaerne i strengen. Ved hjælp af Arduino og programmering finder vi $ GPRMC-streng og gemmer den i en matrix, så kan Time (24-timers format) findes efter et komma, og dato kan findes efter ni kommaer. Tid og dato gemmes yderligere i strenge.
En GPS-satellit giver tid og dato i UTC (Coordinated Universal Time), så vi er nødt til at konvertere den i overensstemmelse hermed. For at konvertere i henhold til indisk tid, har vi tilføjet 5:30 i UTC-tid, da indisk tid er 5 og en halv time før UTC / GMT.
Kredsløbsdiagram:
Kredsløbstilslutninger på Arduino GPS-ur er enkle. Arduino bruges til at kontrollere hele processen, den modtager GPS-data fra satellit via GPS-modul, udtrækker dato og tid fra $ GPRMC-strengen og viser dem på LCD.
Datapinde D4, D5, D6, D7 på 16x2 LCD er tilsluttet pin nr. 5, 4, 3, 2 af Arduino og kommando pin RS og EN på LCD er forbundet til henholdsvis pin 7 og 6 i Arduino. GPS-modtager Modul Tx-pin er forbundet til Rx-pin 10 i Arduino. Jord-PIN for Arduino og GPS er forbundet med hinanden. Her har vi brugt SKG13BL GPS-modul, der fungerer ved 9800 bps baudrate. Arduino er også konfigureret til 9800 bps baudrate ved hjælp af funktionen "Serial.begin (9800)".
Programmeringsforklaring:
I programmeringsdelen først inkluderer vi biblioteker og definerer ben til LCD & seriel kommunikation. Definer også nogle variabler med arrays til lagring af data. Ved at bruge softwareseriebibliotek her har vi tilladt seriel kommunikation på pin 10 og 11 og gjort dem til henholdsvis Rx og Tx. Som standard bruges pin 0 og 1 i Arduino til seriel kommunikation, men ved hjælp af SoftwareSerial-bibliotek kan vi tillade seriel kommunikation på andre digitale pins i Arduino
#omfatte
Efter det har vi initialiseret seriel kommunikation og LCD i opsætningsfunktion og vist en velkomstbesked på LCD.
Så har vi udtrukket tid og dato fra den modtagne streng.
mens (x
Og konverter derefter tid og dato til decimal og rediger 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 så er tid og dato endelig blevet vist på LCD ved hjælp af lcd.print- funktionen, tjek den fulde kode nedenfor.