Başa dön
arduino gps modülü kullanımı

Arduino GPS Modülü Kullanımı

Arduino ile ublox NEO-6M GPS Modülü Kullanımı

Yeni Arduino projenize, dünyanın herhangi bir yerindeki konumları belirleyebilen ve 22 uyduya kadar izleyebilen NEO-6M GPS Modülü ile yerleri algılama yeteneği verin. GPS dünyasına girmek isteyen herkes için harika bir fırlatma rampası görevi görebilir bu yazımız da arduino ile gps modulü kullanımı inceleyeceğiz. Hadi Gelin:)

Arduino gps modülü çeşidi olana ublox neo-6m gps modülü düşük güç tüketmektedir (pille çalışan cihazlar için uygundur), ucuzdur, arayüzleri kolaydır ve arduino projesi meraklısı makerlar arasında delicesine popülerdir.

Konuya en temelden başlayalım.

GPS Modülleri ve Kablosuz Haberleşme Araçları için BURAYA TIKLA En Ucuz Fiyata Satın Al.

 

Arduino GPS Kullanımı İçerik:

  • GPS Nasıl çalışır?
  • NEO-6M GPS Modülünün Donanım Genel Bilgisi(NEO-6M GPS Çipi)
  • NEO-6M GPS Teknik Özellikleri
  • Konum Sabitleme LED Göstergesi
  • 3.3V LDO Regülatörü
  • Pil ve EEPROM
  • Anten
  • NEO-6M GPS Modül Bağlantısı
  • NEO-6M GPS Modülü Arduino UNO Bağlantısı
  • Arduino Kodu – GPS Verilerini Okuma
  • NMEA Verilerini Ayrıştırma
  • Arduino Kodu – TinyGPS Kütüphanesi
  • TinyGPS ++ Kütüphanesinde Diğer Faydalı İşlevler
  • U Center Yazılımı
  • NEO-6M GPS Modülünü U-Center Yazılımı ile İlişkilendirme
  • U-Center Kullanımı

 

GPS Nasıl Çalışır?

GPS alıcıları aslında birkaç uydudan ne kadar uzakta olduğunuzu bularak çalışırlar.

Uydular, bulundukları yer ve şimdiki zaman hakkında dünyaya radyo sinyalleri şeklinde bilgi iletir. Bu sinyaller uyduları tanımlar ve alıcıya nerede olduklarını söyler.

GPS Nasıl Çalışır - Trilatrasyon Süreci

Alıcı daha sonra, her bir uydunun ne kadar uzakta olduğunu, sinyallerin gelmesinin ne kadar sürdüğünü hesaplayarak konumu bildirir. En az üç uydudan gelen veriler ve uzayda bulundukları konum hakkında bilgi sahibi olduktan sonra, Dünya üzerindeki konumunuzu belirleyebilir.

Yani 1 – 2 uydu ile bu iş olmuyor malesef.

Bu işlem Trilatrasyon olarak bilinir.

 

NEO-6M GPS Modülünün Donanım Genel Bilgisi

NEO-6M GPS Çipi

Modülün merkezinde u-blox’dan NEO-6M GPS çipi bulunur. Çip, bir posta pulu boyutundan daha küçüktür ancak şaşırtıcı miktarda özellik içerir.

NEO-6M GPS Modülü Çipi

50 kanalda 22’ye kadar uydu izleyebilir ve sadece 45mA besleme akımı tüketirken, gps modülleri içerisinde en yüksek hassasiyet seviyesini elde eder, tam -161 dBm izleme. Yani bu en hızlısı ve en doğru konumlandırma oranına sahip modül olduğunu gösteriyor.

Diğer GPS modüllerinin aksine, 2.5m Yatay konum doğruluğu ile saniyede 5 lokasyon güncellemesi yapabilir. U-blox 6 konumlandırma motoru ayrıca 1 saniyeden daha kısa bir İlk Onarma Süresi (TTFF) sunar.

Çipin sağladığı en iyi özelliklerden biri Güç Tasarruf Modu’dur (PSM). Alıcının parçalarını seçici 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 çok idealdir.

NEO-6M GPS çipinin gerekli veri pimleri 0,1 adım başlıklara ayrılmıştır. Bu, UART üzerinden bir mikrodenetleyici ile iletişim için gerekli pinleri içerir. Modül, varsayılan 9600 baud ile 4800bps’den 230400bps’ye kadar olan baud hızını destekler.

 

NEO-6M GPS Teknik Özellikleri

