Det finns många GPS-satelliter runt jorden som används för att ge den exakta platsen för vilken plats som helst. Tillsammans med platskoordinaterna (latitud och longitud) tillhandahåller den också andra data som tid, datum, höjd, riktningsspårningsvinkel etc. Vi har redan lärt oss att läsa denna GPS-data från satellit med Arduino. Så vi ska göra en GPS-klocka med hjälp av 'Time and Date'-data från GPS-satelliten. GPS uppdaterad klocka är mycket exakt och ger realtidsdata med precision på millisekunder.
Komponenter:
- Arduino Uno
- GPS-modul
- 16x2 LCD
- Anslutande ledningar
- Strömförsörjning
Arbetsförklaring:
GPS-modulen skickar data i NMEA-format, se utdata från GPS-data i nedanstående skärmdump. NMEA-formatet består av flera meningar, där vi behöver en mening för att extrahera datum och tid. Denna mening börjar från $ GPRMC och innehåller koordinater, tid och annan användbar information. Denna $ GPRMC hänvisas till Rekommenderad minsta specifika GPS / Transit-data, och längden på denna sträng är cirka 70 tecken. Vi har tidigare extraherat $ GPGGA- sträng i Vehicle Tracking System för att hitta koordinaterna för latitud och longitud. Här är GPS-utgången:
Och $ GPRMC-strängen innehåller främst hastighet, tid, datum och 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, latitud, N, longitud, E, hastighet, vinkel, datum, MV, W, CMD
Identifierare |
Beskrivning |
RMC |
Rekommenderad minsta mening C |
HHMMSS.SSS |
Tid i timme minut sekunder och millisekunder format. |
A |
Status // A = aktiv och V = ogiltig |
Latitud |
Latitud 49 grader 16.45 min. Norr |
N |
Riktning N = Nord, S = Syd |
Longitud |
Longitud (koordinat) |
E |
Riktning E = öst, W = väst |
Fart |
hastighet i knop |
Vinkel |
Spårvinkel i grader |
Datum |
DATUM i UTC |
MV |
Magnetisk variation |
W |
Riktning av variation E / W |
CMD (* 6A) |
Data för kontrollsumman |
Vi kan extrahera tid och datum från $ GPRMC-strängen genom att räkna komma i strängen. Med hjälp av Arduino och programmering hittar vi $ GPRMC-sträng och lagrar den i en matris, då kan Time (24-timmarsformat) hittas efter ett komma och Datum kan hittas efter nio komma. Tid och datum sparas ytterligare i strängar.
En GPS-satellit tillhandahåller tid och datum i Coordinated Universal Time (UTC), så vi måste konvertera den därefter. För att konvertera in enligt indisk tid har vi lagt till 5:30 i UTC-tid, eftersom indisk tid är 5 och en halv timme före UTC / GMT.
Kretsschema:
Kretsanslutningar på Arduino GPS-klocka är enkla. Arduino används för att styra hela processen, den tar emot GPS-data från satellit via GPS-modulen, extraherar datum och tid från $ GPRMC-strängen och visar den på LCD.
Datapinnar D4, D5, D6, D7 på 16x2 LCD är anslutna till stift nr. 5, 4, 3, 2 av Arduino och kommandostift RS och EN på LCD är anslutna till stift 7 respektive 6 på Arduino. GPS-mottagarmodul Tx-stift är ansluten till Rx-stift 10 i Arduino. Jord-PIN för Arduino och GPS är anslutna till varandra. Här har vi använt GPS-modulen SKG13BL, som arbetar med överföringshastighet på 9800 bps. Arduino är också konfigurerad till 9800 bps baudhastighet med hjälp av funktionen "Serial.begin (9800)".
Programmeringsförklaring:
I programmeringsdelen först inkluderar vi bibliotek och definierar stift för LCD- och mjukvaruseriekommunikation. Definiera också en variabel med matriser för lagring av data. Genom att använda Software Serial Library här har vi tillåtit seriekommunikation på stift 10 och 11 och gjort dem till Rx respektive Tx. Som standard används stift 0 och 1 i Arduino för seriell kommunikation men med hjälp av SoftwareSerial-biblioteket kan vi tillåta seriell kommunikation på andra digitala stift i Arduino
#omfatta
Efter det har vi initierat seriell kommunikation och LCD i installationsfunktionen och visat ett välkomstmeddelande på LCD.
Sedan har vi extraherat tid och datum från den mottagna strängen.
medan (x
Och konvertera sedan tid och datum till decimal och ändra det till indisk tid (UTC +5: 30)
int UTC_hourDec = UTC_hour.toInt (); int UTC_minutDec = UTC_minut.toInt (); int Second = UTC_second.toInt (); int Datum = UTC_date.toInt (); int månad = UTC_month.toInt ();……………
Och sedan har tid och datum visats på LCD-skärmen med hjälp av lcd.print- funktionen, kontrollera hela koden nedan.