Po Zemlji je veliko satelitov GPS, ki se uporabljajo za natančno določanje lokacije katerega koli kraja. Skupaj z lokacijskimi koordinatami (zemljepisna širina in dolžina) ponuja tudi druge podatke, kot so čas, datum, nadmorska višina, kot sledenja smeri itd. Te podatke GPS smo že naučili brati s satelita z uporabo Arduina. Torej bomo izdelali uro GPS z uporabo podatkov "Čas in datum" s satelita GPS. Posodobljena ura GPS je zelo natančna in zagotavlja podatke v realnem času z natančnostjo milisekund.
Sestavni deli:
- Arduino Uno
- GPS modul
- 16x2 LCD
- Priključne žice
- Napajanje
Delovna razlaga:
Modul GPS pošilja podatke v obliki NMEA, glejte izhodne podatke GPS na spodnjem posnetku zaslona. Oblika NMEA je sestavljena iz več stavkov, v katerih potrebujemo en stavek za izpis datuma in ure. Ta stavek se začne od $ GPRMC in vsebuje koordinate, čas in druge koristne informacije. Ta $ GPRMC se nanaša na Priporočeni najmanjši specifični GPS / Transit podatki, dolžina tega niza pa je približno 70 znakov. Pred tem smo v sistem za sledenje vozil izvlekli niz $ GPGGA, da smo našli koordinate zemljepisne širine in dolžine. Tu je izhod GPS:
In $ GPRMC niz glavnem vsebuje hitrost, čas, datum in položaj
$ GPRMC, 123519.000, A, 7791.0381, N, 06727.4434, E, 022.4,084.4,230394,003.1, W * 6 A $ GPRMC, HHMMSS.SSS, A, zemljepisna širina, N, zemljepisna dolžina, E, hitrost, kot, datum, MV, W, CMD
Identifikator |
Opis |
RMC |
Priporočen minimalni stavek C |
HHMMSS.SSS |
Čas v obliki ure v minuti in sekundah in milisekundah. |
A |
Stanje // A = aktivno in V = neveljavno |
Zemljepisna širina |
Geografska širina 49 ° 16,45 min. sever |
N |
Smer N = sever, S = jug |
Zemljepisna dolžina |
Zemljepisna dolžina (koordinata) |
E |
Smer E = vzhod, W = zahod |
Hitrost |
hitrost v vozlih |
Kot |
Kot sledenja v stopinjah |
Datum |
DATE v UTC |
MV |
Magnetna variacija |
W |
Smer variacije V / Z |
CMD (* 6A) |
Podatki o kontrolni vsoti |
Iz niza $ GPRMC lahko izvlečemo čas in datum s štetjem vejic v nizu. S pomočjo Arduina in programiranja najdemo niz $ GPRMC in ga shranimo v matriko, nato lahko po eni vejici najdemo čas (24-urni format), po devetih vejic pa datum. Čas in datum se nadalje shranita v nize.
Satelit GPS zagotavlja čas in datum v univerzalnem koordiniranem času (UTC), zato ga moramo ustrezno pretvoriti. Za pretvorbo po indijskem času smo dodali 5:30 po UTC času, saj je indijski čas 5 ur in pol pred UTC / GMT.
Shema vezja:
Vezje Arduino GPS Clock so preproste. Arduino se uporablja za nadzor celotnega procesa, preko GPS modula prejema podatke GPS s satelita, izvleče datum in čas iz niza $ GPRMC in jih prikaže na LCD-prikazovalniku.
Podatkovni zatiči D4, D5, D6, D7 16x2 LCD so priključeni na št. 5, 4, 3, 2 Arduina in ukazni zatič RS in EN LCD sta priključena na zatiča 7 in 6 Arduina. Zatič modula Tx modula sprejemnika GPS je povezan z zatičem Rx 10 Arduina. Ground PIN za Arduino in GPS sta med seboj povezana. Tu smo uporabili GPS modul SKG13BL, ki deluje s hitrostjo prenosa 9800 bps. Arduino je nastavljen tudi na hitrost prenosa 9800 bps s pomočjo funkcije "Serial.begin (9800)".
Pojasnilo programiranja:
V programski del najprej vključimo knjižnice in določimo nožice za serijsko komunikacijo LCD in programske opreme. Določite tudi nekaj spremenljivk z nizi za shranjevanje podatkov. Z uporabo programske serijske knjižnice tukaj smo dovolili serijsko komunikacijo na pin 10 in 11 in jih naredili Rx oziroma Tx. Privzeto se za zaporedno komunikacijo uporabljata pin 0 in 1 Arduina, z uporabo knjižnice SoftwareSerial pa lahko omogočimo serijsko komunikacijo na drugih digitalnih nožicah Arduina.
#include
Po njem smo inicializirali serijsko komunikacijo in LCD v nastavitveni funkciji ter na LCD-ju prikazali pozdravno sporočilo.
Nato smo iz prejetega niza izvlekli čas in datum.
medtem ko (x
In nato pretvorite čas in datum v decimalno in ga spremenite v indijski čas (UTC +5: 30)
int UTC_hourDec = UTC_hour.toInt (); int UTC_minutDec = UTC_minut.toInt (); int Drugi = UTC_second.toInt (); int Datum = UTC_date.toInt (); int mesec = UTC_month.toInt ();……………
In nato na LCD-prikazovalniku s funkcijo lcd.print končno prikažete čas in datum, preverite celotno kodo spodaj.