U-blox Neo-6 ve Neo-7 GPS Modüllerinden Arduino ile GPS Konumu Alın
Bu proje, bir Arduino ile U-blox Neo-6M veya Neo-7M GPS modülünün nasıl arayüzleneceğini ve konum verilerinin (enlem ve boylam) nasıl alınacağını gösterir. Çevrimiçi olarak kolayca bulunabilen bu uygun fiyatlı modüller, projelerinize GPS işlevselliği eklemenin basit bir yolunu sağlar. Neo-7M üzerindeki belirgin mavi LED (videoda 02:53'te) GPS sinyalinin alındığını gösterir; bu, sinyal edinimini doğrulamak için kullanışlı bir özelliktir.
İşte bir GPS modülü ve Arduino kullanarak yapabileceğiniz bazı proje fikirleri:
- GPS Takip Cihazı: Konum verilerini kaydedin ve bir harita üzerinde görüntüleyin.
- Geocaching Aracı: Belirli koordinatlara gidin.
- Otomatik Araç Navigasyonu: Bir robotu veya dronu yönlendirin.
- Hava İstasyonu: Hava durumu okumalarına konum verileri ekleyin.
- Yaban Hayatı Takibi: Hayvan hareketlerini izleyin.
Donanım/Bileşenler
- Arduino Uno (veya uyumlu kart)
- U-blox Neo-6M veya Neo-7M GPS modülü
- Jumper kablolar
- USB kablosu
- (İsteğe bağlı) Harici anten ve SMA konnektörü
Bağlantı Kılavuzu
Bağlantı basittir (videoda 10:39'da):
%%WIRING%%
- GPS VCC'yi Arduino 3.3V'a bağlayın
- GPS GND'yi Arduino GND'ye bağlayın
- GPS TX'i Arduino pin 3'e bağlayın (kodda RX olarak tanımlanır)
- GPS RX'i Arduino pin 4'e bağlayın (kodda TX olarak tanımlanır)
Unutmayın, TX, RX'e bağlanır ve tam tersi (videoda 11:10'da). Video ayrıca bağlantılar için basit jumper kabloların nasıl kullanılacağını da gösterir (videoda 10:24'te).
Kod Açıklaması
Bu proje TinyGPS++ kütüphanesini kullanır. Arduino IDE'nin kütüphane yöneticisi aracılığıyla indirip kurun. Temel kod ayarlamaları, yazılım seri pin tanımları ve baud hızıdır (videoda 07:00'de):
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
static const int RXPin = 3, TXPin = 4;
static const uint32_t GPSBaud = 9600; // U-blox modülleri için varsayılan
RXPin ve TXPin değişkenleri, GPS modülüne bağlı Arduino pinlerini tanımlar. U-blox modülleri için varsayılan baud hızı 9600'dür. Kodun özü, GPS'ten gelen seri verileri okumak ve TinyGPS++ kütüphanesini kullanarak ayrıştırmaktır (videoda 08:03'te):
// TinyGPS++ nesnesi
TinyGPSPlus gps;
// GPS cihazına seri bağlantı
SoftwareSerial ss(RXPin, TXPin);
// ... (loop fonksiyonu içinde) ...
while (ss.available() > 0)
if (gps.encode(ss.read()))
displayInfo();
displayInfo() fonksiyonu daha sonra geçerli bir GPS sinyali alındığında enlem ve boylamı çıkarır ve yazdırır (videoda 09:07'de):
void displayInfo()
{
// ... diğer kod ...
if (gps.location.isValid())
{
Serial.print(gps.location.lat(), 6); // 6 ondalık basamaklı enlem
Serial.print(F(","));
Serial.print(gps.location.lng(), 6); // 6 ondalık basamaklı boylam
}
// ... diğer kod ...
}
Canlı Proje/Gösterim
Video (videoda 12:29'da) projeyi çalışırken gösterir; GPS sinyali olmadığında ilk "INVALID" çıktısını ve sinyal alındığında geçerli koordinatların görüntülendiğini gösterir. Neo-7M üzerindeki yanıp sönen mavi LED, GPS sinyalinin görsel olarak doğrulanmasını sağlar (videoda 13:49'da).
Bölümler
- [00:00] Giriş ve Proje Genel Bakışı
- [00:32] GPS Modülü Çeşitleri (Neo-6M ve Neo-7M)
- [04:30] GPS Modülünü Arduino'ya Bağlama
- [06:12] Kod Açıklaması ve TinyGPS++ Kütüphanesi
- [10:07] Detaylı Bağlantı Açıklaması ve TX/RX Prensipleri
- [12:29] Canlı Gösterim ve Sinyal Edinimi
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
/*
* Original library source: https://github.com/mikalhart/TinyGPSPlus
This sample sketch demonstrates the normal use of a TinyGPSPlus object.
It requires the use of SoftwareSerial, and assumes that you have a
4800-baud serial GPS device hooked up on pins 3(rx) and 4(tx).
Modified by Ahmad Shamshiri for Robojax.com
on September 09, 2018 at 20:20 in Ajax, Ontario, Canada
Watch video instructions for this code:https://youtu.be/hbRpr1HbDf8
*/
static const int RXPin = 3, TXPin = 4;
static const uint32_t GPSBaud = 9600;
// The TinyGPS++ object
TinyGPSPlus gps;
// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);
void setup()
{
Serial.begin(115200);
ss.begin(GPSBaud);
Serial.println(F("Robojax GPS Demo"));
Serial.println(F("A simple demonstration of TinyGPS++ with an attached GPS module"));
Serial.print(F("Testing TinyGPS++ library v. ")); Serial.println(TinyGPSPlus::libraryVersion());
Serial.println(F("by Mikal Hart"));
Serial.println();
}
void loop()
{
// This sketch displays information every time a new sentence is correctly encoded.
while (ss.available() > 0)
if (gps.encode(ss.read()))
displayInfo();
if (millis() > 5000 && gps.charsProcessed() < 10)
{
Serial.println(F("No GPS detected: check wiring."));
while(true);
}
delay(100);
}
void displayInfo()
{
Serial.print(F("Location: "));
if (gps.location.isValid())
{
Serial.print(gps.location.lat(), 6);
Serial.print(F(","));
Serial.print(gps.location.lng(), 6);
}
else
{
Serial.print(F("INVALID"));
}
Serial.print(F(" Date/Time: "));
if (gps.date.isValid())
{
Serial.print(gps.date.month());
Serial.print(F("/"));
Serial.print(gps.date.day());
Serial.print(F("/"));
Serial.print(gps.date.year());
}
else
{
Serial.print(F("INVALID"));
}
Serial.print(F(" "));
if (gps.time.isValid())
{
if (gps.time.hour() < 10) Serial.print(F("0"));
Serial.print(gps.time.hour());
Serial.print(F(":"));
if (gps.time.minute() < 10) Serial.print(F("0"));
Serial.print(gps.time.minute());
Serial.print(F(":"));
if (gps.time.second() < 10) Serial.print(F("0"));
Serial.print(gps.time.second());
Serial.print(F("."));
if (gps.time.centisecond() < 10) Serial.print(F("0"));
Serial.print(gps.time.centisecond());
}
else
{
Serial.print(F("INVALID"));
}
Serial.println();
}
Kaynaklar ve referanslar
-
DışGet TinyGPSPlus (from GitHub)github.com
-
DışOfficial TinyGPSPlus Websitearduiniana.org
-
DışUblox websiteu-blox.com
Dosyalar📁
Diğer dosyalar
-
GPS TinyGPSPlus NEO-7 DataSheetDatasheet for the u-blox NEO-7 GPS module, a compact GNSS receiver with high sensitivity and low power consumption. It provides positioning data via UART and is commonly used with Arduino and the TinyGPSPlus library.
robojax_GPS_TinyGPSPlus_NEO-7_DataSheet.pdf1.73 MB