NEO-6M GPS Özellikleri
Alıcı tipi 50 kanal, GPS L1 (1575.42 Mhz)
Yatay Konum Doğruluk 2.5m
Navigasyon Güncelleme Oranı 1HZ (maksimum 5Hz)
Zaman yakalama Standby Mod: 27 s – Aktif Mod: 1s
Gezinme Duyarlılığı -161dBm
İletişim protokolü NMEA, UBX İkili, RTCM
Seri Baud Hızı 4800-230400 (varsayılan 9600)
Çalışma sıcaklığı -40 ° C ~ 85 ° C
Çalışma gerilimi 2.7V ~ 3.6V
Çalışma akımı 45mA
TXD / RXD Empedansı 510Ω

NEO-6M GSM çipi hakkında daha fazla bilgi için bu veri sayfasını inceleyin.

 

Konum Sabitleme LED Göstergesi

NEO-6M GPS Modülü - 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 oranlarda yanıp sönecektir:

  • Yanıp Sönme Yok – Uyduları arıyor.
  • Her 1 saniyede bir yanıp sönme – Konum Bulma (Modül yeterince uydu yakalayabilir)

 

3.3V LDO Regülatörü

NEO-6M GPS Modülü - 3.3V Voltaj Regülatörü

NEO-6M GPS çipinin çalışma voltajı 2.7 ile 3.6V arasındadır. 

Lojik pinler ayrıca 5 volt toleranslıdır, böylece herhangi bir lojik seviye dönüştürücüsünü kullanmadan kolayca bir Arduino veya herhangi bir 5V lojik mikrokontrolcüye bağlayabiliriz.

 

Pil ve EEPROM

NEO-6M GPS Modülü - Akü ve EEPROM

Modül, bir HK24C32 iki telli seri EEPROM ile donatılmıştır. 4 KB boyutundadır ve NEO-6M yongasına I2C üzerinden bağlanmıştır.

Modül ayrıca süper kapasitör görevi gören şarj edilebilir bir düğme pil içerir.

Pille 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 konfigürasyonunu içerir. Ancak kalıcı veri depolama için uygun değildir.

Batarya saat ve son pozisyonunu koruduğu için, ilk fiksata kadar geçen süre (TTFF) 1 saniyeye önemli ölçüde azalır. Bu, çok daha hızlı pozisyon konumlandırma sağlar.

Batarya olmadan GPS daima standby çalışır, böylece ilk GPS konumlandırması daha fazla zaman alır.

Güç uygulandığında pil otomatik olarak şarj olur ve verileri iki haftaya kadar elektriksiz tutar.

 

Anten

İletişim için modüle bir anten gerekmektedir. Bu yüzden, modül -161 dBm duyarlılığa sahip bir anten ile birlikte geliyor.

NEO-6M Yama Anteni

Bu anteni modülde bulunan küçük U.FL konektörüne sabitleyebilirsiniz.

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

Dahili Anten Yuvası anteni çoğu proje için yeteri kadar iş görmektedir. Ancak, daha fazla hassasiyet elde etmek veya modülünüzü metal bir kasanın içine koymak istiyorsanız, U.FL konektörü ile herhangi bir 3V aktif GPS antenini de bağlayabilirsiniz.

 

İPUCU

U.FL konektörleri küçük ve hassastır. U.FL bağlantısına zarar vermemek için, U.FL kablosunu montaj deliğinden geçirmenizi ve ardından U.FL konektörlerine takmanızı öneririz.

 

NEO-6M GPS Modül Bağlantısı

NEO-6M GPS modülünü takılacak karta bağlantısı için toplam 4 pime sahiptir. Bağlantılar aşağıdaki gibidir:

Ublox NEO-6M GPS Modülü Pin Çıkışı

GND , Ground Pin’dir ve Arduino’daki GND pinine bağlanmalıdır.

Seri haberleşme için TxD (Verici) pimi kullanılır.

RxD (Alıcı) pimi seri haberleşme için kullanılır.

VCC , modül için güç sağlar. Arduino’daki 5V pinine doğrudan bağlayabilirsiniz.

 

NEO-6M GPS Modülü Arduino UNO Bağlantısı

Artık modül hakkında her şeyi biliyoruz ve arduino’muza takmaya başlayabiliriz!

Anten takılma yuvasını U.FL konnektörüne bağlayarak başlayın. U.FL kablosunu sağlam bağlantı için montaj deliklerinden birine 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 Arduino’daki sırasıyla # 2 ve # 3 dijital pinlerine bağlayın; modülle konuşmak için seri yazılım kullanacağız.

Ardından, VCC pinini arduino üzerindeki 5V pinine ve GND’yi toprağa bağlayın.

 

NEO-6M GPS Modülünü Arduino UNO'ya Kablolama

NEO-6M GPS Modülünü Arduino UNO’ya Kablolama

 

Her şeyi bağladığınızda, kullanmaya hazırsınız!

 

Arduino Kodu – GPS Verilerini Okuma

