Robotik Kodlama

Robotik Kodlama
Ana Sayfa

İLGİNİZİ ÇEKEBİLECEK LİNKLER :

3 Mayıs 2021 Pazartesi

NEO-6M GPS Modülü NMEA ve Arduino Bazı Bilgiler

 

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.

GPS Nasıl Çalışır - Üçleme Süreci

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.

NEO-6M GPS Modül Çipi

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:

Alıcı Tipi50 kanal, GPS L1 (1575.42Mhz)
Yatay Konum Doğruluğu2,5 milyon
Navigasyon Güncelleme Oranı1HZ (maksimum 5Hz)
Yakalama ZamanıSoğuk başlangıç: 27 sn Sıcak başlangıç: 1 sn
Navigasyon Hassasiyeti-161dBm
İletişim ProtokolüNMEA, UBX İkili, RTCM
Seri Baud Hızı4800-230400 (varsayılan 9600)
Çalışma sıcaklığı-40 ° C ile 85 ° C
Çalışma gerilimi2.7V ~ 3.6V
Çalışma Akımı45mA
TXD / RXD Empedansı510Ω

Konum Sabitleme LED Göstergesi

NEO-6M GPS Modülü - Konum Düzeltme 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 GPS Modülü - 3.3V Voltaj 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

NEO-6M GPS Modülü - 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.

NEO-6M Yama Anteni

Bu anteni modül üzerinde bulunan küçük U.FL konektörüne takabilirsiniz.

NEO-6M GPS Modülü - u.fl Konektörü

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:

Ublox NEO-6M GPS Modülü Pinout

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.

Kablo Bağlantıları NEO-6M GPS Modülünü Arduino UNO'ya
NEO-6M GPS Modülünü Arduino UNO'ya Kablolama

Arduino Kodu - GPS Verilerini Okuma

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.

#include <SoftwareSerial.h>

// Choose two Arduino pins to use for software serial
int RXPin = 2;
int TXPin = 3;

//Default baud of NEO-6M is 9600
int GPSBaud = 9600;

// Create a software serial port called "gpsSerial"
SoftwareSerial gpsSerial(RXPin, TXPin);

void setup()
{
  // Start the Arduino hardware serial port at 9600 baud
  Serial.begin(9600);

  // Start the software serial port at the GPS's default baud
  gpsSerial.begin(GPSBaud);
}

void loop()
{
  // Displays information when new sentence is available.
  while (gpsSerial.available() > 0)
    Serial.write(gpsSerial.read());
}

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:

Arduino'da NEO-6M GPS NMEA Cümleleri Çıkışı

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

$Her NMEA cümlesi $ karakteriyle başlar.
GPRMCKüresel Konumlandırma Önerilen Minimum Koordinatlar
123519UTC olarak şu anki saat - 12:35:19
BirDurum A = aktif veya V = Geçersiz.
4807.038, NEnlem 48 derece 07.038 ′ N
01131.000, EBoylam 11 derece 31.000 ′ E
022.4Knot cinsinden zeminde hız
084.4Derece cinsinden izleme açısı True
220318Güncel Tarih - 22 Mart 2018
003.1, WManyetik Varyasyon
* 6ASağlama toplamı verileri her zaman * ile başlar

$ 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ümlesinin başlangıcı.
GPGGAKüresel Konumlandırma Sistemi Düzeltme Verileri
123519UTC olarak şu anki saat - 12:35:19
4807.038, NEnlem 48 derece 07.038 ′ N
01131.000, EBoylam 11 derece 31.000 ′ E
1GPS düzeltmesi
08İzlenen uyduların sayısı
0.9Yatay pozisyon seyreltme
545,4, MMetre cinsinden Yükseklik (ortalama deniz seviyesinin üzerinde)
46.9, MGeoid yüksekliği (ortalama deniz seviyesi)
(boş alan)Son DGPS güncellemesinden bu yana saniye cinsinden süre
(boş alan)DGPS istasyon kimlik numarası
* 47Sağlama toplamı verileri her zaman * ile başlar

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.

#include <TinyGPS++.h>
#include <SoftwareSerial.h>

// Choose two Arduino pins to use for software serial
int RXPin = 2;
int TXPin = 3;

int GPSBaud = 9600;

// Create a TinyGPS++ object
TinyGPSPlus gps;

