Panduan ini menunjukkan cara menggunakan modul GPS NEO-6M dengan Arduino untuk mendapatkan data GPS. GPS adalah singkatan dari Global Positioning System dan dapat digunakan untuk menentukan posisi, waktu, dan kecepatan jika Anda bepergian.
Kita akan belajar cara :
- Wiring / koneksi modul GPS NEO-6M ke Arduino UNO
- Mendapatkan data GPS mentah
- Mengurai data mentah untuk mendapatkan informasi GPS yang dipilih dan dapat dibaca
- Mendapatkan lokasi
Mengenal Modul GPS Ublox NEO-6M
Modul GPS NEO-6M ditunjukkan pada gambar di bawah ini. Modul yang beredar di pasaran sudah dilengkapi dengan antena eksternal, tapi belum ada pin header. Jadi, kita harus menyediakan dan menyolder sendiri.
- Modul ini memiliki antena eksternal dan EEPROM internal.
- Antarmuka: RS232 TTL
- Catu daya: 3V hingga 5V
- Baudrate default: 9600 bps
- Bekerja dengan format standar NMEA
Modul GPS NEO-6M juga kompatibel dengan board mikrokontroler lainnya. Untuk mempelajari cara menggunakan modul GPS NEO-6M dengan Raspberry Pi, Anda dapat membaca : Sistem Peringatan Email tentang Perubahan Lokasi dengan Raspberry Pi dan Modul GPS.
Koneksi / Wiring Pin
Modul GPS NEO-6M memiliki empat pin: VCC, RX, TX, dan GND. Modul berkomunikasi dengan Arduino melalui komunikasi serial menggunakan pin TX dan RX. Berikut koneksi antarmuka GPS NEO-6M dan Arduino UNO :
GPS NEO-6M | Arduino UNO |
VCC | 5V |
RX | TX pin defined in the software serial |
TX | RX pin defined in the software serial |
GND | GND |
Mendapatkan Data Mentah / Raw Data GPS
Untuk mendapatkan raw data GPS, kita hanya perlu melakukan komunikasi serial dengan modul GPS menggunakan Software Serial.
Bahan Yang Dibutuhkan
Adapun untuk testing ini, diperlukan beberapa bahan sebagai berikut :
- Arduino UNO
- NEO-6M GPS module
- Kabel Jumper
Schematics
Koneksi kan module GPS NEO-6M ke Arduino UNO seperti yang ditunjukkan pada schematic berikut :
- Pin GND GPS NEO-6M dihubungkan ke pin GND Arduino UNO
- Pin Rx module GPS NEO-6M dihubungkan ke pin 3 Arduino UNO
- Pin Tx module GPS NEO-6M dihubungkan ke pin 4 Arduino UNO
- Pin VCC module GPS NEO-6M dihubungkan ke pin 5V Arduino UNO
Code Program
Copy code program / sketch berikut dan upload ke board Arduino UNO.
/*
* https://nn-digital.com
*/
#include <SoftwareSerial.h>
// The serial connection to the GPS module
SoftwareSerial ss(4, 3);
void setup(){
Serial.begin(9600);
ss.begin(9600);
}
void loop(){
while (ss.available() > 0){
// get the byte data from the GPS
byte gpsData = ss.read();
Serial.write(gpsData);
}
}
Pada sketch ini kita menggunakan pin 4 dan 3 sebagai pin RX dan TX untuk membangun komunikasi serial dengan modul GPS. Jika kita menggunakan pin lain, maka kita harus mengeditnya di baris berikut:
SoftwareSerial ss(4, 3);
Begitu juga, jika kita menggunakan baud rate yang berbeda dari 9600 bps, maka kita harus memodifikasi kode pada baris berikut :
ss.begin(9600);
Pada bagian code ini berfungsi membaca port serial GPS, dan ketika data diterima dari modul, data tersebut dikirim ke serial monitor.
Output
Buka Serial Monitor dari Arduino IDE dengan baud rate of 9600. Jika semuanya berjalan lancar, seharusnya akan muncul di Serial Monitor sebagai berikut :
Kita akan mendapatkan banyak informasi dalam bahasa standar GPS, NMEA. Setiap baris yang ada di Serial Monitor adalah kalimat NMEA.
Memahami Format Protokol NMEA
Kalimat NMEA dimulai dengan karakter $ dan setiap field / blok data dipisahkan oleh koma.
$GPGGA,110617.00,41XX.XXXXX,N,00831.54761,W,1,05,2.68,129.0,M,50.1,M,,*42
$GPGSA,A,3,06,09,30,07,23,,,,,,,,4.43,2.68,3.53*02
$GPGSV,3,1,11,02,48,298,24,03,05,101,24,05,17,292,20,06,71,227,30*7C
$GPGSV,3,2,11,07,47,138,33,09,64,044,28,17,01,199,,19,13,214,*7C
$GPGSV,3,3,11,23,29,054,29,29,01,335,,30,29,167,33*4E
$GPGLL,41XX.XXXXX,N,00831.54761,W,110617.00,A,A*70
$GPRMC,110618.00,A,41XX.XXXXX,N,00831.54753,W,0.078,,030118,,,A*6A
$GPVTG,,T,,M,0.043,N,0.080,K,A*2C
Ada berbagai jenis format kalimat standart NMEA. Jenis pesan ditunjukkan oleh karakter sebelum koma pertama.
GP setelah $ menunjukkan itu adalah posisi GPS. $ GPGGA adalah pesan GPS NMEA dasar, yang menyediakan lokasi 3D dan data akurasi. Contoh dalam format kalimat berikut :
$GPGGA,110617.00,41XX.XXXXX,N,00831.54761,W,1,05,2.68,129.0,M,50.1,M,,*42
- 110617 – menunjukkan waktu di mana lokasi GPS Modul, 11:06:17 UTC
- 41XX.XXXXX, N – latitude 41 deg XX.XXXXX ‘N
- 00831.54761, W – Bujur 008 deg 31.54761 ′ W
- 1 – Fix quality (0 = invalid; 1= GPS fix; 2 = DGPS fix; 3 = PPS fix; 4 = Real Time Kinematic; 5 = Float RTK; 6 = estimated (dead reckoning); 7 = Manual input mode; 8 = Simulation mode)
- 05 – jumlah satelit yang dilacak
- 2.68 – Horizontal dilution of position
- 129.0, M – Altitude / Ketinggian, dalam meter di atas permukaan laut
- 50.1, M – Tinggi geoid (permukaan laut rata-rata) di atas ellipsoid WGS84
- Field kosong – waktu dalam detik sejak pembaruan DGPS terakhir
- Field kosong – nomor ID stasiun DGPS.
- *42 – data checksum, selalu dimulai dengan *
Parsing Kalimat NMEA dengan Library TinyGPS ++
Kita dapat bekerja dengan data mentah dari GPS, atau kita dapat mengubah pesan-pesan NMEA menjadi format yang dapat dibaca dan berguna, dengan menyimpan urutan karakter ke dalam variabel. Untuk melakukan itu, kita bisa menggunakan library TinyGPS ++.
Dengan library ini dapat memudahkan kita untuk mendapatkan informasi tentang lokasi dalam format yang bermanfaat dan mudah dimengerti.
Menginstal Library TinyGPS ++
Ikuti langkah-langkah berikut untuk menginstal library TinyGPS ++ di Arduino IDE :
- Pastikan File library yang didownload memiliki format .zip
- Unzip file library tersebut dan kita akan mendapatkan folder TinyGPSPlus-master
- Ganti nama folder dari TinyGPSPlus-master ke TinyGPSPlus
- Pindahkan folder TinyGPSPlus ke folder library instalasi Arduino IDE
- Terakhir, buka kembali Arduino IDE
Library TinyGPSPlus telah menyediakan beberapa contoh tentang cara menggunakannya. Pada Arduino IDE, kita hanya perlu membuka File> Examples> TinyGPS ++, dan memilih dari contoh yang disediakan.
Catatan: contoh yang disediakan di library mengasumsikan baud rate 4800 untuk modul GPS. Kita perlu mengubahnya menjadi 9600 jika menggunakan modul GPS NEO-6M.
Mendapatkan Lokasi Menggunakan Modul GPS NEO-6M dan Library TinyGPS ++
Kita bisa mendapatkan lokasi dalam format yang mudah dengan menggunakan library TinyGPS ++. Berikut ini contoh kode program untuk mendapatkan lokasi dari GPS. Ini adalah versi sederhana dari salah satu contoh dari library.
/* https://www.nn-digital.com */
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
static const int RXPin = 4, TXPin = 3;
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(9600);
ss.begin(GPSBaud);
}
void loop(){
// This sketch displays information every time a new sentence is correctly encoded.
while (ss.available() > 0){
gps.encode(ss.read());
if (gps.location.isUpdated()){
Serial.print("Latitude= ");
Serial.print(gps.location.lat(), 6);
Serial.print(" Longitude= ");
Serial.println(gps.location.lng(), 6);
}
}
}
Output Dari Kode Program
Upload kode diatas ke Arduino, dan kita akan melihat lokasi yang ditampilkan pada serial monitor. Setelah mengunggah kode, tunggu beberapa menit untuk sementara modul menyesuaikan posisi supaya mendapatkan data yang lebih akurat. Gambar berikut menunjukkan tampilan dari serial monitor.
Pada contoh program yang lain dari library TinyGPS++ ditunjukkan bagaimana untuk mendapatkan data yang lebih lengkap selain lokasi, yaitu antara lain :
- date
- time
- speed
- course
- altitude
- satellites
- hdop
Demikian tutorial / contoh penggunaan GPS NEO-6M dengan Arduino UNO.
+++++ Semoga Bermanfaat +++++
Wow! This blog looks exactly like my old one! It’s on a totally different subject but it
has pretty much the same page layout and design. Wonderful choice of colors!
Thank you for coming to my site.