
Modul GPS NEO6MV2 dapat digunakan untuk mengidentifikasi hampir keseluruhan lokasi di belahan bumi karena kemampuannya yang dapat menangkap sinyal hingga 22 satelit. Walaupun demikian, modul ini membutuhkan konsumsi daya yang rendah sehingga cocok digunakan pada proyek dengan daya rendah.
Pada dasarnya, modul GPS ini bekerja dengan cara mencari titik lokasi menggunakan sejumlah sinyal satelit pada waktu tertentu. Modul ini dapat diakses dengan mikrokontroler menggunakan protokol komunikasi serial UART.
Cara Kerja Sensor GPS

.

Dalam proses mendapatkan suatu titik lokasi, terdapat dua komponen penting yaitu GPS di bumi sebagai receiver (penerima) dan satelit di luar angkasa sebagai transmitter (pengirim) sinyal.
GPS receiver bertugas untuk mencari tahu seberapa jauh keberadaan titiknya dari sejumlah satelit. Sehingga GPS receiver diprogram untuk mengetahui dimana satelit berada pada waktu tertentu.
Satelit akan mengirimkan data yang mengidentifikasikan lokasinya pada waktu tertentu dalam bentuk sinyal radio menuju ke bumi. GPS receiver kemudian menghitung seberapa jauh jarak antar satelit dengan mencari tahu berapa lama waktu yang dibutuhkan untuk sinyal tiba. Setelah mendapat data jarak minimal 3 buah satelit, dan di lokasi koordinat mana satelit berada di luar angkasa. GPS kemudian dapat mengetahui lokasinya di bumi. Proses penentuan lokasi GPS tersebut dikenal sebagai metode Trilateration.
Komponen utama sensor ini yaitu IC GPS NEO 6M dari U-blox. IC GPS tersebut mampu membaca sinyal hingga 22 satelit dengan 50 channel, dengan tingkat sensitivitas standar industri tertinggi yaitu -160 dBm. IC ini juga menyediakan fitur Power Save Mode (PSM) untuk mengurangi konsumsi daya. Komunikasi Serial UART dengan mikrokontroler dapat dijalankan dengan baud rate 4800bps hingga 230400bps dengan nilai default 9600bps.

LED Indikator pada modul ini berfungsi untuk menunjukkan status kerja modul. Ketika LED tidak berkedip, maka GPS sedang mencari satelit. Sedangkan, ketika LED berkedip setiap 1 detik, maka GPS mendapatkan sinyal beberapa satelit. 3.3V Ultra Low Dropout Regulator ini berfungsi untuk menurunkan teganngan kerja yang masuk ke rangkaian modul menjadi 3.3V. Hal ini dibutuhkan karena tegangan kerja yang digunakan IC GPS NEO-6M adalah 2.7 – 3.6V.

Untuk membantu penyimpanan data jam, orbit terbaru, dan data konfigurasi. Modul ini dilengkapi dengan EEPROM serial HK24C32 dengan kapasitas 4KB. Selain itu, modul ini juga dilengkapi dengan Rechargeable Button Battery, yang dapat diisi ulang otomatis pada saat modul mendapatkan daya.
EEPROM dan baterai tersebut digunakan untuk mempertahankan jam dan posisi terakhir GPS. Sehingga ketika modul GPS digunakan kembali, waktu yang dibutuhkan untuk Time To First Fix (TTFF) modul lebih cepat (menjadi 1s yang memungkinkan untuk mengetahui posisi jauh lebih cepat) karena berada pada Hot Start dibandingkan ketika baterai tidak ada, maka TTFF modul berada pada Cold Start.
Antena pada modul ini diperlukan untuk menjalankan segala jenis komunikasi, terutama Antena untuk mendapatkan sinyal yang akan dikirim satelit. tersebut dapat dipasangkan dengan modul pada bagian konektor U.FL
Pinout & Spesifikasi Sensor GPS NEO 6MV2

.
Contoh Rangkaian Sensor GPS & Arduino Uno

Percobaan 58: Akses Sensor GPS (Global Positioning System) NEO 6MV2

- Hubungkan TX dengan pin D2 ATMEGA 328
- Hubungkan RX dengan pin D3 ATMEGA 328
- Hubungkan board ATMEGA 2560 dengan Komputer menggunakan kabel USB.
- Bukalah IDE Arduino, kemudian ketikkan kode program/sketch atau buka file GPS_NEO6MV2 (DATA MENTAH GPS) atau GPS_NEO6MV2_2 (DATA POSISI DAN KETINGGIAN)
- Compile menggunakan verify button (tanda ceklist pada IDE arduino) untuk mengecek ada atau tidaknya error/kesalahan dalam pengetikan.
- Upload program ke arduino dengan cara, pilih File > Upload to I/O board, atau tekan tombol tanda panah pada jendela IDE arduino.
Code GPS_NEO 6MV2 (DATA MENTAH GPS):
//MEGA2560
// Choose two Arduino pins to use for software serial
#include <SoftwareSerial.h>
//Default baud of NEO-6M is 9600
int GPSBaud = 9600;
// Create a software serial port called "gpsSerial"
//SoftwareSerial gpsSerial(RXPin, TXPin);
// Create a software serial port called "gpsSerial"
SoftwareSerial gpsSerial(2, 3);
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());
}
.
Video Demo:
.
.

Code GPS_NEO 6MV2_2 (DATA POSISI DAN KETINGGIAN):
#include <TinyGPS++.h>
//#include <SoftwareSerial.h>
#include <SoftwareSerial.h>
int GPSBaud = 9600;
// Create a TinyGPS++ object
TinyGPSPlus gps;
// Create a software serial port called "gpsSerial"
//SoftwareSerial gpsSerial(RXPin, TXPin);
SoftwareSerial gpsSerial(2, 3);
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);
}
.
Video Demo:
.
.
