Es gibt viele GPS-Satelliten auf der Erde, die verwendet werden, um den genauen Standort eines beliebigen Ortes zu ermitteln. Neben den Standortkoordinaten (Breite und Länge) werden auch andere Daten wie Uhrzeit, Datum, Höhe, Richtungswinkel usw. bereitgestellt. Wir haben bereits gelernt, diese GPS-Daten von Satellite mit Arduino zu lesen. Wir werden also eine GPS-Uhr mit den Daten von Uhrzeit und Datum des GPS-Satelliten erstellen. GPS Updated Clock ist sehr genau und liefert die Echtzeitdaten mit einer Genauigkeit von Millisekunden.
Komponenten:
- Arduino Uno
- GPS-Modul
- 16x2 LCD
- Kabel anschließen
- Energieversorgung
Arbeitserklärung:
Das GPS-Modul sendet die Daten im NMEA-Format. Die Ausgabe der GPS-Daten finden Sie im folgenden Screenshot. Das NMEA-Format besteht aus mehreren Sätzen, in denen wir einen Satz benötigen, um Datum und Uhrzeit zu extrahieren. Dieser Satz beginnt bei $ GPRMC und enthält die Koordinaten, die Zeit und andere nützliche Informationen. Diese $ GPRMC bezieht sich auf empfohlene minimale spezifische GPS / Transit-Daten, und die Länge dieser Zeichenfolge beträgt ca. 70 Zeichen. Wir haben zuvor eine $ GPGGA- Zeichenfolge im Fahrzeugverfolgungssystem extrahiert, um die Breiten- und Längengradkoordinaten zu ermitteln. Hier ist die GPS-Ausgabe:
Die $ GPRMC-Zeichenfolge enthält hauptsächlich Geschwindigkeit, Uhrzeit, Datum und Position
$ GPRMC, 123519.000, A, 7791.0381, N, 06727.4434, E, 022.4.0844.230394.003,1, W * 6 A $ GPRMC, HHMMSS.SSS, A, Breite, N, Länge, E, Geschwindigkeit, Winkel, Datum, MV, W, CMD
Kennung |
Beschreibung |
RMC |
Empfohlener Mindestsatz C. |
HHMMSS.SSS |
Zeit in Stunden, Minuten, Sekunden und Millisekunden. |
EIN |
Status // A = aktiv und V = ungültig |
Breite |
Breitengrad 49 Grad. 16,45 min. Norden |
N. |
Richtung N = Nord, S = Süd |
Längengrad |
Längengrad (Koordinate) |
E. |
Richtung E = Ost, W = West |
Geschwindigkeit |
Geschwindigkeit in Knoten |
Winkel |
Verfolgungswinkel in Grad |
Datum |
DATUM in UTC |
MV |
Magnetische Variation |
W. |
Variationsrichtung E / W. |
CMD (* 6A) |
Prüfsummen-Daten |
Wir können Zeit und Datum aus der $ GPRMC-Zeichenfolge extrahieren, indem wir die Kommas in der Zeichenfolge zählen. Mit Hilfe von Arduino und Programmierung finden wir den $ GPRMC-String und speichern ihn in einem Array. Dann wird die Zeit (24-Stunden-Format) nach einem Komma und das Datum nach neun Kommas gefunden. Uhrzeit und Datum werden weiterhin in Zeichenfolgen gespeichert.
Ein GPS-Satellit liefert Uhrzeit und Datum in koordinierter Weltzeit (UTC), daher müssen wir sie entsprechend konvertieren. Um nach indischer Zeit umzurechnen, haben wir 5:30 UTC-Zeit hinzugefügt, da die indische Zeit 5 ½ Stunden vor UTC / GMT liegt.
Schaltplan:
Die Schaltungsverbindungen der Arduino GPS-Uhr sind einfach. Arduino wird verwendet, um den gesamten Prozess zu steuern. Es empfängt die GPS-Daten vom Satelliten über das GPS-Modul, extrahiert Datum und Uhrzeit aus der $ GPRMC-Zeichenfolge und zeigt sie auf dem LCD an.
Die Datenpins D4, D5, D6, D7 des 16x2-LCD sind mit Pin-Nr. 5, 4, 3, 2 von Arduino und der Befehlspin RS und EN von LCD sind mit Pin 7 bzw. 6 von Arduino verbunden. Der Tx-Pin des GPS-Empfängermoduls ist mit dem Rx-Pin 10 von Arduino verbunden. Die Erdungs-PIN von Arduino und GPS sind miteinander verbunden. Hier haben wir das SKG13BL GPS-Modul verwendet, das mit einer Baudrate von 9800 bps arbeitet. Arduino wird auch mit einer Baudrate von 9800 Bit / s mithilfe der Funktion „Serial.begin (9800)“ konfiguriert .
Programmiererklärung:
Im ersten Programmierteil schließen wir Bibliotheken ein und definieren Pins für die serielle LCD- und Software-Kommunikation. Definieren Sie auch eine Variable mit Arrays zum Speichern von Daten. Durch die Verwendung der Software Serial Library haben wir die serielle Kommunikation an Pin 10 und 11 zugelassen und sie auf Rx bzw. Tx eingestellt. Standardmäßig werden Pin 0 und 1 von Arduino für die serielle Kommunikation verwendet. Mithilfe der SoftwareSerial-Bibliothek können wir jedoch die serielle Kommunikation über andere digitale Pins des Arduino zulassen
#einschließen
Danach haben wir die serielle Kommunikation und das LCD in der Setup- Funktion initialisiert und eine Begrüßungsnachricht auf dem LCD angezeigt.
Dann haben wir Uhrzeit und Datum aus der empfangenen Zeichenfolge extrahiert.
während (x
Konvertieren Sie dann Zeit und Datum in Dezimalzahlen und ändern Sie sie in indische Zeit (UTC +5: 30).
int UTC_hourDec = UTC_hour.toInt (); int UTC_minutDec = UTC_minut.toInt (); int Second = UTC_second.toInt (); int Date = UTC_date.toInt (); int Month = UTC_month.toInt ();……………
Und schließlich wurden Uhrzeit und Datum mithilfe der Funktion lcd.print auf dem LCD angezeigt . Überprüfen Sie den vollständigen Code unten.