Contents
Untuk mendapatkan data lokasi dalam bentuk koordinat longitude dan latitude, Anda memerlukan sebuah perangkat GPS (Global Positioning System) client atau disebut juga GPS transceiver. Sistem positioning dengan GPS ini bekerja berdasarkan posisi relatif GPS client terhadap satelit-satelit GPS di luar angkasa. GPS client menerima sinyal dari satelit GPS, dan melempar balik sinyal acknowledge (ACK) ke satelit-satelit GPS. Setidaknya dibutuhkan tiga buah satelit GPS untuk mendapatkan titik koordinat lokasi yang akurat. Untuk lebih jelasnya, silahkan Anda lihat gambar di bawah untuk cara kerja sistem positioning menggunakan GPS.
Baiklah, saya pikir cukup untuk teorinya :), sekarang mari kita coba bagaimana memanfaatkan GPS untuk mengetahui lokasi alat kita. Yang pertama, tentunya Anda membutuhkan perangkat GPS client yang support komunikasi dengan mikrokontroller khususnya Arduinio yang akan kita gunakan. Seperti kita ketahui, protokol komunikasi yang didukung Arduino adalah: serial (UART), SPI (Serial Peripheral Interface), dan I2C/IIC (Inter-Integrated Circuit). Nah, di pasaran ada satu produk yang mendukung komunikasi serial UART yakni GPS UBLOX Neo. Produk ini cukup mudah ditemukan di pasaran dengan harga yang cukup terjangkau.
Seperti biasa kita akan menggunakan SoftwareSerial daripada HardwareSerial. Mengapa? Berhubung Arduino Uno hanya memiliki 1 hardwareserial di pin 0 dan 1 dan akan kita gunakan untuk debugging, maka kita akan mengemulasi pin 3 dan 4 menjadi pin serial dengan library SoftwareSerial.h. Berikut ini adalah gambar rangkaiannya.
Konfigurasi Pinout GPS Ublox Neo – Arduino
Arduino GPS Ublox
3v3 —- Vcc
Gnd —- Gnd
3 —- Rx
4 —– Tx
Alat dan Bahan Uno GPS
- Arduino Uno (versi SMD beli di sini atau Arduino Uno DIP ATMEGA328p )
- GPS module Ublox Neo (beli di sini harga 164.000)
- Kabel jumper secukupnya (beli di sini)
Sketch GPS Ublox Neo – Arduino
Yang kedua, untuk menangani GPS UBLOX Neo dengan Arduino, kita memerlukan library ‘TinyGPS++.h’ untuk memudahkan kita mengakses GPS Ublox Neo. Anda dapat mengunduh library ini secara gratis di sini. Jika sudah, Anda dapat menambahkan library tersebut ke software IDE Arduino dengan cara seperti di sini, sehingga library tersebut siap digunakan di sketch Anda.
Baiklah, langsung aja, berikut ini sketch-nya, sketch untuk mengambil data koordinat dari GPS UBLOX Neo (mungkin support untuk perangkat GPS lainnya juga).
#include <TinyGPS++.h> #include <SoftwareSerial.h> static const int RXPin = 4, TXPin = 3; static const uint32_t GPSBaud = 9600; TinyGPSPlus gps; SoftwareSerial ss(RXPin, TXPin); void setup() { Serial.begin(9600); ss.begin(GPSBaud); } void loop() { delay (1000); while (ss.available() > 0) gps.encode(ss.read()); if (gps.location.isValid()){ double latitude=gps.location.lat(); Serial.print(latitude,6); Serial.print(F("|")); Serial.println(gps.location.lng(), 6); } delay (100); }
Untuk melihat koordinat longitude dan latitude yang didapat, bisa dilihat di jendela Serial Monitor melalui menu Tools – Serial Monitor. Ohya, sebaiknya waktu mencoba modul GPS ini sebaiknya di luar ruangan, supaya terjangkau sinyal GPS dari satelit.
Berikut foto hasil percobaan saya menggunakan XBoard, yakni board Arduino yang built in ethernet port. Waktu itu XBoard-nya harus melaporkan koordinat lokasi menggunakan IoT (Internet of Things)
Demikian, tutorial kali ini, semoga bermanfaat untuk Anda. Untuk selanjutnya dapat Anda kembangkan untuk project yang lebih kompleks seperti ‘fleet monitoring’ untuk armada perusahaan, rental mobil, dll. Atau Anda dapat mengkombinasikan sebuah sensor fuel meter untuk mendeteksi tingkat efisiensi BBM kendaraan atau untuk mendeteksi truk tangki BBM ‘kencing’ di jalan 😊
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com
mas saptaji, saya udah ngikutin langkah2 diatas tapi kok gak keluar lat longnya ketika serial monitor saya buka? mohon bantuannya
lihat gps modulnya mas, led nya udah kedip-kedip blm? kalo udah berarti udah dpt sinyal gps. Kalo belum coba cari open space (halaman rumah, lapangan, dll) buat cari sinyal gps. Biasanya kl di dalam rumah sinyalnya terhalang
Sudah saya coba mas, tapi tetep gak keluar apapun di serial monitor.
Apa karena saya pakai neo 7m? Mohon bantuannya mas, penasaran saya salah di mana ini
led-nya kedip-kedip ga mas?
gak mas, cuman led power aja yang nyala.
power = 3.3 v
rx = 3
tx = 4
untuk compiling sudah gak ada yang eror
saya juga mengalami kayak punyak samen mas,
terus saya coba ganti di program tx rxnya kayak ini “static const int RXPin = 0, TXPin =1”,
alhamdulillah bisa
terima kasih atas sharingnya mas. Kalo kita sedang memprogram hardware memang wiring rangkaian harus diperhatikan. Untuk case mas samid berarti gps terhubung lewat ‘hardware serial’ di pin 0 dan 1. Nah punya mas jefri hrs dicek dulu apakah sama pake hardware serial atau ‘software serial’ di pin lain
oh, setelah pin saya tukar di code nya, dia sekarang ngebling mas, tapi masih belum keluar apapun di serial monitor. Mohon arahannya
coba cek settingan baud rate serial monitor udah sama dengan baud rate di sketch ga? lihat di pojok kanan bawah jendela serial monitor
Sudah saya pastikan mas, baud rate nya sama
Serial.begin dan ss.begin sama2 9600, dan di serial monitornya sudah saya pastikan 9600. Kira2 mana lagi ya mas yang membuat lat long nya gak muncul
harusnya kalo led udah blinking data akan terlihat di serial monitor
maaf pak mau tanya,,, kira2 tinynya pake yg versi berapa?
yg tinyGPS++ mas
Mas, mau tanya biar data koordinatnya masuk ke server iot kaya thingspeak atau database caranya gmn y mas? Bth buat skripsiku
pak,saya mau nanya kalau tanpa menggunakan arduino gmna cara pemakaian modul gps neo 6m pak?mohon dijawab ya pak
kalo modul gps neo 6m itu harus tetap ada kontrollernya, entah itu arduino, raspberry, android, pc atau yang lain. Tanpa kontroller, modul gps ini tidak akan berfungsi, karena semua ic di dalamnya hanya akan bekerja jika diperintah. Nah kalo ngga ada kontrollernya, siapa yg ngasih perintah? 🙂
Mas mah nanya, klo misalny kita pengen tau posisi modul gpsny d google maps ?
ini maksudnya otomatis atau manual masukin koordinat ke google maps? kalo otomatis butuh server, kalo manual ya tinggal masukin aja ke google maps (maps.google.com)
Mas apakah akan bekerja kalo pake modul gps yang lain?
secara umum bisa mas
Mau nanya mas, selain bawa ke tempat yg ga ke halang, Ada cara lain ga biar gps nya cepat ng lock sinyal? Misal dr coding arduino nya.
Kalo saya hanya mau ambil data, waktu (tgl,bln,thn,jam), speed dan course aja dari modul gps nya, bisa ga mas? Kira2 coding nya gmn yah mas?
Trima kasih sebelum nya mas
kasih antena dengan gain yg lebih besar mas. Kalo coding mah ngga bisa, karena sinyal itu masalah di physical layer-nya
Kalo saya hanya mau ambil data, waktu (tgl,bln,thn,jam), speed dan course aja dari modul gps nya –> bisa. Instal aja library TinyGPS, ntar ada contoh programnya
assalam pak, mau tanya untuk project tracking, contoh diatas kan pake kabel LAN ya,
klo ngambil data gps terus dikirim via gprs apakah modul gsm untuk ngirimnya harus tambah lagi, atau bisa pake modul neo tersebut. trimakasih
waalaikumslm wr.wb. Harus nambah modul GSM/GPRS lagi mas
oke makasih pak. nanti send to softserial brarti ya
iya kalo pake uno, nano atau pro mini, kalo pake mega bisa pake Serial1, Serial2 atau Serial3
mas apa punya contoh sketch untuk pengiriman data Gps dari arduino ke server..?
server mana yg dimaksud? server kan ada banyak
selamat pagi mas,, saya mau tanya.. apakah saya bisa memprogram sebuah robot yang akan kembali ke posisi awal set kordinat dengan modul gps arduino ? terima kasih.
mas mau tnya dong, modul ini bisa kita tentukan untuk set point ga mas??
pengertian set point di sini spt apa mas?
mas dibeberapa tutorial ada yg menggunakan resistor, apa ada pengaruhnya dalam menggunakan jika tidak menggunakan resistor?
terimakasih
fungsi resistor untuk mengurangi arus. Tapi hati-hati dalam pemilihan nilai resistor, kalo terlalu kecil GPS nyajadi ngga berfungsi
Kalo vcc GPS dikasik tegangan 5V arduino gmna mas ?
sebaiknya jangan mas, arusnya kurang gede untuk GPS
maaf mas saya mau bertanya, nilai koordinat sudah bisa keluar. tetapi permasalahnya data yang keluar tsb selalu berubah ubah, padahal letak dari modul GPS nya tidak saya pindahkan kemana mana. Apakah itu efek dari program atau memang sensor GPS neo 6m memiliki nilai presisi yang jelek? mohon bantuanya mas
bukan presisi jelek, tp memang akurasinya radius 10 m (coba dicek lg datasheetnya). Mungkin coba cek koordinatnya di open space (gps tidak terhalang apapun saat menghadap ke angkasa)
GPSnya kalau digunakan dibawah air masih kebaca gak ya koordinatnya??
wah, belum pernah coba juga mas 🙂
tapi kalo menurut logika, sepanjang dapat sinyal GPS dari satelit maka bisa digunakan
cara mengirim data yang diambil dari gps itu bagaimana ya?
saya sudah coba yang diatas dapat long lat nya, selanjutnya saya mau ambil data dari gps untuk dikirim.
kirim data gps lewat media apa? (contoh: sms, gprs, wifi, kabel, dll). Tiap media komunikasi caranya beda2
lewat sms pakai modul gprs sim900
bisa baca artikel yg ini sms arduino
mas mau tanya, kalau antena pada GPS modul nya saya ganti sama antena pasif buatan sendiri kira2 bisa ga? soalnya saya membuat antena (dari pcb) untuk aplikasi GPS
wah, menarik sekali mb, salut. Pada prinsipnya antena itu komponen pasif, yg aktif adl transmitter/receivernya. Parameter penting antena adl frekuensi kerjanya. Berhubung yg akan ditangkap adl frek GPS maka antenanya hrslah bekerja di frekuensi L1 (1575.42 MHz) dan L2 (1227.60 MHz)
Iya mas antena saya bekerja di frekuensi1575 MHz, apa antena saya bisa dihubungkan dengan modul gps neo6mv2 untuk mendapatkan longitude latitude dan kuat sinyalnya?
sepertinya bisa, dicoba aja
koding untuk antena buatan sendiri itu beda apa bisa sama ya?
sama mb. Kalo level software itu tetap sama. Kalo antena itu kan hardware (physical layer), bisa ganti2 tanpa dipengaruhi software. Jd mau pake antena bawaan atau buatan sendiri coding-nya tetap sama. Cuma mungkin yg perlu diperhatikan ketika bikin antena selain parameter frekuensi adalah parameter redaman, jitter dan VSWR biar hasilnya bagus
Iyaa mas sudah saya coba bisa, kalau untuk menampilkan kuat sinyalnya gimana ya mas?
yg pertama hardware gps module nya harus support NMEA v3.x, yg kedua software controllernya jg harus support NMEA 3 juga. Kalo pakearduino bs pake library TinyGPS (https://github.com/florind/TinyGPS)
TinyGPS has no member named ‘constellation’ itu maksudnya apa ya?
waduh, kurang tau mb, coba googling dl. Sy sdr blm pernah mengalami
Mas kenapa kalau pakai modul GPS untuk mendapatkan sinyal GPS harus diluar ruangan sedangkan pada saat menyalakan GPS di hp didalam ruanganpun bisa?
pada dasarnya sinyal GPS sifatnya LOS (Line of Sight), jadi harus lurus terhadap transmitternya (tidak boleh terhalang). Kalo GPS di hp itu sebenarnya ngga murni GPS tapi A-GPS (Assisted-GPS). Kalo a-gps itu selain sinyal gps murni, dia juga dibantu (assisted) oleh LBS (Location Based System) milik operator GSM, jadi begitu sinyal gps nya hilang, msh bs deteksi lokasi berdasar LBS.
Itu sistemnya kek manaa mas aji . Apakah gps , sms sudah termasuk di dalam 1 program
kl program di atas hanya untuk menangani data gps mas, kl ditambahkan program sms jg bisa. Contoh program sms arduino
mas mau tanyak, saya sudah diluar ruangan tapi kok pada modul gpsnya lednya endak nyala itu kenapa mas, apa ada solusi mas ?
mungkin power supply nya kurang gede arusnya
mas saya sudah menyambungkan gps dan arduino nya ke laptop dan vcc sudah ke 3,3v tx dan rx nya jg sudah tepat. tapi kenapa di serial monitornya tidak muncul hasil data nya ya?
led udah blinking belum mas? kalo belum coba keluar rumah (open space), antena gps harus tidak terhalang saat penerimaan sinyal gps
sudah mas, led sudah nyala. tetapi data belum keluar di serial monitor
lednya blinking ya, bukan sekedar nyala manteng…. trus coba cek lg scriptnya, udah ada Serial.print, belum?
mas mohon maaf bagaimana cara membuat if dengan menggunakan gps ublox ?
sama kalau mau buat libery sendiri bagaimana ya mas ?
maksudnya ‘membuat if dengan gps ublox’ itu gmn mas? kalo membuat library caranya tinggal coding pake bhs c/c++ kmd simpan dengan ekstension .c/.cpp kmd simpan di folder ‘library’ arduino
gan bisa bantu sya ubah coding di atas biar nantinya link lokasi yang ada bisa sya kirim melalui SIM800L
tinggal tambahkan script seperti pada artikel berikut sim800 arduino
Mas..saya pake neo m8t tp pakai antena topgnss model bgl-4504 kok susah lock ya..klo pk antena bawaan cepet nge lcknya..
Apakah ada yg perlu dirubah..mksh.
antenanya bekerja di frekuensi berapa mas?
Pagi mas saya mau nanya, kalo serial.begin menggunakan 115200 bisa tidak ya?
bisa mas
Maaf mas sy pke GPS M8N led sudah blinking dan data latitude longitude masuk namun 0.000000 kira2 kesalahan dimana ya? terimakasih sebelumnya
udah dicoba di open space belum?
Sudah bisa mas, terimakasih
sama-sama, semoga bermanfaat 🙂
ko modul gps saya led nya tidak ada tanda” kehidupan? wiring dh bner gan…tp g nyala sama sekali…apakah gps neo 6 sprti itu?
harusnya ada led yang berkedip mas
antenanya ganti coba, kemungkinan rusak
mas saya ingin bertanya , bagaimana program untuk mengunci sebuah titik kordinat dr modul gps tersebut untuk menjadi titik acuan
simpan dalam sebuah variabel
Bang GPS saya LED nya sama sekali gak Blinking padahal udah sesuai, gimana ya ??
coba taruh di luar rumah
Mau tanya om, cara menafsirkan data nmea 1803 ke arduino (pakai rs485) gimana ya sketchnya kira2, biar bisa ditampilkan di serial monitor datanya? Terimakasih om
ceritanya panjang, bisa di-googling aja 🙂
Kalibrasi modul GPS ini bagaimana yh ?
belum pernah melakukan kalibrasi, karena setiap dicoba sudah pas hasilnya. Sepertinya sudah dikalibrasi dari pabriknya, tinggal diambil aja data-datanya lewat library
Mas mau tanya, bagaimana cara convert data double longitute dan latitute ke tipe data string mas? makasih
kalo saya sarankan diconvert ke variabel char array aja mas, lebih hemat SRAM. Tapi misalkan butuhnya String tinggal diubah pake perintah String (variabel_char_array). Berikut contohnya
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
float latitude = -6.20202;
float longitude = 106.65659;
char latBuffer[10];
char longBuffer[10];
char link[60];
char x[6]=”101010″;
char cx0=x[0];
char cx1=x[1];
Serial.println(cx0);
Serial.println(cx1);
dtostrf(latitude, 3, 5, latBuffer);
dtostrf(longitude, 3, 2, longBuffer);
sprintf_P(link, PSTR(“www.google.it/maps/place/%s,%s”), latBuffer, longBuffer);
Serial.println(link);
char xbuffer[30];
sprintf(xbuffer,”%s%c%c”,”data=”,cx0,x[1]);
Serial.println(xbuffer);
delay(1000);
}
Permisi pak, saya lagi bikin tugas nRF24L01+GPS cuma mau saya ubah ke string. kalo saya ubah langsung tidak muncul ke serial monitor . #include #include #include #include //#include #include static const int RXPin = 2; static const int TXPin = 3; //const uint64_t pipe1 = 0xF0F0F0F0AA; // The TinyGPS++ object TinyGPSPlus gps; // The serial connection to the GPS device SoftwareSerial ss(RXPin, TXPin); struct pengirimGPS{ float latitude; float longitude; /* unsigned long date; unsigned long time; */ }; pengirimGPS gpsData; double latitude, longitude; void setup() { Serial.begin(9600); ss.begin(9600); Serial.println(“Setting up radio”); // Setup transmitter radio radio.begin(); radio.openWritingPipe(0xF0F0F0F0E1LL); //untuk 1 sensor… Read more »