Mengekstraksi Lintang dan Bujur dari Sinyal GPS di Arduino
Dalam tutorial ini, kita akan mempelajari cara mengekstrak data lintang dan bujur dari sinyal GPS menggunakan Arduino dan modul GPS Ublox NEO-6M. Proyek ini sangat berguna untuk aplikasi yang memerlukan pelacakan lokasi, seperti robotika atau navigasi luar ruangan. Di akhir tutorial ini, Anda akan memiliki program yang berfungsi untuk membaca data GPS dan mencetak koordinat ke monitor serial.

Sebelum kita masuk ke detail, Anda mungkin ingin merujuk ke video terkait untuk klarifikasi lebih lanjut tentang pengkabelan dan implementasi kode (di video pada 00:00).
Penjelasan Perangkat Keras
Komponen utama untuk proyek ini adalah modul GPS Ublox NEO-6M. Modul ini dirancang untuk menyediakan data posisi yang akurat menggunakan sinyal dari satelit GPS. Modul ini dapat menerima sinyal dari beberapa satelit secara bersamaan, yang memungkinkan pelacakan lokasi yang presisi. Modul ini berkomunikasi dengan Arduino menggunakan komunikasi serial, sehingga mudah diintegrasikan ke berbagai proyek.
Selain modul GPS, Anda akan memerlukan papan Arduino untuk memproses data GPS. Arduino akan membaca data yang dikirim oleh modul GPS dan mengekstrak nilai lintang dan bujur untuk digunakan lebih lanjut. Modul GPS biasanya beroperasi pada 5V, dan menyediakan keluaran serial yang dapat dibaca oleh Arduino melalui pin RX-nya.
Detail Datasheet
| Produsen | u-blox |
|---|---|
| Nomor bagian | NEO-6M |
| Tegangan logika/IO | 3.3V |
| Tegangan suplai | 3.0 hingga 5.5V |
| Arus keluaran | ≤ 50 mA |
| Sensitivitas GPS | -165 dBm |
| Suhu operasi | -40 hingga 85 °C |
| Tingkat pembaruan | 1 Hz (bawaan) |
| Kemasan | 25 x 35 x 4 mm |
| Catatan / varian | Berbagai konfigurasi tersedia |
- Pastikan modul GPS terhubung ke sumber daya yang stabil (3.0 hingga 5.5V).
- Gunakan pustaka yang sesuai untuk menangani penguraian data GPS.
- Jauhkan antena dari penghalang untuk penerimaan satelit yang lebih baik.
- Periksa baud rate modul GPS; biasanya beroperasi pada 9600 baud.
- Pertimbangkan untuk menggunakan kapasitor untuk meratakan daya jika modul GPS tidak stabil.
Instruksi Pengkabelan

Untuk menghubungkan modul GPS NEO-6M ke Arduino Anda, mulailah dengan menghubungkan pin VCC modul GPS ke pin 5V pada Arduino. Selanjutnya, hubungkan pin GND modul GPS ke pin ground (GND) pada Arduino. Modul GPS akan berkomunikasi dengan Arduino menggunakan pin TX dan RX. Hubungkan pin TX modul GPS ke pin RX (biasanya pin 0) pada Arduino.
Jika Anda menggunakan Arduino dengan pin I2C khusus, pastikan untuk menghubungkan pin SDA dan SCL dengan tepat (biasanya A4 untuk SDA dan A5 untuk SCL pada papan Arduino standar). Setelah pengkabelan, periksa kembali semua koneksi untuk memastikan semuanya aman dan terorientasi dengan benar.
Contoh Kode & Penjelasan
Berikut adalah kutipan singkat dari kode untuk menginisialisasi komunikasi serial dan menyiapkan string masukan untuk data GPS:

