Ada banyak satelit GPS di sekitar Bumi yang digunakan untuk memberikan lokasi yang tepat dari suatu tempat. Seiring dengan koordinat lokasi (Latitude dan Longitude), juga menyediakan data lain seperti waktu, tanggal, ketinggian, sudut pelacakan arah dll. Kita sudah belajar membaca data GPS ini dari Satelit menggunakan Arduino. Jadi kita akan membuat jam GPS dengan menggunakan data 'Waktu dan Tanggal' dari satelit GPS. Jam Pembaruan GPS sangat akurat dan memberikan data waktu nyata dengan presisi milidetik.
Komponen:
- Arduino Uno
- Modul GPS
- LCD 16x2
- Menghubungkan kabel
- Sumber Daya listrik
Penjelasan Kerja:
Modul GPS mengirimkan data dalam format NMEA, lihat keluaran data GPS pada gambar di bawah. Format NMEA terdiri dari beberapa kalimat, di mana kita membutuhkan satu kalimat untuk mengekstrak Tanggal dan Waktu. Kalimat ini dimulai dari $ GPRMC dan berisi koordinat, waktu, dan informasi berguna lainnya. Ini $ GPRMC disebut Data Transit Rekomendasi minimum tertentu GPS /, dan panjang string ini sekitar 70 karakter. Kami sebelumnya telah mengekstrak string $ GPGGA di Sistem Pelacakan Kendaraan untuk menemukan Koordinat Lintang dan Bujur. Berikut adalah keluaran GPS:
Dan string $ GPRMC terutama berisi kecepatan, waktu, tanggal, dan posisi
$ 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, speed, angle, date, MV, W, CMD
Pengenal |
Deskripsi |
RMC |
Kalimat Minimum yang Direkomendasikan C |
HHMMSS.SSS |
Waktu dalam format jam menit detik dan milidetik. |
SEBUAH |
Status // A = aktif dan V = batal |
Garis Lintang |
Lintang 49 derajat. 16.45 menit Utara |
N |
Arah N = Utara, S = Selatan |
Garis bujur |
Bujur (Koordinat) |
E |
Arah E = Timur, W = Barat |
Kecepatan |
kecepatan dalam knot |
Sudut |
Sudut pelacakan dalam derajat |
Tanggal |
DATE dalam UTC |
MV |
Variasi Magnetik |
W |
Arah variasi E / W |
CMD (* 6A) |
Data Checksum |
Kita dapat mengekstrak Waktu dan Tanggal dari string $ GPRMC dengan menghitung koma dalam string. Dengan bantuan Arduino dan pemrograman, kami menemukan string $ GPRMC dan menyimpannya dalam array, kemudian Waktu (format 24 jam) dapat ditemukan setelah satu koma dan Tanggal dapat ditemukan setelah sembilan koma. Waktu dan tanggal selanjutnya disimpan dalam string.
Satelit GPS menyediakan Waktu dan tanggal dalam Waktu Universal Terkoordinasi (UTC), jadi kita perlu mengubahnya sesuai kebutuhan. Untuk mengonversi menurut waktu India, kami telah menambahkan 5:30 dalam waktu UTC, karena waktu India adalah 5 setengah jam lebih awal dari UTC / GMT.
Diagram Sirkuit:
Koneksi sirkuit Arduino GPS Clock sederhana. Arduino digunakan untuk mengontrol seluruh proses, ia menerima data GPS dari satelit melalui modul GPS, mengekstrak Tanggal dan Waktu dari string $ GPRMC dan menampilkannya di LCD.
Pin data D4, D5, D6, D7 LCD 16x2 dihubungkan ke pin no. 5, 4, 3, 2 dari Arduino dan pin perintah RS dan EN LCD masing-masing terhubung ke pin 7 dan 6 dari Arduino. Pin Modul penerima GPS Tx terhubung ke pin Rx 10 Arduino. PIN ground Arduino dan GPS terhubung satu sama lain. Di sini kami telah menggunakan modul GPS SKG13BL, yang beroperasi pada kecepatan baud 9800 bps. Arduino juga dikonfigurasi pada 9800 bps baud rate dengan menggunakan fungsi “Serial.begin (9800)”.
Penjelasan Pemrograman:
Pada bagian pemrograman pertama kami menyertakan perpustakaan dan menentukan pin untuk LCD & komunikasi serial perangkat lunak. Juga tentukan beberapa variabel dengan array untuk menyimpan data. Dengan menggunakan Software Serial Library di sini, kami mengizinkan komunikasi serial pada pin 10 dan 11, dan membuatnya masing-masing menjadi Rx dan Tx. Secara default Pin 0 dan 1 Arduino digunakan untuk komunikasi serial tetapi dengan menggunakan perpustakaan SoftwareSerial, kami dapat mengizinkan komunikasi serial pada pin digital Arduino lainnya.
#include
Setelah itu kami telah menginisialisasi komunikasi serial dan LCD dalam fungsi setup dan menunjukkan pesan selamat datang pada LCD.
Kemudian kami mengekstrak waktu dan tanggal dari string yang diterima.
sementara (x
Dan kemudian ubah waktu dan tanggal menjadi desimal 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 Date = UTC_date.toInt (); int Month = UTC_month.toInt ();……………
Dan akhirnya Waktu dan Tanggal telah ditampilkan pada LCD menggunakan fungsi lcd.print , periksa Kode lengkap di bawah ini.