Arduino Projeleri
#17Gelişmiş

GPS Konum Takip Cihazı

~1,5 saatUART haberleşme kavramı

Proje Amacı

NEO-6M GPS modülünden enlem/boylam okuyup Seri Monitör'de gösterir; modül NMEA formatında ham metin cümleleri gönderir, TinyGPS++ kütüphanesi bu cümleleri ayrıştırıp kullanılabilir sayılara çevirir.

Gerekli Malzemeler

  • Arduino Uno
  • NEO-6M GPS Modülü
  • Breadboard
  • Jumper kablolar

Gerekli Kütüphaneler

TinyGPSPlus (Mikal Hart) — Kütüphane Yöneticisi'nden kurulmalı. SoftwareSerial yerleşiktir.

Pin Bağlantıları

Bileşen PiniBağlantı
GPS VCC
5V
GPS GND
GND
GPS TX
D4 (RX)
GPS RX
D3 (TX)

Devre Şeması

Arduino Kodu

arduino-17-gps-konum-takip-cihazi.ino
1#include <SoftwareSerial.h>
2#include <TinyGPS++.h>
3SoftwareSerial gpsSerial(4, 3);
4TinyGPSPlus gps;
5
6void setup(){
7 Serial.begin(9600);
8 gpsSerial.begin(9600);
9}
10
11void loop(){
12 while(gpsSerial.available() > 0){
13 if(gps.encode(gpsSerial.read())){
14 if(gps.location.isValid()){
15 Serial.print("Enlem: "); Serial.print(gps.location.lat(), 6);
16 Serial.print(" Boylam: "); Serial.println(gps.location.lng(), 6);
17 } else {
18 Serial.println("GPS sinyali aranıyor...");
19 }
20 }
21 }
22}

Çalışma Açıklaması

GPS modülleri kapalı alanda/bina içinde genelde sinyal alamaz, ilk konum kilidi (fix) açık havada bile 30 saniye-birkaç dakika sürebilir. TinyGPS++ kütüphanesi Arduino IDE'ye önceden kurulmalı.

Test Bilgisi

TinyGPS++ kütüphanesini kurun. Devreyi kurun, kodu yükleyin, açık havada (gökyüzü görüşü olan bir yerde) birkaç dakika bekleyin; Seri Monitör'de enlem/boylam değerlerinin belirmesini gözlemleyin.

Olası Sorunlar ve Çözümleri

GPS hiç konum bulmuyorsa: modülün açık gökyüzü görüşü olan bir yerde olduğundan ve ilk kilit için birkaç dakika beklendiğinden emin olun — 'soğuk başlangıç' (cold start, modül fabrika ayarlarına döndüğünde veya günlerce kapalı kaldıktan sonra) 5 dakikaya kadar sürebilir, ilk denemede pes etmeyin. Enlem/boylam değerleri anlamsız çıkıyorsa: SoftwareSerial baud hızının modülün varsayılan hızıyla (genelde 9600) eşleştiğini kontrol edin. Veri hiç gelmiyorsa: TX-RX bağlantısının çapraz (GPS TX→Arduino RX) yapıldığını doğrulayın. gps.location.isValid() sürekli false dönüyor ama Seri Monitör'de NMEA benzeri karakterler görünüyorsa: SoftwareSerial'ın 9600'den yüksek baud hızlarında (bazı modüllerin 3D fix sonrası varsayılanı değişir) karakter kaybettiğini unutmayın, donanımsal Serial1 olan bir kart (Mega/Leonardo) bu sorunu tamamen ortadan kaldırır.

Alternatif Çözümler

TinyGPS++ yerine daha basit ancak daha az özellikli alternatif kütüphaneler de kullanılabilir. Konum verisi SD karta kaydedilerek (proje #18 ile birleştirilerek) bir rota kaydedici (tracker) yapılabilir. SIM800L GSM modülü eklenerek konum SMS ile uzaktan sorgulanabilir hale getirilebilir (ileri seviye, ESP32 önerilir).

Bu projenin kodunu AI ile özelleştir

Farklı pin, ek özellik ya da başka bir sensör mü istiyorsun?