Herhangi bir GPS alıcısıyla ilgili en iyi şey, verileri yüklediğiniz anda hatasız çalışmaya başlamalarıdır.

Bu verileri test etmenin en iyi yolu Arduino’yu USB’den TTL Dönüştürücü bağlayarak 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’u seçmeyi unutmayın. Aşağıdaki gibi bir metin görmelisiniz:

NEO-6M GPS Konum Görüntü Kodları

NEO-6M GPS Konum Görüntü Kodları

 

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. Neredeyse tüm GPS alıcıları için standart bir mesaj formatıdır.

NMEA standardı cümleler olarak adlandırılan veri satırları halinde biçimlendirilmiştir. Her cümle, virgülle ayrılır ve bilgisayarlar ve mikrodenetleyiciler tarafından ayrıştırılmasını kolaylaştırır.

NMEA cümleleri güncelleme oranı adı verilen bir aralıkta gönderilir.

NEO-6M GPS modülü bu bilgileri saniyede bir kez (1Hz frekans) varsayılan olarak günceller. Ancak, saniyede 5 güncellemeye kadar yapılandırabilirsiniz (5Hz frekans).

 

NMEA Verilerini Ayrıştırma

NMEA standardında birçok cümle vardır, en yaygın olanları:

  • $ GPRMC (Küresel Konumlandırma Önerilen Asgari Koordinatlar) saat, tarih, enlem, boylam, yükseklik ve tahmini hız sağlar.
  • $ GPGGA cümle, 3B konum ve doğruluk verileri sağlayan temel düzeltme verileri sunar.

Bir GPS alıcısından $ GPRMC NMEA cümle örneği alalım.

$ GPRMC  123519, A, 4807.038, N, 01131.000, E, 022.4, 084.4, 230394, 003.1, W * 6A
$ GPRMC NMEA cümle ayrıştırma
$ Her NMEA cümlesi $ karakteriyle başlar.
GPRMC Küresel Konumlandırma Önerilen Asgari Koordinatlar
123519 UTC geçerli saati – 12:35:19
A Durum A = aktif veya V = Boş.
4807.038, N- Enlem 48 derece 07.038 ′ N
01131.000 E Boylam 11 derece 31.000 ′ E
022,4 Düğümlerde zeminden hız
084,4 Derece cinsinden iz açısı
220318 Güncel Tarih – 22 Mart 2018
003,1, W, Manyetik Değişim
* 6A Sağlama toplamı verileri her zaman * ile başlar

 

$ GPGGA NMEA cümlesinden örnek alalım.

$ GPGGA, 123519, 4807.038, N, 01131.000, E, 1, 08, 0.9, 545.4, M, 46.9, M,, * 47
$ GPGGA NMEA cümle ayrıştırma
$ NMEA cümlesinin başlatılması.
GPGGA Global Konumlandırma Sistemi Düzeltme Verileri
123519 UTC geçerli saati – 12:35:19
4807.038, N- Enlem 48 derece 07.038 ′ N
01131.000 E Boylam 11 derece 31.000 ′ E
1 GPS bağlantısı
08 İzlenen uydu sayısı
0.9 Yatay pozisyon dilüsyonu
545.4, E Metre Olarak Yükseklik (deniz seviyesinin üstünde)
46.9, E Jeoidin yüksekliği (ortalama deniz seviyesi)
(boş alan) Son DGPS güncellemesinden bu yana saniye cinsinden süre
(boş alan) DGPS istasyonu kimlik numarası
* 47 Sağ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 Kütüphanesi

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 adlı bir kütüphanemiz var.

Bu kütüphane, GPS modüllerinden veri almak için arka planda yararlı verilerin okunması ve çıkarılması gibi çok fazla işlemi yapmaktadır.

Ö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, Taslak> Library Ekle> .ZIP Kitaplığı Ekle’ye gidin ve daha sonra indirdiğiniz TinyGPSPlus ZIP dosyasını seçin. Kütüphane kurma hakkında daha fazla ayrıntıya ihtiyacınız varsa, Arduino Kütüphanesi Yükleme sayfasına göz atabilirsiniz. Kütüphaneyi kurduktan sonra, aşağıdaki kodu Arduino IDE’ye kopyalayabilirsiniz.

 

Aşağıdaki test kodu lcd ekran üzerinde konum bilgilerini (Enlem, Boylam ve Yükseklik) ve UTC’yi (Tarih ve Saat) gösterecektir.

 

#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);
}

 

Kodlar TinyGPSPlus  ++ kütüphanesini ve yazılım seri kütüphanesini dahil ederek başlar. Ardından, NEO-6M GPS modülünün bağlı olduğu arduino pinlerini ve varsayılan GPS baud hızını saklayan değişkenleri tanımlayalım.