// Create a software serial port called "gpsSerial"
SoftwareSerial gpsSerial(RXPin, TXPin);

void setup()
{
  // Start the Arduino hardware serial port at 9600 baud
  Serial.begin(9600);

  // Start the software serial port at the GPS's default baud
  gpsSerial.begin(GPSBaud);
}

void loop()
{
  // This sketch displays information every time a new sentence is correctly encoded.
  while (gpsSerial.available() > 0)
    if (gps.encode(gpsSerial.read()))
      displayInfo();

  // If 5000 milliseconds pass and there are no characters coming in
  // over the software serial port, show a "No GPS detected" error
  if (millis() > 5000 && gps.charsProcessed() < 10)
  {
    Serial.println("No GPS detected");
    while(true);
  }
}

void displayInfo()
{
  if (gps.location.isValid())
  {
    Serial.print("Latitude: ");
    Serial.println(gps.location.lat(), 6);
    Serial.print("Longitude: ");
    Serial.println(gps.location.lng(), 6);
    Serial.print("Altitude: ");
    Serial.println(gps.altitude.meters());
  }
  else
  {
    Serial.println("Location: Not Available");
  }
  
  Serial.print("Date: ");
  if (gps.date.isValid())
  {
    Serial.print(gps.date.month());
    Serial.print("/");
    Serial.print(gps.date.day());
    Serial.print("/");
    Serial.println(gps.date.year());
  }
  else
  {
    Serial.println("Not Available");
  }

  Serial.print("Time: ");
  if (gps.time.isValid())
  {
    if (gps.time.hour() < 10) Serial.print(F("0"));
    Serial.print(gps.time.hour());
    Serial.print(":");
    if (gps.time.minute() < 10) Serial.print(F("0"));
    Serial.print(gps.time.minute());
    Serial.print(":");
    if (gps.time.second() < 10) Serial.print(F("0"));
    Serial.print(gps.time.second());
    Serial.print(".");
    if (gps.time.centisecond() < 10) Serial.print(F("0"));
    Serial.println(gps.time.centisecond());
  }
  else
  {
    Serial.println("Not Available");
  }

  Serial.println();
  Serial.println();
  delay(1000);
}

Çıktı, seri monitörde böyle görünüyor.

NEO-6M GPS TinyGPS ++ Arduino Kitaplık Çıkışı

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.

TinyGPSPlusNesne oluşturmak , kitaplıkla ilgili özel işlevlere erişmeye yardımcı olacaktır. Daha gpsSerialsonra, modül ile konuşabileceğimiz bir yazılım seri portu oluşturuyoruz .

#include <TinyGPS++.h>
#include <SoftwareSerial.h>

int RXPin = 2;
int TXPin = 3;
int GPSBaud = 9600;

TinyGPSPlus gps;
SoftwareSerial gpsSerial(RXPin, TXPin);

In setupfonksiyonu, biz PC ile seri haberleşme yanı sıra GPS modülü başlatmak gerekiyor.

void setup()
{
  Serial.begin(9600);
  gpsSerial.begin(GPSBaud);
}

In loopfonksiyonu 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.

void loop()
{
  while (gpsSerial.available() > 0)
    if (gps.encode(gpsSerial.read()))
      displayInfo();

  if (millis() > 5000 && gps.charsProcessed() < 10)
  {
    Serial.println(F("No GPS detected"));
    while(true);
  }
}

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.

Doğrudan Bilgisayar Kablolaması - PL2303 USB'den TTL'ye Dönüştürücü ile NEO-6M GPS Modülü

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.

Başlangıçta U-merkezli Yazılım

İ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.

u-merkez COM Bağlantı Noktası Seçimi

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 Metin Konsolu

u-center, konumları önceden kalibre edilmiş veya Google çevrimiçi (dinamik) haritalarda görüntüleyebilir

U-center Harita Görünümü
 hakkında daha fazla bilgi için lütfen bu kullanıcı kılavuzuna bakın.

U-center kullanıcı kılavuzu

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.

Hiç yorum yok:

Yorum Gönder

Yorum yazdığınız ve üye olduğunuz için Size teşekkür ederim.Burada olduğunuza göre hepimizin ilgi alanı Elektronik ve Programlama sonsuz bir dünyadayız.Hepimize Başarılar...

Not: Yalnızca bu blogun üyesi yorum gönderebilir.