Există mulți sateliți GPS în jurul Pământului care sunt folosiți pentru a oferi locația exactă a oricărui loc. Împreună cu coordonatele de locație (latitudine și longitudine), oferă și alte date, cum ar fi ora, data, altitudinea, unghiul de urmărire a direcției etc. Am învățat deja să citim aceste date GPS din satelit folosind Arduino. Deci, vom crea un ceas GPS folosind datele „Ora și data” de pe satelitul GPS. GPS Update Clock este foarte precis și oferă date în timp real cu precizie de milisecunde.
Componente:
- Arduino Uno
- Modul GPS
- 16x2 LCD
- Conectarea firelor
- Alimentare electrică
Explicație de lucru:
Modulul GPS trimite datele în format NMEA, consultați ieșirea datelor GPS în imaginea de mai jos. Formatul NMEA constă în mai multe propoziții, în care avem nevoie de o propoziție pentru a extrage data și ora. Această propoziție începe de la $ GPRMC și conține coordonatele, timpul și alte informații utile. Acest $ GPRMC este menționat la date GPS / tranzit minime recomandate, iar lungimea acestui șir este de aproximativ 70 de caractere. Am extras anterior șirul GPGGA $ în sistemul de urmărire a vehiculelor pentru a găsi coordonatele de latitudine și longitudine. Iată ieșirea GPS:
Și $ GPRMC șir conține în principal, viteza, ora, data și poziția
$ GPRMC, 123519.000, A, 7791.0381, N, 06727.4434, E, 022.4.084.4,230394,003.1, W * 6 A $ GPRMC, HHMMSS.SSS, A, latitudine, N, longitudine, E, viteză, unghi, dată, MV, W, CMD
Identificator |
Descriere |
RMC |
Recomandat Frază minimă C |
HHMMSS.SSS |
Timp în oră minut secunde și format de milisecunde. |
A |
Stare // A = activ și V = nul |
Latitudine |
Latitudine 49 grade 16.45 min. Nord |
N |
Direcția N = Nord, S = Sud |
Longitudine |
Longitudine (coordonată) |
E |
Direcția E = Est, W = Vest |
Viteză |
viteza în noduri |
Unghi |
Unghiul de urmărire în grade |
Data |
DATE în UTC |
MV |
Variație magnetică |
W |
Direcția variației E / W |
CMD (* 6A) |
Date privind suma de verificare |
Putem extrage Ora și Data din șirul $ GPRMC numărând virgulele din șir. Cu ajutorul Arduino și al programării, găsim șirul $ GPRMC și îl stocăm într-o matrice, apoi Ora (format 24 de ore) poate fi găsită după o virgulă și Data poate fi găsită după nouă virgule. Ora și data sunt salvate în continuare în șiruri.
Un satelit GPS oferă ora și data în ora universală coordonată (UTC), deci trebuie să-l convertim în consecință. Pentru a face conversia în funcție de ora indiană, am adăugat 5:30 la ora UTC, deoarece ora indiană este cu 5 ore și jumătate înaintea UTC / GMT.
Diagrama circuitului:
Conexiunile de circuit ale Arduino GPS Clock sunt simple. Arduino este folosit pentru a controla întregul proces, primește datele GPS de la satelit prin modulul GPS, extrage Data și Ora din șirul $ GPRMC și le arată pe LCD.
Pinii de date D4, D5, D6, D7 de 16x2 LCD sunt conectați la pinul nr. 5, 4, 3, 2 din Arduino și pinul de comandă RS și EN de pe LCD sunt conectate la pinul 7 și respectiv 6 din Arduino. Receptorul GPS Pinul modulului Tx este conectat la pinul Rx 10 al Arduino. PIN-ul de masă al Arduino și GPS sunt conectate între ele. Aici am folosit modulul GPS SKG13BL, care funcționează la o rată de baud de 9800 bps. Arduino este, de asemenea, configurat la 9800 bps baud rate folosind funcția „Serial.begin (9800)”.
Explicație de programare:
În prima parte a programării, includem biblioteci și definim pini pentru comunicații seriale LCD și software. De asemenea, definiți o variabilă cu tablouri pentru stocarea datelor. Folosind Software Serial Library aici, am permis comunicarea în serie pe pinii 10 și 11 și le-am făcut Rx și respectiv Tx. În mod implicit, pinul 0 și 1 din Arduino sunt utilizați pentru comunicații seriale, dar utilizând biblioteca SoftwareSerial, putem permite comunicarea serială pe alți pini digitali ai Arduino
#include
După aceasta, am inițializat comunicarea serială și LCD în funcția de configurare și am afișat un mesaj de bun venit pe LCD.
Apoi am extras ora și data din șirul primit.
în timp ce (x
Și apoi convertiți ora și data în zecimal și modificați-le în ora indiană (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 Month = UTC_month.toInt ();……………
Și apoi, în sfârșit, Ora și Data au fost afișate pe LCD folosind funcția lcd.print , verificați codul complet de mai jos.