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ı tipi50 kanal, GPS L1 (1575.42 Mhz)
Yatay Konum Doğruluk2.5m
Navigasyon Güncelleme Oranı1HZ (maksimum 5Hz)
Zaman yakalamaStandby 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 gerilimi2.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.
GPRMCKüresel Konumlandırma Önerilen Asgari Koordinatlar
123519UTC geçerli saati – 12:35:19
ADurum A = aktif veya V = Boş.
4807.038, N-Enlem 48 derece 07.038 ′ N
01131.000 EBoylam 11 derece 31.000 ′ E
022,4Düğümlerde zeminden hız
084,4Derece cinsinden iz açısı
220318Güncel Tarih – 22 Mart 2018
003,1, W,Manyetik Değişim
* 6ASağ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ı.
GPGGAGlobal Konumlandırma Sistemi Düzeltme Verileri
123519UTC geçerli saati – 12:35:19
4807.038, N-Enlem 48 derece 07.038 ′ N
01131.000 EBoylam 11 derece 31.000 ′ E
1GPS bağlantısı
08İzlenen uydu sayısı
0.9Yatay pozisyon dilüsyonu
545.4, EMetre Olarak Yükseklik (deniz seviyesinin üstünde)
46.9, EJeoidin yüksekliği (ortalama deniz seviyesi)
(boş alan)Son DGPS güncellemesinden bu yana saniye cinsinden süre
(boş alan)DGPS istasyonu 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 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"</