Baca Koordinat GPS BN-220 dengan Arduino Uno

Baca Koordinat GPS BN-220 dengan Arduino Uno

Tutorial membaca data lokasi dari GPS BN-220 menggunakan Arduino Uno tanpa library tambahan. Termasuk wiring, parsing NMEA, dan konversi ke format DMS.

Sensor GPS BN-220 adalah modul navigasi berbasis UBlox yang mendukung sistem GNSS global seperti GPS, GLONASS, dan Galileo. Modul ini sangat populer karena ukurannya kecil, konsumsi daya rendah, dan cukup akurat. Data lokasi yang dikirim menggunakan format NMEA, seperti $GNGGA, dapat dibaca langsung tanpa library dengan Arduino Uno.

Untuk memahami lebih dalam pengaturan sensor GPS BN-220, kamu dapat merujuk ke dokumentasi aslinya:
👉 Datasheet BN-220
Dan untuk konfigurasi lanjutan via software u-center dari u-blox, cek di sini:
👉 Setting GPS dengan u-center

Alat dan Bahan

KomponenJumlahKeterangan
Arduino Uno1Mikrokontroler utama
GPS BN-2201Modul GPS GNSS ublox
Kabel jumper4Untuk koneksi UART dan daya

Wiring Diagram GPS BN-220

  • VCC (Merah) → 5V Arduino
  • GND (Hitam) → GND Arduino
  • TX (Hijau) → Pin 10 Arduino
  • RX (Kuning) → Pin 11 Arduino

Modul BN-220 menggunakan antarmuka UART. Karena Arduino Uno hanya punya 1 port Serial, kita bisa pakai SoftwareSerial (untuk Uno) atau Serial1/2 (untuk ESP32).

Kode Program GPS BN-220 (Tanpa Library)

#include <Arduino.h>

#define RXD2 2  // Pin RX (menerima dari TX GPS)
#define TXD2 3  // Pin TX (tidak digunakan)

// Buffer dan variabel parsing
String data_baris = "";
String latitude, longitude;
char latDirection, lonDirection;

// Konversi koordinat mentah ke format DMS
String convertToDMS(String rawCoordinate, char direction) {
  int degrees;
  float minutes;

  if (rawCoordinate.length() == 9 || rawCoordinate.length() == 10) {
    degrees = rawCoordinate.substring(0, 2).toInt();
    minutes = rawCoordinate.substring(2).toFloat();
  } else if (rawCoordinate.length() == 11 || rawCoordinate.length() == 12) {
    degrees = rawCoordinate.substring(0, 3).toInt();
    minutes = rawCoordinate.substring(3).toFloat();
  } else {
    return "Invalid coordinate";
  }

  int wholeMinutes = (int)minutes;
  float seconds = (minutes - wholeMinutes) * 60.0;
  return String(degrees) + "°" + String(wholeMinutes) + "'" + String(seconds, 3) + "\"" + direction;
}

// Parsing $GNGGA
void parseGGA(String nmea, String &lat, char &latDir, String &lon, char &lonDir) {
  int idx = 0, lastIdx = -1;
  for (int i = 0; i < 7; i++) {
    lastIdx = idx;
    idx = nmea.indexOf(',', lastIdx + 1);
    if (i == 2) lat = nmea.substring(lastIdx + 1, idx);
    if (i == 3) latDir = nmea.charAt(lastIdx + 1);
    if (i == 4) lon = nmea.substring(lastIdx + 1, idx);
    if (i == 5) lonDir = nmea.charAt(lastIdx + 1);
  }
}

// Fungsi utama
void cek_gps() {
  if (Serial1.available()) {
    char c = Serial1.read();
    data_baris += c;

    if (c == '\n') {
      if (data_baris.indexOf("GGA") != -1) {
        Serial.println(data_baris);
        parseGGA(data_baris, latitude, latDirection, longitude, lonDirection);
        String latDMS = convertToDMS(latitude, latDirection);
        String lonDMS = convertToDMS(longitude, lonDirection);
        Serial.println("Latitude (DMS): " + latDMS);
        Serial.println("Longitude (DMS): " + lonDMS);
      }
      data_baris = "";
    }
  }
}

void setup() {
  Serial.begin(115200);
  Serial1.begin(57600, SERIAL_8N1, RXD2, TXD2);
  Serial.println("GPS BN-220 Tracker Siap!");
}

void loop() {
  cek_gps();
}

Penjelasan Program

  • Data GPS dikirim dalam format NMEA, contohnya $GNGGA.
  • Kita ambil baris yang mengandung GGA dan mem-parsing kolom latitude dan longitude.
  • Fungsi convertToDMS() mengubah format mentah seperti 0137.00375 menjadi format derajat-menit-detik (DMS)1°37'0.225"N.
  • Program tidak menggunakan library tambahan, cocok untuk eksplorasi lebih dalam.

Referensi parsing dan struktur format NMEA bisa dilihat di:
👉 NMEA Sentences Format (NMEA.org)

Langkah Pengujian

  1. Hubungkan GPS ke Arduino sesuai wiring.
  2. Upload kode ke Arduino Uno.
  3. Buka Serial Monitor dengan baudrate 115200.
  4. Tunggu sinyal satelit (butuh waktu hingga 30 detik – 2 menit tergantung lokasi).
  5. Setelah sinyal diterima, akan muncul data lokasi lengkap dalam format DMS.

Kesimpulan

Sensor GPS BN-220 sangat andal untuk proyek pelacakan lokasi dan robotik. Bahkan tanpa library pun, kita bisa langsung membaca data mentah GPS dan mengubahnya menjadi lokasi akurat.

Tutorial ini cocok sebagai dasar untuk proyek pelacak kendaraan, logger GPS, atau integrasi dengan peta online dan IoT.

Diskusi lebih lanjut kontak di bawah :

Media sosial lainnya :

Baca juga :

Sensor Suhu MAX31865 Arduino Uno (PT100)

Cara Memprogram Rotary Encoder Pada ESP32