Dünyanın etrafında herhangi bir yerin tam konumunu sağlamak için kullanılan birçok GPS uydusu vardır. Konum koordinatlarının (Enlem ve Boylam) yanı sıra saat, tarih, yükseklik, yön izleme açısı vb. Gibi diğer verileri de sağlar. Bu GPS verilerini Arduino kullanarak Uydudan okumayı zaten öğrendik. Bu yüzden GPS uydusundan 'Saat ve Tarih' verilerini kullanarak bir GPS saati yapacağız. GPS Güncelleştirilmiş Saat çok doğrudur ve gerçek zamanlı verileri milisaniye hassasiyetinde sağlar.
Bileşenler:
- Arduino Uno
- GPS Modülü
- 16x2 LCD
- Bağlantı telleri
- Güç kaynağı
Çalışma Açıklaması:
GPS modülü verileri NMEA formatında gönderir, aşağıdaki ekran görüntüsünde GPS verilerinin çıktısına bakın. NMEA formatı, Tarih ve Saati çıkarmak için bir cümleye ihtiyacımız olan birkaç cümleden oluşur. Bu cümle $ GPRMC'den başlar ve koordinatları, zamanı ve diğer yararlı bilgileri içerir. Bu $ GPRMC, Önerilen minimum belirli GPS / Transit verileri olarak adlandırılır ve bu dizinin uzunluğu yaklaşık 70 karakterdir. Enlem ve Boylam Koordinatlarını bulmak için daha önce Araç Takip Sisteminde $ GPGGA dizesini çıkardık. GPS çıkışı şu şekildedir:
Ve $ GPRMC dizesi esas olarak hız, saat, tarih ve konumu içerir
$ GPRMC, 123519.000, A, 7791.0381, N, 06727.4434, E, 022.4,084.4,230394,003.1, W * 6 A $ GPRMC, HHMMSS.SSS, A, enlem, N, boylam, E, hız, açı, tarih, MV, W, CMD
Tanımlayıcı |
Açıklama |
RMC |
Önerilen Minimum cümle C |
HHMMSS.SSS |
Saat, dakika saniye ve milisaniye biçiminde zaman. |
Bir |
Durum // A = etkin ve V = geçersiz |
Enlem |
Enlem 49 derece. 16.45 dak. Kuzeyinde |
N |
Yön N = Kuzey, S = Güney |
Boylam |
Boylam (Koordinat) |
E |
Yön E = Doğu, W = Batı |
Hız |
deniz mili hız |
Açı |
Derece cinsinden izleme açısı |
Tarih |
UTC olarak DATE |
MV |
Manyetik Varyasyon |
W |
Varyasyon yönü E / W |
CMD (* 6A) |
Sağlama Verileri |
Dizedeki virgülleri sayarak $ GPRMC dizesinden Saat ve Tarihi çıkarabiliriz. Arduino ve programlama yardımıyla, $ GPRMC dizesini bulup bir dizide saklarız, ardından Zaman (24 saat biçimi) bir virgülden sonra bulunabilir ve Tarih dokuz virgülden sonra bulunabilir. Saat ve tarih ayrıca dizelerde kaydedilir.
Bir GPS uydusu, Eşgüdümlü Evrensel Saatte (UTC) Saat ve tarih sağlar, bu nedenle onu buna göre dönüştürmemiz gerekir. Hint saatine göre çevirmek için UTC saatine 5:30 ekledik, çünkü Hindistan saati UTC / GMT'den 5 buçuk saat ileride.
Devre şeması:
Arduino GPS Saatinin devre bağlantıları basittir. Arduino, tüm süreci kontrol etmek için kullanılır, GPS verilerini GPS modülü aracılığıyla uydudan alır, Tarih ve Saati $ GPRMC dizesinden çıkarır ve LCD'de gösterir.
16x2 LCD'nin D4, D5, D6, D7 veri pinleri no. Arduino'nun 5, 4, 3, 2 ve LCD'nin komut pinleri RS ve EN sırasıyla Arduino'nun 7. ve 6. pinlerine bağlanır. GPS alıcı Modül Tx pini Arduino'nun Rx pin 10'una bağlanır. Arduino ve GPS'in Ground PIN'i birbirine bağlıdır. Burada 9800 bps baud hızında çalışan SKG13BL GPS modülünü kullandık. Arduino ayrıca "Serial.begin (9800)" fonksiyonu kullanılarak 9800 bps baud hızında yapılandırılmıştır .
Programlama Açıklaması:
Programlama bölümünde ilk olarak kitaplıkları dahil ediyoruz ve LCD ve yazılım seri iletişimi için pinler tanımlıyoruz. Ayrıca verileri depolamak için dizilerle bazı değişkenler tanımlayın. Buradaki Software Serial Library'yi kullanarak pin 10 ve 11'de seri iletişime izin verdik ve sırasıyla Rx ve Tx yaptık. Varsayılan olarak Arduino'nun Pin 0 ve 1'i seri iletişim için kullanılır, ancak SoftwareSerial kitaplığını kullanarak, Arduino'nun diğer dijital pinlerinde seri iletişime izin verebiliriz.
#Dahil etmek
Bundan sonra, kurulum işlevinde seri iletişim ve LCD'yi başlattık ve LCD'de bir karşılama mesajı gösterdik.
Sonra alınan dizeden saat ve tarihi çıkardık.
süre (x
Ve sonra saati ve tarihi ondalık sayıya çevirin ve Hindistan saatine değiştirin (UTC +5: 30)
int UTC_hourDec = UTC_hour.toInt (); int UTC_minutDec = UTC_minut.toInt (); int İkinci = UTC_saniye.toInt (); int Tarih = UTC_date.toInt (); int Ay = UTC_month.toInt ();……………
Ve son olarak, LCD.print işlevi kullanılarak LCD'de Saat ve Tarih gösterildi, aşağıdaki Kodun tamamını kontrol edin.