Program Arduino GPS Ublock NEO TinyGPS++

Pengantar

Pembahasan mengenai Cara Mudah Program Baca Data Google Maps GPS UBLOX NEO 6M Module Dengan Arduino, sudah pernah dibahas sebelumnya di Kelas Robot.

Yang membedakan pada program Arduino GPS Ublock NEO dengan Library TinyGPS++ kali akan menampilkan banyak data.

Selain data Latitude dan Longitude, juga menampilkan data Altitude, Jumlah Satelit, Speed, Waktu, Tanggal, dan Hari.

Emang Module GPS bisa menampilkan waktu dan tanggal juga?

Iya tentunya bisa dong, ketika sudah dapat sinyal dia bisa menampilkan banyak data tentunya.

Tambahkan Library TinyGPS dan TimeLib

Ada 2 library yang dibutuhkan silakan download terlebih dahulu melalui link dibawah ini:

  1. https://github.com/mikalhart/TinyGPSPlus/archive/refs/heads/master.zip
  2. https://github.com/PaulStoffregen/Time/archive/refs/heads/master.zip

Jika bingung bagaimana cara menambahkan library ke Arduino IDE, silakan ikuti tutorial berikut: https://kelasrobot.com/bagaimana-cara-memasukan-library-ke-aplikasi-arduino-ide/

Koding Arduino GPS Ublox NEO

Silakan gunakan koding dibawah ini, kemudian silakan upload ke Arduino.

#include <TinyGPS++.h>
#include <TimeLib.h>

//Jika Menggunakan Software Serial
//#include <SoftwareSerial.h>
//SoftwareSerial serialGps(10, 11);

//Jika Menggunakan Hardware Serial
#define serialGps Serial1

TinyGPSPlus gps;
#define time_offset 25200 //tentukan jam offset 25200 detik (7 jam) ==> UTC +7
byte last_second, Second, Minute, Hour, Day, Month;
int Year, DayOfTheWeek, SatellitesValue;
float Latitude, Longitude, Altitude, Speed;

void setup(void) {
  serialGps.begin(9600);
  Serial.begin(9600);
}

void loop() {

  while (serialGps.available() > 0) { //KETIKA GPS TERSAMBUNG DENGAN ARDUINO....

    if (gps.encode(serialGps.read())) { //KETIKA GPS MENDAPATKAN DATA / SIGNAL...

      //Dapatkan Data Satellite.......................................
      if (gps.satellites.isValid()) {
        SatellitesValue = gps.satellites.value();
      }

      //Dapatkan Data Lokasi (Latitude & Longitude)...................
      if (gps.location.isValid()) {
        Latitude = gps.location.lat();
        Longitude = gps.location.lng();
        Altitude = gps.altitude.meters();
      }

      //Dapatkan Data Altitude........................................
      if (gps.altitude.isValid()) {
        Altitude = gps.altitude.meters();
      }

      //Dapatkan Data Kecepatan........................................
      if (gps.speed.isValid()) {
        Speed = gps.speed.kmph();
      }

      //Dapatkan Data Waktu...........................................
      if (gps.time.isValid()) {
        Minute = gps.time.minute();
        Second = gps.time.second();
        Hour   = gps.time.hour();
      }

      //Dapatkan Data Tanggal.........................................
      if (gps.date.isValid()) {
        Day   = gps.date.day();
        Month = gps.date.month();
        Year  = gps.date.year();
      }

      //Tampilkan Waktu dan Tanggal yang Sudah Sesuai Offset / UTC yang diatur...
      if (last_second != gps.time.second()) {
        last_second = gps.time.second();
        // set current UTC time
        setTime(Hour, Minute, Second, Day, Month, Year);
        // add the offset to get local time
        adjustTime(time_offset);
        Hour   = hour();
        Minute = minute();
        Second = second();
        Day   = day();
        Month = month();
        Year  = year();
        DayOfTheWeek = weekday();
        Serial.println("======= MENAMPILKAN DATA GPS =======");
        Serial.println("\tSatellites Value: " + String(SatellitesValue, 8));
        Serial.println("\tLatitude\t: " + String(Latitude, 8));
        Serial.println("\tLongitude\t: " + String(Longitude, 8));
        Serial.println("\tAltitude\t: " + String(Altitude, 5));
        Serial.println("\tSpeed\t\t: " + String(Speed, 5));
        Serial.println(String() + "\tTime\t\t: " + Hour + ":" + Minute + ":" + Second );
        Serial.println(String() + "\tDate\t\t: " + Day + "-" + Month + "-" + Year );
        Serial.println(String() + "\tDay\t\t: " + DayOfTheWeek);
        Serial.println();
      }

    } //END IF - KETIKA GPS MENDAPATKAN DATA / SIGNAL...

  } //END WHILE - KETIKA GPS TERSAMBUNG DENGAN ARDUINO....

}

Hasil Pengujian

Berikut adalah hasil pengujian data ditampilkan di Serial Monitor:

Program Arduino GPS UBLOX NEO
Hasil Pengujian

Dari hasil pengujian data yang ditampilkan cukup lancar, tapi memang udah sifatnya Module GPS ini nilainya yang berubah-ubah walaupun Module diam ditempat.

Dan untuk nilai Jumlah Satelit juga Altitude terkadang tampil terkadang tidak, mungkin karena pengujian dilakukan di dalam ruangan.

Founder & Author di Kelas Robot, suka melakukan Riset Robotika dan Belajar Hal Baru. Spesialis bidang Robotika dan Internet of Things.

Leave a Reply

Your email address will not be published. Required fields are marked *

You might also like