TinyGPSPlus nesnesinin oluşturulması, kütüphaneyle ilgili özel fonksiyonlara erişime yardımcı olacaktır. Sonra,  gpsSerial adında, modülle iletişim sağlayabileceğimiz bir yazılım seri portu oluşturalım.

 

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

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

TinyGPSPlus gps;
SoftwareSerial gpsSerial(RXPin, TXPin);

 

 setup fonksiyonunda, PC ile GPS modülünün seri haberleşmesini başlatmamız gerekir.

 

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

 

loop işlevinde, her yeni NMEA cümleyi doğru şekilde kodlandığında, seri monitörde konum bilgilerini (Enlem, Boylam ve Yükseklik) ve UTC’yi (Tarih ve Saat) basan displayInfo() özel işlevini çağırırız.

5000 milisaniye geçerse ve yazılımın seri bağlantı noktasından herhangi bir karakter gelmiyorsa, GPS tespit hatası bulunamadı.

 

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);
  }
}

 

Çıkış, seri monitörde böyle gözükür.

NEO-6M GPS TinyGPS ++ Arduino Kütüphanesi Çıkışı

 

TinyGPS ++ Kütüphanesinde Diğer Faydalı İşlevler

TinyGPS ++ nesnesiyle kullanabileceğiniz birkaç yararlı işlev vardır. Bunlardan birkaçı aşağıda listelenmiştir:

  • gps.speed.value() işlevi, geçerli düğüm hızını bir düğümün 100’ünde verir.
  • gps.course.value() işlevi, geçerli zemin rotasını bir derecenin 100’ünde döndürür.
  • gps.satellites.value() işlevi, görünen ve katılan uyduların sayısını döndürür.
  • gps.hdop.value() işlevi, hassasiyetin yatay küçülmesini döndürür.
  • Bir nesnenin verilerinin kaç yaşında olduğunu bilmek istiyorsanız, son güncellemesinden bu yana milisaniye sayısını döndüren age() yöntemini kullanın. 1500 veya daha büyük bir değer dönüşü alırsanız, bir düzeltme gibi sorunun işareti olabilir.
  • Başka bir NMEA cümlesinden veri çıkarmak istiyorsanız, TinyGPS ++ ‘a cümle adını ve ilgilendiğiniz alan numarasını yazarak, kütüphanenin özel çıkartma işlevini kullanabilirsiniz: TinyGPSCustom magneticVariation(gps, "GPRMC", 10) Ya da diğerleri gibi sorgulayabilirsiniz: magneticVariation.value()

 

U-Center Yazılımı

U- blox yazılımı olan U-center, NEO-6M de 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.

 

Yazılım ile herhangi bir GPS alıcısı gerçek zamanlı yapılandırılmış ve grafik veri görselleştirme görüntüleyebilir

  • Uydu özet görünümü
  • Gezinme özeti 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şlevselliği

Yazılım U-blox web sitesinden indirilebilir.

 

NEO-6M GPS Modülünü U-Center Yazılımı ile İlişkilendirme

U-Center yazılımını kullanmak için, NEO-6M gps modülünüzü herhangi bir USB – TTL dönüştürücü kullanarak PC’ye bağlamanız gerekir.

 

Aşağıdaki resimde, PC’ye PL2303 USB – TTL çevirici ile bağlı NEO-6M gösterilmektedir.

Doğrudan Bilgisayar Kablolama - PL2303 USB - TTL Dönüştürücülü NEO-6M GPS Modülü

 

U-Center Kullanımı

Başarılı bir kurulumdan sonra u-center Başlat Menüsünden başlatılabilir (Tüm Programlar -> u-blox-> u-center -> u-center) ve aşağıda gösterildiği gibi çalışmaya başlar.

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

İletişim araç çubuğunu bulun ve simgenin yanındaki oku tıklayın. Mevcut tüm COM portlarını içeren bir liste göreceksiniz. Alıcının bağlı olduğu ilgili COM portunu seçin.

u-merkezli COM Port Seçimi

Metin konsolu düğmesi size ham NMEA verilerini gösterecektir. Modülden gelen görünür ASCII’yi USB üzerinden hızlı bir şekilde incelemek için kullanışlıdır.

 

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

U-Harita Görünümü

U-Center yazılımı hakkında daha fazla bilgi için, lütfen bu kullanım kılavuzuna bakın.

 

Eğer Sizde Arduino Projelerine Meraklıysanız Sitemizdeki Projelere Göz Atabilirsiniz.

Ayrıca Robotik Marketimiz ROBOCOMBO‘yu Ziyaret Edebilirsiniz.

 

Okuduğunuz İçin Teşekkürler.

 
Kaynak: https://lastminuteengineers.com/neo6m-gps-arduino-tutorial/