GPS Konum Takip Cihazı
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 Pini | Bağlantı |
|---|---|
| GPS VCC | 5V |
| GPS GND | GND |
| GPS TX | D4 (RX) |
| GPS RX | D3 (TX) |
Devre Şeması
Arduino Kodu
| 1 | #include <SoftwareSerial.h> |
| 2 | #include <TinyGPS++.h> |
| 3 | SoftwareSerial gpsSerial(4, 3); |
| 4 | TinyGPSPlus gps; |
| 5 | |
| 6 | void setup(){ |
| 7 | Serial.begin(9600); |
| 8 | gpsSerial.begin(9600); |
| 9 | } |
| 10 | |
| 11 | void 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).
Benzer Projeler
SD Kart Veri Kayıt İstasyonu
Sıcaklık verisini zaman damgasıyla birlikte bir SD karta CSV formatında yazar — WiFi'siz bir Arduino Uno'nun veriyi 'gerçek zamanlı görmek' yerine 'sonradan analiz etmek' için nasıl kullanılabileceğinin en net örneği.
Parmak İzi ile Kapı Kilidi
R307 parmak izi sensörüyle önceden kaydedilmiş bir parmak izini tanıyıp doğrulandığında servo ile kilidi açar; tanıma işlemi sensörün kendi üzerinde yapılır, Arduino sadece sonucu okuyup kilide iletir.
RFID Kartlı Erişim Sistemi
RC522 RFID okuyucu ile yetkili kartları tanıyıp servo motorla kilidi açar, yetkisiz kartlarda buzzer ile uyarır — RC522'nin 3.3V-only oluşu bu projedeki en sık yapılan bağlantı hatasının kaynağıdır (bkz. Çalışma Açıklaması).