Maraming mga GPS satellite sa paligid ng Earth na ginagamit upang magbigay ng eksaktong lokasyon ng anumang lugar. Kasama ang mga coordinate ng lokasyon (Latitude at Longitude), nagbibigay din ito ng iba pang data tulad ng oras, petsa, altitude, direksyon ng pagsubaybay sa direksyon atbp. Natutunan na naming basahin ang data ng GPS na ito mula sa Satellite gamit ang Arduino. Gagawa kami ng isang orasan ng GPS gamit ang data na 'Oras at Petsa' mula sa GPS satellite. Ang Nai-update na Orasan ng GPS ay napaka-tumpak at nagbibigay ng data ng real time na may katumpakan ng mga milliseconds.
Mga Bahagi:
- Arduino Uno
- Modyul ng GPS
- 16x2 LCD
- Mga kumokonekta na mga wire
- Supply ng kuryente
Paggawa ng Paliwanag:
Ipinapadala ng module ng GPS ang data sa format na NMEA, tingnan ang output ng data ng GPS sa screenshot sa ibaba. Ang format na NMEA ay binubuo ng maraming mga pangungusap, kung saan kailangan namin ng isang pangungusap upang makuha ang Petsa at Oras. Ang pangungusap na ito ay nagsisimula sa $ GPRMC at naglalaman ng mga koordinasyon, oras at iba pang kapaki-pakinabang na impormasyon. Ang $ GPRMC na ito ay tinukoy sa Inirekumendang minimum na tukoy na data ng GPS / Transit, at ang haba ng string na ito ay halos 70 character. Nakuha namin dati ang $ GPGGA string sa Vehicle Tracking System upang makita ang Mga Coordinate ng Latitude at Longitude. Narito ang output ng GPS:
At ang string ng $ GPRMC higit sa lahat ay naglalaman ng tulin, oras, petsa at posisyon
$ GPRMC, 123519.000, A, 7791.0381, N, 06727.4434, E, 022.4,084.4,230394,003.1, W * 6 A $ GPRMC, HHMMSS.SSS, A, latitude, N, longitude, E, bilis, anggulo, petsa, MV, W, CMD
Identifier |
Paglalarawan |
RMC |
Inirekumendang Pinakamababang pangungusap C |
HHMMSS.SSS |
Oras sa oras na minuto segundo at format ng milliseconds. |
A |
Katayuan // A = aktibo at V = walang bisa |
Latitude |
Latitude 49 deg. 16.45 min. Hilaga |
N |
Direksyon N = Hilaga, S = Timog |
Longhitud |
Longhitud (Coordinate) |
E |
Direksyon E = Silangan, W = Kanluran |
Bilis |
bilis ng buhol |
Anggulo |
Angulo ng pagsubaybay sa degree |
Petsa |
PETSA sa UTC |
MV |
Pagkakaiba-iba ng Magnetic |
W |
Direksyon ng pagkakaiba-iba E / W |
CMD (* 6A) |
Data ng Checksum |
Maaari naming makuha ang Oras at Petsa mula sa $ GPRMC string sa pamamagitan ng pagbibilang ng mga kuwit sa string. Sa tulong ng Arduino at pagprograma, nakita namin ang string ng $ GPRMC at iniimbak ito sa isang array, pagkatapos ang Oras (24 na oras na format) ay matatagpuan pagkatapos ng isang kuwit at ang Petsa ay mahahanap pagkatapos ng siyam na kuwit. Ang oras at petsa ay karagdagang nai-save sa mga string.
Ang isang satellite ng GPS ay nagbibigay ng Oras at petsa sa Coordinated Universal Time (UTC), kaya kailangan nating baguhin ito nang naaayon. Upang mag-convert ayon sa oras ng India, nagdagdag kami ng 5:30 sa oras ng UTC, dahil ang oras ng India ay 5 at kalahating oras nang mas maaga sa UTC / GMT.
Diagram ng Circuit:
Ang mga koneksyon sa circuit ng Arduino GPS Clock ay simple. Ginagamit ang Arduino upang makontrol ang buong proseso, natatanggap nito ang data ng GPS mula sa satellite sa pamamagitan ng module ng GPS, kinukuha ang Petsa at Oras mula sa $ GPRMC string at ipinapakita ito sa LCD.
Ang mga data pin na D4, D5, D6, D7 ng 16x2 LCD ay konektado sa pin no. Ang 5, 4, 3, 2 ng Arduino at command pin RS at EN ng LCD ay konektado sa pin 7 at 6 ng Arduino ayon sa pagkakabanggit. Ang GPS receiver Module Tx pin ay konektado sa Rx pin 10 ng Arduino. Ang ground PIN ng Arduino at GPS ay konektado sa bawat isa. Dito ginamit namin ang module ng SKG13BL GPS, na tumatakbo sa 9800 bps baud rate. Ang Arduino ay naka-configure din sa 9800 bps baud rate sa pamamagitan ng paggamit ng function na "Serial.begin (9800)".
Paliwanag sa Programming:
Sa bahagi ng programa muna nagsasama kami ng mga aklatan at tinukoy ang mga pin para sa LCD at software na komunikasyon sa serial. Tukuyin din ang ilang variable na may mga array para sa pagtatago ng data. Sa pamamagitan ng paggamit ng Software Serial Library dito, pinayagan namin ang serial na komunikasyon sa pin 10 at 11, at ginawang Rx at Tx ayon sa pagkakabanggit. Bilang default ang Pin 0 at 1 ng Arduino ay ginagamit para sa serial na komunikasyon ngunit sa pamamagitan ng paggamit ng library ng SoftwareSerial, maaari naming payagan ang serial komunikasyon sa iba pang mga digital na pin ng Arduino
# isama
Pagkatapos nito ay nasimulan namin ang serial na komunikasyon at LCD sa pag- andar ng pag- setup at nagpakita ng isang maligayang mensahe sa LCD.
Pagkatapos ay nakuha namin ang oras at petsa na form na natanggap na string.
habang (x
At pagkatapos ay i-convert ang oras at petsa sa decimal at baguhin ito sa oras ng India (UTC +5: 30)
int UTC_hourDec = UTC_hour.toInt (); int UTC_minutDec = UTC_minut.toInt (); int Pangalawa = UTC_second.toInt (); int Date = UTC_date.toInt (); int Month = UTC_month.toInt ();……………
At sa wakas ay ipinakita ang Oras at Petsa sa LCD gamit ang lcd.print function, suriin ang buong Code sa ibaba.