Maapallon ympärillä on monia GPS-satelliitteja, joita käytetään antamaan minkä tahansa paikan tarkka sijainti. Sijaintikoordinaattien (leveys- ja pituusaste) lisäksi se tarjoaa myös muita tietoja, kuten ajan, päivämäärän, korkeuden, suunnanseurantakulman jne. Olemme jo oppineet lukemaan nämä GPS-tiedot satelliitilta Arduinon avulla. Joten aiomme tehdä GPS-kellon käyttämällä GPS-satelliitin aika- ja päivämäärätietoja. GPS-päivitetty kello on erittäin tarkka ja tarjoaa reaaliaikaiset tiedot millisekuntien tarkkuudella.
Komponentit:
- Arduino Uno
- GPS-moduuli
- 16x2 LCD
- Johtojen liittäminen
- Virtalähde
Työselitys:
GPS-moduuli lähettää tiedot NMEA-muodossa, katso GPS-tietojen lähtö alla olevasta kuvakaappauksesta. NMEA-muoto koostuu useista lauseista, joissa tarvitsemme yhden lauseen päivämäärän ja kellonajan poimimiseksi. Tämä lause alkaa $ GPRMC: stä ja sisältää koordinaatit, ajan ja muuta hyödyllistä tietoa. Tätä $ GPRMC: tä kutsutaan suositelluksi GPS: n / kauttakulkuliikenteen suositelluksi vähimmäistiedoksi, ja tämän merkkijonon pituus on noin 70 merkkiä. Olemme aiemmin poimineet $ GPGGA- merkkijonon ajoneuvojen seurantajärjestelmästä etsimään leveys- ja pituuskoordinaatit. Tässä on GPS-lähtö:
Ja $ GPRMC-merkkijono sisältää pääasiassa nopeuden, ajan, päivämäärän ja sijainnin
$ GPRMC, 123519.000, A, 7791.0381, N, 06727.4434, E, 022.4.084.4,230394.003.1, W * 6 A $ GPRMC, HHMMSS.SSS, A, leveysaste, N, pituusaste, E, nopeus, kulma, päivämäärä, MV, W, CMD
Tunniste |
Kuvaus |
RMC |
Suositeltava vähimmäisrangaistus C |
HHMMSS.SSS |
Aika tunnissa sekunteina ja millisekunteina. |
A |
Tila // A = aktiivinen ja V = mitätön |
Leveysaste |
Leveysaste 49 astetta. 16,45 min. pohjoinen |
N |
Suunta N = pohjoinen, S = etelä |
Pituusaste |
Pituusaste (koordinaatti) |
E |
Suunta E = itä, W = länsi |
Nopeus |
nopeus solmuina |
Kulma |
Seurantakulma asteina |
Päivämäärä |
PÄIVÄYS UTC: na |
MV |
Magneettinen vaihtelu |
W |
Variaation suunta E / W |
CMD (* 6A) |
Tarkistussummatiedot |
Voimme poimia aika ja päivämäärä merkkijonosta $ GPRMC laskemalla merkkijonossa olevat pilkut. Arduinon ja ohjelmoinnin avulla löydämme $ GPRMC-merkkijonon ja tallennamme sen matriisiin, sitten Aika (24 tunnin muoto) löytyy yhden pilkun jälkeen ja Päivämäärä yhdeksän pilkun jälkeen. Aika ja päivämäärä tallennetaan edelleen merkkijonoihin.
GPS-satelliitti tarjoaa ajan ja päivämäärän koordinoituna universaalina aikana (UTC), joten meidän on muunnettava se vastaavasti. Muuntaaksemme Intian ajan mukaan olemme lisänneet kello 5.30 UTC-aikaan, koska Intian aika on 5 ja puoli tuntia edellä UTC / GMT.
Piirikaavio:
Virtapiirikytkentöihin of Arduino GPS Kello ovat yksinkertaisia. Arduinoa käytetään koko prosessin hallintaan, se vastaanottaa GPS-tiedot satelliitilta GPS-moduulin kautta, poimii päivämäärän ja kellonajan $ GPRMC -merkkijonosta ja näyttää sen LCD-näytöllä.
16x2 LCD: n datanastat D4, D5, D6, D7 on kytketty nastaan nro. Arduinon 5, 4, 3, 2 ja nestekidenäytön komentotappi RS ja EN on kytketty Arduinon napaan 7 ja 6. GPS-vastaanottimen moduuli Tx-nasta on kytketty Arduinon Rx-nastaan 10. Arduinon maadoitettu PIN-koodi ja GPS on kytketty toisiinsa. Tässä olemme käyttäneet SKG13BL GPS-moduulia, joka toimii 9800 bps: n siirtonopeudella. Arduino on myös määritetty 9800 bps: n siirtonopeudelle käyttämällä toimintoa “Serial.begin (9800)”.
Ohjelmoinnin selitys:
Ohjelmointiosaan sisällytämme ensin kirjastot ja määritämme nastat LCD- ja ohjelmistojen sarjaliikenteeseen. Määritä myös joitain muuttujia matriiseilla tietojen tallentamista varten. Käyttämällä tässä ohjelmistosarjakirjastoa olemme sallineet sarjaliikenteen nastoilla 10 ja 11 ja tehneet niistä vastaavasti Rx: n ja Tx: n. Oletusarvoisesti Arduinon nastoja 0 ja 1 käytetään sarjaliikenteeseen, mutta käyttämällä SoftwareSerial-kirjastoa voimme sallia sarjaliikenteen muille Arduinon digitaalisille nastoille
#sisältää
Sen jälkeen olemme alustaneet sarjaliikenteen ja LCD-näytön asetustoiminnossa ja osoittaneet tervetuloviestin LCD-näytöllä.
Sitten olemme purkaneet kellonajan ja päivämäärän vastaanotetusta merkkijonosta.
kun (x
Muunna sitten aika ja päivämäärä desimaaliksi ja muokkaa se Intian aikaan (UTC +5: 30)
int UTC_hourDec = UTC_hour.toInt (); int UTC_minutDec = UTC_minut.toInt (); int Second = UTC_second.toInt (); int Päivämäärä = UTC_pvm.toInt (); int Kuukausi = UTC_kuukausi.toInt ();……………
Ja sitten vihdoin aika ja päivämäärä on näytetty LCD-näytöllä käyttämällä lcd.print- toimintoa, tarkista koko koodi alla.