Terdapat banyak satelit GPS di sekitar Bumi yang digunakan untuk memberikan lokasi yang tepat di mana-mana tempat. Bersama dengan koordinat lokasi (Lintang dan Bujur), ia juga menyediakan data lain seperti waktu, tarikh, ketinggian, sudut penjejakan arah dan lain-lain. Kami telah belajar membaca data GPS ini dari Satelit menggunakan Arduino. Oleh itu, kita akan membuat jam GPS menggunakan data 'Waktu dan Tarikh' dari satelit GPS. Jam Dikemas kini GPS sangat tepat dan memberikan data masa nyata dengan ketepatan milisaat.
Komponen:
- Arduino Uno
- Modul GPS
- LCD 16x2
- Menyambung wayar
- Bekalan kuasa
Penjelasan Kerja:
Modul GPS menghantar data dalam format NMEA, lihat output data GPS dalam tangkapan skrin di bawah. Format NMEA terdiri daripada beberapa ayat, di mana kita memerlukan satu ayat untuk mengekstrak Tarikh dan Masa. Kalimat ini bermula dari $ GPRMC dan mengandungi koordinat, masa dan maklumat berguna lain. Ini $ GPRMC disebut Disyorkan minimum tertentu data Transit GPS /, dan panjang tali ini adalah kira-kira 70 aksara. Kami sebelum ini mengekstrak rentetan $ GPGGA di Vehicle Tracking System untuk mencari Koordinat Lintang dan Bujur. Berikut adalah output GPS:
Dan $ GPRMC rentetan terutamanya mengandungi halaju, masa, tarikh dan kedudukan
$ GPRMC, 123519.000, A, 7791.0381, N, 06727.4434, E, 022.4,084.4,230394,003.1, W * 6 A $ GPRMC, HHMMSS.SSS, A, garis lintang, N, garis bujur, E, kelajuan, sudut, tarikh, MV, W, CMD
Pengenal |
Penerangan |
RMC |
Ayat minimum yang disyorkan C |
HHMMSS.SSS |
Masa dalam jam beberapa saat dan format milisaat. |
A |
Status // A = aktif dan V = tidak sah |
Latitud |
Lintang 49 darjah 16.45 min Utara |
N |
Arah N = Utara, S = Selatan |
Bujur |
Bujur (Koordinat) |
E |
Arah E = Timur, W = Barat |
Kepantasan |
kelajuan dalam simpulan |
Sudut |
Sudut penjejakan dalam darjah |
Tarikh |
TARIKH di UTC |
MV |
Variasi Magnetik |
W |
Arah variasi E / W |
CMD (* 6A) |
Data Checksum |
Kita boleh mengekstrak Masa dan Tarikh dari rentetan $ GPRMC dengan mengira koma dalam rentetan. Dengan bantuan Arduino dan pengaturcaraan, kami dapati rentetan $ GPRMC dan menyimpannya dalam array, kemudian Waktu (format 24 jam) dapat dijumpai setelah satu koma dan Tarikh dapat dijumpai setelah sembilan koma. Masa dan tarikh disimpan lebih jauh mengikut rentetan.
Satelit GPS menyediakan Waktu dan tarikh dalam Waktu Universal Terpadu (UTC), jadi kita perlu menukarnya dengan sewajarnya. Untuk menukar mengikut waktu India, kami telah menambah jam 5:30 dalam waktu UTC, kerana waktu India adalah 5 setengah jam lebih awal dari UTC / GMT.
Rajah Litar:
Sambungan litar Jam GPS Arduino sangat mudah. Arduino digunakan untuk mengawal keseluruhan proses, ia menerima data GPS dari satelit melalui modul GPS, mengekstrak Tarikh dan Waktu dari rentetan $ GPRMC dan menunjukkannya di LCD.
Pin data D4, D5, D6, D7 dari 16x2 LCD disambungkan ke pin no. 5, 4, 3, 2 Arduino dan pin arahan RS dan EN LCD masing-masing disambungkan ke pin 7 dan 6 dari Arduino. Modul penerima GPS pin Tx disambungkan ke pin Rx 10 dari Arduino. PIN tanah Arduino dan GPS dihubungkan antara satu sama lain. Di sini kita telah menggunakan modul GPS SKG13BL, beroperasi pada kadar baud 9800 bps. Arduino juga dikonfigurasi pada kecepatan baud 9800 bps dengan menggunakan fungsi "Serial.begin (9800)".
Penjelasan Pengaturcaraan:
Dalam bahagian pengaturcaraan pertama kami menyertakan perpustakaan dan menentukan pin untuk komunikasi bersiri LCD & perisian. Tentukan juga beberapa pemboleh ubah dengan tatasusunan untuk menyimpan data. Dengan menggunakan Perisian Serial Perpustakaan di sini, kami telah membenarkan komunikasi bersiri pada pin 10 dan 11, dan menjadikannya Rx dan Tx masing-masing. Secara default Pin 0 dan 1 dari Arduino digunakan untuk komunikasi bersiri tetapi dengan menggunakan perpustakaan SoftwareSerial, kami dapat membenarkan komunikasi bersiri pada pin digital lain dari Arduino
#sertakan
Setelah itu kami menginisialisasi komunikasi bersiri dan LCD dalam fungsi penyediaan dan menunjukkan mesej selamat datang di LCD.
Kemudian kami telah mengekstrak masa dan tarikh dari rentetan yang diterima.
semasa (x
Kemudian ubah waktu dan tarikh menjadi perpuluhan dan ubah ke waktu India (UTC +5: 30)
int UTC_hourDec = UTC_hour.toInt (); int UTC_minutDec = UTC_minut.toInt (); int Kedua = UTC_second.toInt (); int Tarikh = UTC_date.toInt (); int Bulan = UTC_month.toInt ();……………
Dan akhirnya Masa dan Tarikh ditunjukkan di LCD menggunakan fungsi cetakan lcd , periksa Kod lengkap di bawah.