void setup() {
Serial.begin(9600);
inputString.reserve(200);
}
Kode ini menginisialisasi komunikasi serial pada baud rate 9600 dan menyediakan ruang untuk string data GPS yang masuk.
Selanjutnya, mari kita lihat bagian kode yang memproses data GPS yang masuk dan mengekstrak lintang dan bujur:
if (BB == signal) {
String LAT = inputString.substring(7, 17);
String LON = inputString.substring(20, 31);
Serial.println(LAT);
Serial.println(LON);
}
Dalam potongan ini, program memeriksa apakah data yang masuk cocok dengan sinyal GPS yang diharapkan. Jika cocok, program mengekstrak nilai lintang dan bujur dari string masukan dan mencetaknya ke monitor serial.
Terakhir, kode ini menyertakan bagian untuk menangani data baru yang tiba melalui koneksi serial:
void serialEvent() {
while (Serial.available()) {
char inChar = (char) Serial.read();
inputString += inChar;
if (inChar == '\\n') {
stringComplete = true;
}
}
}
Fungsi ini membaca karakter yang masuk dari port serial dan menambahkannya ke inputString. Setelah karakter baris baru terdeteksi, fungsi ini mengatur flag stringComplete menjadi true, yang menunjukkan bahwa string data lengkap telah diterima.
Demonstrasi / Apa yang Diharapkan
Setelah mengunggah kode dan menjalankan Arduino, Anda akan melihat nilai lintang dan bujur tercetak di monitor serial. Penting untuk memastikan bahwa modul GPS memiliki pandangan yang jelas ke langit untuk menerima sinyal satelit secara efektif. Jika modul tidak menerima sinyal, modul mungkin tidak menampilkan koordinat yang valid (di video pada 02:30).
Kesalahan umum termasuk kesalahan pengkabelan, pasokan daya yang tidak mencukupi, dan penerimaan satelit yang buruk. Pastikan untuk memecahkan masalah aspek-aspek ini jika Anda mengalami masalah.
Stempel Waktu Video
- 00:00 - Pendahuluan
- 02:30 - Instruksi pengkabelan
- 05:00 - Penjelasan kode
- 08:15 - Demonstrasi fungsionalitas GPS
/*
* This is Arduino code for the Ublox NEO-6M GPS module.
* This code extracts the GPS latitude and longitude so it can be used for other purposes.
*
* Written by Ahmad Nejrabi for Robojax Video
* Date: January 24, 2017, in Ajax, Ontario, Canada
* Permission granted to share this code, given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*
*/
// Written for RoboJax.com
String inputString = ""; // a string to hold incoming data
boolean stringComplete = false; // whether the string is complete
String signal = "\$GPGLL";
void setup() {
// initialize serial:
Serial.begin(9600);
// reserve 200 bytes for the inputString:
inputString.reserve(200);
}
void loop() {
// print the string when a newline arrives:
if (stringComplete) {
String BB = inputString.substring(0, 6);
if (BB == signal) {
String LAT = inputString.substring(7, 17);
int LATperiod = LAT.indexOf('.');
int LATzero = LAT.indexOf('0');
if (LATzero == 0) {
LAT = LAT.substring(1);
}
String LON = inputString.substring(20, 31);
int LONperiod = LON.indexOf('.');
int LONTzero = LON.indexOf('0');
if (LONTzero == 0) {
LON = LON.substring(1);
}
Serial.println(LAT);
Serial.println(LON);
}
// Serial.println(inputString);
// clear the string:
inputString = "";
stringComplete = false;
}
}
/*
SerialEvent occurs whenever new data arrives via the
hardware serial RX. This routine runs between each
time loop() runs, so using delay inside loop can delay
response. Multiple bytes of data may be available.
*/
void serialEvent() {
while (Serial.available()) {
// get the new byte:
char inChar = (char) Serial.read();
// add it to the inputString:
inputString += inChar;
// if the incoming character is a newline, set a flag
// so the main loop can do something about it:
if (inChar == '\\n') {
stringComplete = true;
}
}
}
Hal-hal yang mungkin Anda butuhkan
-
AmazonNeo 6m GPS module on Amazonamzn.to
-
eBayNeo 6m GPS module on eBayebay.us
-
AliExpressNeo 6m 7m 8m on AliExpresss.click.aliexpress.com
-
AliExpressNeo 6m 7m 8m on AliExpress-2s.click.aliexpress.com
Sumber daya & referensi
Belum ada sumber daya.
Berkas📁
File lainnya
-
Lembar Data GPS TinyGPSPlus NEO-7Lembar data untuk modul GPS u-blox NEO-7, penerima GNSS ringkas dengan sensitivitas tinggi dan konsumsi daya rendah. Ini menyediakan data posisi melalui UART dan umum digunakan dengan Arduino dan pustaka TinyGPSPlus.
robojax_GPS_TinyGPSPlus_NEO-7_DataSheet.pdf1.73 MB