NEO-6M GPS Modülü NMEA ve Arduino Bazı Bilgiler
22 uyduyu takip edebilen ve dünyanın herhangi bir yerindeki konumları belirleyebilen NEO-6M GPS Modülü ile bir sonraki Arduino projenize konumları algılama yeteneği kazandırın. GPS dünyasına girmek isteyen herkes için harika bir fırlatma rampası görevi görebilir.
Düşük güç tüketirler (pille çalışan cihazlar için uygundurlar), ucuzdurlar, arayüz oluşturmaları kolaydır ve hobiler arasında çılgınca popülerdirler.
GPS nasıl çalışır?
GPS alıcıları aslında birkaç uydudan ne kadar uzakta olduklarını tespit ederek çalışırlar. Herhangi bir zamanda GPS uydularının nerede olduğunu bilmek için önceden programlanmıştır.
Uydular, konumları ve şu anki zaman hakkında bilgileri Dünya'ya radyo sinyalleri şeklinde iletirler. Bu sinyaller uyduları tanımlar ve alıcıya nerede olduklarını söyler.
Alıcı daha sonra sinyallerin ulaşmasının ne kadar sürdüğünü hesaplayarak her bir uydunun ne kadar uzakta olduğunu hesaplar. En az üç uydunun ne kadar uzakta olduğu ve uzayda nerede oldukları hakkında bilgi sahibi olduktan sonra, Dünya'daki konumunuzu tam olarak belirleyebilir.
Bu süreç Üçlüleştirme olarak bilinir.
NEO-6M GPS Modülüne Donanıma Genel Bakış
NEO-6M GPS Çipi
Modülün merkezinde u-blox'un NEO-6M GPS çipi bulunuyor. Çip, bir posta pulu boyutundan daha küçüktür, ancak küçük çerçevesine şaşırtıcı miktarda özellik sığdırır.
50 kanalda 22'ye kadar uyduyu takip edebilir ve sadece 45mA besleme akımını tüketirken, endüstrinin en yüksek hassasiyet seviyesine, yani -161 dB izlemeye ulaşır.
Diğer GPS modüllerinden farklı olarak, 2.5m Yatay konum doğruluğu ile saniyede 5 adede kadar konum güncellemesi yapabilir. U-blox 6 konumlandırma motoru ayrıca 1 saniyenin altında İlk Düzeltme Süresi'ne (TTFF) sahiptir.
Çipin sağladığı en iyi özelliklerden biri Güç Tasarrufu Modu'dur (PSM). Alıcının parçalarını seçmeli olarak AÇIK ve KAPALI konuma getirerek sistem güç tüketiminde azalma sağlar. Bu, modülün güç tüketimini sadece 11mA'ya düşürerek GPS kol saati gibi güce duyarlı uygulamalar için uygun hale getirir.
NEO-6M GPS çipinin gerekli veri pinleri 0.1 ″ aralıklı başlıklara bölünmüştür. Bu, UART üzerinden bir mikro denetleyici ile iletişim için gerekli pimleri içerir. Modül, 9600 varsayılan baud ile 4800bps'den 230400bps'ye kadar olan baud hızını destekler.
İşte eksiksiz özellikler:
Konum Sabitleme LED Göstergesi
NEO-6M GPS Modülünde Konum Sabitleme durumunu gösteren bir LED vardır. Hangi durumda olduğuna bağlı olarak çeşitli hızlarda yanıp söner:
- Yanıp Sönme Yok - Uyduları arıyor.
- Her 1 saniyede bir yanıp söner - Konum Sabitleme bulunur (Modül yeterince uydu görebilir).
3.3V LDO Regülatörü
NEO-6M yongasının çalışma voltajı 2,7 ila 3,6V arasındadır. Ancak iyi haber şu ki, modül MICREL'in MIC5205 ultra düşük bırakma 3V3 regülatörü ile birlikte geliyor .
Mantık pinleri de 5 volt toleranslıdır, bu nedenle herhangi bir mantık seviyesi dönüştürücü kullanmadan bir Arduino veya herhangi bir 5V mantık mikrodenetleyicisine kolayca bağlayabiliriz.
Pil ve EEPROM
Modül bir HK24C32 iki kablolu seri EEPROM ile donatılmıştır . 4KB boyutundadır ve NEO-6M yongasına I2C üzerinden bağlanır.
Modül ayrıca bir süper kapasitör görevi gören yeniden şarj edilebilir bir düğme pil içerir.
Pil ile birlikte bir EEPROM, pil destekli RAM'in (BBR) korunmasına yardımcı olur . BBR saat verilerini, en son konum verilerini (GNSS yörünge verileri) ve modül yapılandırmasını içerir. Ancak kalıcı veri depolamaya yönelik değildir.
Pil saati ve son konumu koruduğu için, ilk sabitleme süresi (TTFF) önemli ölçüde 1 saniyeye düşer. Bu, çok daha hızlı konum kilitlerine izin verir.
Pil olmadan GPS her zaman soğuk başlar, bu nedenle ilk GPS kilidi daha fazla zaman alır.
Güç uygulandığında pil otomatik olarak şarj olur ve verileri güç olmadan iki haftaya kadar saklar .
Anten
Modülü her türlü iletişim için kullanmak için bir anten gereklidir. Yani modül -161 dBm hassasiyete sahip bir patch anten ile birlikte gelir.
Bu anteni modül üzerinde bulunan küçük U.FL konektörüne takabilirsiniz.
Yama anteni çoğu proje için harikadır. Ancak daha fazla hassasiyet elde etmek veya modülünüzü metal bir kasanın içine koymak istiyorsanız, U.FL konektörü aracılığıyla herhangi bir 3V aktif GPS antenini de takabilirsiniz.
İPUCU
U.FL konektörleri küçük, hassastır ve zorlanma için derecelendirilmemiştir. U.FL bağlantısının zarar görmesini önlemek için, U.FL kablosunu montaj deliğinden geçirmenizi ve ardından U.FL konektörlerini takmanızı öneririz.
NEO-6M GPS Modülü Pin Çıkışı
NEO-6M GPS modülü, kendisini dış dünyaya arayüzleyen toplam 4 pime sahiptir. Bağlantılar aşağıdaki gibidir:
GND Ground Pin'dir ve Arduino'daki GND pinine bağlanması gerekir.
TxD (Verici) pin seri iletişim için kullanılır.
RxD (Alıcı) pin seri iletişim için kullanılır.
VCCmodül için güç sağlar. Doğrudan Arduino üzerindeki 5V pinine bağlayabilirsiniz.
Arduino UNO ile NEO-6M GPS modülünün bağlantısı
Artık modül hakkında her şeyi bildiğimize göre, onu Arduino'muza bağlamaya başlayabiliriz!
Yama antenini U.FL konektörüne bağlayarak başlayın. Sağlam bağlantı için U.FL kablosunu montaj deliklerinden birinden geçirmeyi unutmayın.
Modül genellikle lehimlenmemiş başlık pimleri ile birlikte gelir. Yani, onları lehimlemeniz gerekecek.
Şimdi, modül üzerindeki Tx ve Rx pinlerini sırasıyla Arduino'daki dijital pin # 2 ve # 3'e bağlayın; modülle konuşmak için yazılım serisini kullanacağımızdan.
Ardından, VCC pinini arduino'daki 5V pinine ve GND'yi toprağa bağlayın.
Herhangi bir GPS alıcısının en iyi yanı, siz onları açar açmaz veri tükürmeye başlamasıdır.
Bu verileri test etmenin en iyi yolu, Arduino'yu USB'den TTL'ye Dönüştürücü olarak kullanmaktır. Aşağıdaki program tam da bunu yapar.
Programı yükleyin ve seri monitörü Arduino IDE'den açın. 9600 baud seçmeyi unutmayın. Aşağıdaki gibi bir metin görmelisiniz:
Seri arayüz üzerinden aldığınız veriler aslında NMEA cümleleridir .
NMEA, Ulusal Deniz Elektroniği Birliği'nin kısaltmasıdır . Bu neredeyse tüm GPS alıcıları için standart bir mesaj formatıdır.
NMEA standardı, cümleler adı verilen veri satırlarında biçimlendirilir. Bilgisayarlar ve mikro denetleyiciler tarafından ayrıştırılmasını kolaylaştırmak için her cümle virgülle ayrılmıştır.
Bu NMEA cümleleri, güncelleme hızı adı verilen bir aralıkta gönderilir.
NEO-6M GPS modülü bu bilgiyi varsayılan olarak saniyede bir (1Hz frekans) günceller. Ancak bunu saniyede 5 güncellemeye kadar (5Hz frekans) yapılandırabilirsiniz.
NMEA Cümlelerini Ayrıştırma
NMEA standardında birçok cümle vardır, en yaygın olanları şunlardır:
- $ GPRMC (Küresel Konumlandırma Önerilen Minimum Koordinatlar) saati, tarihi, enlemi, boylamı, rakımı ve tahmini hızı sağlar.
- $ GPGGA cümlesi, 3B konum ve doğruluk verileri sağlayan temel düzeltme verilerini sağlar.
Bir GPS alıcısından $ GPRMC NMEA cümlesine bir örnek verelim.
$ GPRMC, 123519, A, 4807.038, N, 01131.000, E, 022.4, 084.4, 230394, 003.1, W * 6A
$ GPGGA NMEA cümlesine bir örnek verelim.
$ GPGGA, 123519, 4807.038, K, 01131.000, E, 1, 08, 0.9, 545.4, M, 46.9, M, * 47
NMEA cümleleri ve içerdikleri veriler hakkında daha fazla bilgi için gpsinformation.org adresini ziyaret edin.
Arduino Kodu - TinyGPS Kitaplığı
Genellikle projelerimiz için, NMEA cümlelerini faydalı bilgilere ayrıştırmamız gerekir. Çalışmamızı kolaylaştırmak için TinyGPS ++ kütüphanesi adında bir kütüphanemiz var .
Bu kütüphane, arka planda yararlı verileri okumak ve çıkarmak gibi GPS modüllerinden veri almak için gereken çok fazla işi yapar. Yani, iğrenç ayrıştırma işi için endişelenmemize gerek yok.
Mikal Hart'a büyük katkılarından dolayı teşekkürler. Arduiniana.org adlı web sitesi , TinyGPS ++ kütüphanesinin tüm yeteneklerine tam bir genel bakış sunuyor.
Önce kütüphaneyi, GitHub deposunu ziyaret ederek indirin veya zip dosyasını indirmek için bu düğmeye tıklayın:
Kurmak için Arduino IDE'yi açın, Sketch> Include Library> Add .ZIP Library'ye gidin ve ardından indirdiğiniz TinyGPSPlus ZIP dosyasını seçin. Bir kitaplık kurma konusunda daha fazla ayrıntıya ihtiyacınız varsa, bu Arduino Kitaplığı Kurma öğreticisini ziyaret edin .
Kitaplığı kurduktan sonra, aşağıdaki çizimi Arduino IDE'ye kopyalayabilirsiniz.
Aşağıdaki test çizimi, seri monitörde konum bilgilerini (Enlem, Boylam ve Yükseklik) ve UTC'yi (Tarih ve Saat) yazdıracaktır. Krokiyi deneyin; ve sonra onu biraz detaylı olarak açıklayacağız.
Çıktı, seri monitörde böyle görünüyor.
Kod Açıklaması:
Taslak, TinyGPS ++ kitaplığı ve yazılım seri kitaplığı dahil edilerek başlar. Ardından, NEO-6M GPS modülünün bağlı olduğu ve varsayılan GPS baud hızını depolayan değişken olan arduino pinlerini tanımlıyoruz.
TinyGPSPlus
Nesne oluşturmak , kitaplıkla ilgili özel işlevlere erişmeye yardımcı olacaktır. Daha gpsSerial
sonra, modül ile konuşabileceğimiz bir yazılım seri portu oluşturuyoruz .
In setup
fonksiyonu, biz PC ile seri haberleşme yanı sıra GPS modülü başlatmak gerekiyor.
In loop
fonksiyonu dediğimiz displayInfo()
seri monitörde baskılar konum bilgileri (Enlem, Boylam ve Rakım) ve UTC (Tarih ve Saat), her zaman yeni bir NMEA cümle doğru kodlanmış özel bir işlev.
5000 milisaniye geçerse ve yazılım seri bağlantı noktasından gelen karakter yoksa, GPS algılanmadı hatası gösteririz.
TinyGPS ++ Kitaplığındaki Diğer Yararlı İşlevler
TinyGPS ++ nesnesiyle kullanabileceğiniz birkaç yararlı işlev vardır. Bunlardan birkaçı aşağıda listelenmiştir:
gps.speed.value()
fonksiyon mevcut yer hızını bir düğümün 100'ünde döndürür.gps.course.value()
fonksiyon geçerli yer seyrini derecenin 100'ünde döndürür.gps.satellites.value()
işlevi, görünen, katılan uyduların sayısını döndürür.gps.hdop.value()
fonksiyon, hassaslıkta yatay azalma döndürür.- Bir nesnenin verilerinin kaç yaşında olduğunu bilmek istiyorsanız
age()
, son güncellemesinden bu yana geçen milisaniye sayısını döndüren yöntemini çağırın . Bu, 1500 veya daha büyük bir değer döndürürse, kayıp bir düzeltme gibi bir sorunun işareti olabilir. - Başka bir NMEA cümlesinden veri çıkarmak istiyorsanız. TinyGPS ++ 'ya ilgilendiğiniz cümle adını ve alan numarasını şu şekilde söyleyerek kütüphanenin özel çıkarma işlevini kullanabilirsiniz:
TinyGPSCustom magneticVariation(gps, "GPRMC", 10)
Ve tıpkı diğerleri gibi sorgulayabilirsiniz:magneticVariation.value()
U merkezli yazılım
U- blox'tan U-center, NEO-6M dahil olmak üzere u-blox GPS alıcılarının değerlendirilmesi, performans analizi ve yapılandırması için güçlü bir araçtır. Ücretsiz bir araçtır ancak yalnızca Windows platformunda kullanılabilir.
Aşağıdakiler gibi herhangi bir GPS alıcısından gerçek zamanlı yapılandırılmış ve grafik veri görselleştirmesini görüntüleyebilir.
- Uydu özet görünümü
- Gezinme özet görünümü
- Pusula, hız göstergesi, saat, altimetre
- Tercih edilen herhangi iki parametrenin grafik görünümü
- Veri kaydı ve oynatma işlevi
Yazılım, U-blox web sitesinden indirilebilir.
NEO-6M'nin U-center'a bağlanması
U-center yazılımını kullanmak için, NEO-6M'nizi herhangi bir USB'den TTL'ye dönüştürücü kullanarak PC'ye bağlamanız gerekir.
Aşağıdaki resimde, PC'ye PL2303 USB'den TTL'ye dönüştürücü aracılığıyla bağlanan NEO-6M gösterilmektedir.
U merkezini kullanma
Başarılı bir kurulumdan sonra, u-center Başlat Menüsünden (Tüm Programlar -> u-blox-> u-center -> u-center) başlatılabilir ve aşağıda gösterildiği gibi başlatılır.
İletişim araç çubuğunu bulun ve simgenin yanındaki oka tıklayın. Bu, mevcut tüm COM bağlantı noktalarını içeren bir liste gösterecektir. Alıcının bağlı olduğu ilgili COM bağlantı noktasını seçin.
Metin konsolu düğmesi size ham NMEA cümlelerini gösterecektir. Bu, modülden gelen görünür ASCII'yi USB üzerinden hızlı bir şekilde incelemek için kullanışlıdır.
u-center, konumları önceden kalibre edilmiş veya Google çevrimiçi (dinamik) haritalarda görüntüleyebilir