GPS module menggunakan TinyGPSPlus.h

GPS module merupakan komponen yang digunakan untuk merekod lokasi sesuatu objek. Dalam tutorial kali ini kita akan belajar bagaimana GPS module ini berfungsi pada Arduino dengan menggunakan library TinyGPSPlus.h

Bagaimana GPS Module berfungsi?

GPS module memproses maklumat yang dihantar daripada satelit ke antena yang ada pada GPS module. Maklumat ini di hantar melalui Radio Frequency yang tertentu. Maklumat yang diproses adalah latitude, longitude dan masa.

Ketepatan maklumat ini bergantung pada jumlah satelit yang dikesan oleh GPS module dan kelajuan receiver bergerak. Semakin bnyak satelit dan semakin kurang kelajuan, semakin tepat maklumat yang diterima.

Terdapat beberapa jenis GPS module yang ada di pasaran cuma pada tutorial ini kita akan menggunakan NEO-6M GPS Module.

NEO-6M GPS Module

U-blox NEO-6M GPS Module with EPROM at Rs 599/piece | Satellite Road |  Ahmedabad| ID: 20970781962

Specification :

  • Size: 23mm x 30mm
  • Update Rate: 1 Hz, 5Hz maximum
  • Power Requirements: Power Supply Voltage: 3V – 5V
  • Baud Rate: 9600
  • Sensitivity: -161dBm
  • Number of Channels: 50
  • Antennas: Includes external patch antenna

GPS module ini mempunyai 4 pin dan disediakan dengan external antena yang perlu dipasang pada module

Lokasi antena dipasang

TinyGPSPlus.h library

TinyGPSPlus.h ini adalah library yang digunakan untuk susun dan asingkan data – data yang diterima oleh GPS module seperti latitude dan longitude.

Panduan Install Library

  1. Klik sini untuk download library ini.
  2. Dalam Software Arduino pergi ke Sketch > Include Library > Add .ZIP Libray.
  1. Pilih .ZIP file yang anda download tadi dan tekan ‘Open’.

Cara menggunakan TinyGPSPlus.h library

Rajah di bawah adalah sebagai panduan sebelum kita memulakan langkah seterusnya

DEFINING AREA

Include Library TinyGPSPlus dan SoftwareSerial(SoftwareSerial adalah library sedia ada yang digunakan untuk connection module GPS dan Arduino)

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

Cipta objek GPS dan declare pin Software Serial

TinyGPSPlus gps; // Object GPS

SoftwareSerial ss(4, 3);//pin 4 dan 3 digunakan untuk Software Serial 

Cipta Variables untuk simpan data GPS

//GPS Information variables
float Latitude;
float Longitude;

VOID SETUP

Mulakan Serial dan Software Serial

  Serial.begin(9600);
  ss.begin(9600);

VOID LOOP

Masukkan coding berikut

  if (ss.available() > 0){ // apabila Software Serial menerima data
    while(ss.available() > 0){ // Ketika Software Serial menerima data
      if (gps.encode(ss.read())){ // apabila data telah diterjemahkan
        GPSinfo(); // Subroutine untuk menyimpan data GPS
        
      }// END IF
    }  //END WHILE
  }// END IF

Coding di atas adalah command di mana data akan ditarik hanya apabila Arduino menerima data daripada GPS module melalui Software Serial(connection antara Arduino dan GPS module) dan data tersebut boleh difahami oleh Arduino.

SUB-ROUTINE

Berikut adalah coding sub-routine di mana dcoding ini haruslah diletakkan di luar void loop

void GPSinfo(){
  if (gps.location.isValid()){
    Latitude = gps.location.lat();
    Longitude = gps.location.lng();
  }
  Serial.print("Location: ");
  Serial.print(Latitude,6);
  Serial.print(",");
  Serial.print(Longitude,6);
  Serial.print(" ");

}

Coding dia atas menunjukkan kita hanya akan mengambil data location apabila data tersebut adalah valid dan printkan data tersebut ke Serial monitor dengan 6 titik perpuluhan.

Syntax gps.location.lat() adalah dimana data latitude disimpan dan syntax gps.location.lng() adalah dimana data longitude disimpan

Untuk mengambil maklumat tarikh masukkan coding seperti di bawah

  if (gps.date.isValid()){
    dayDate = gps.date.day();
    monthDate = gps.date.month();
    yearDate = gps.date.year();
  }

Untuk maklumat masa pula GPS secara default akan memberi data UTC timezone oleh itu ubah suai timezone anda pada data jam sahaja seperti coding di bawah

  if (gps.time.isValid()){
    hourTime = gps.time.hour() + 8; // Timezone Malaysia adalah UTC+8
    minuteTime = gps.time.minute();
  }

Sambungan Litar

Komponen yang diperlukan

  • Arduino Uno
  • NEO-6M GPS Module

Sambungan Diagram

  • Pin RX sambungkan ke pin 3 Arduino
  • Pin TX sambungkan ke pin 4 Arduino
  • VCC sambungkan ke 5v
  • GND sambungkan ke GND

Coding Penuh GPS Module

Berikut adalah coding yang disediakan merangkumi kesemua syntax yang dipelajari dalam tutorial ini

//Library
#include <TinyGPS++.h>
#include <SoftwareSerial.h>

TinyGPSPlus gps; // Object GPS

SoftwareSerial ss(4, 3);//pin 4 dan 3 digunakan untuk Software Serial 

//GPS Information variables
float Latitude;
float Longitude;
int dayDate = 0;
int monthDate = 0;
int yearDate = 0;
int hourTime = 0;
int minuteTime = 0;

void setup() {
  // put your setup code here, to run once:
  
  Serial.begin(9600);
  ss.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:

  if (ss.available() > 0){ // apabila Software Serial menerima data
    while(ss.available() > 0){ // Ketika Software Serial menerima data
      if (gps.encode(ss.read())){ // apabila data telah diterjemahkan
        GPSinfo(); // Subroutine untuk menyimpan data GPS
        
      }// END IF
    }  //END WHILE
  }// END IF

}

void GPSinfo(){
  if (gps.location.isValid()){
    Latitude = gps.location.lat();
    Longitude = gps.location.lng();
  }

  if (gps.date.isValid()){
    dayDate = gps.date.day();
    monthDate = gps.date.month();
    yearDate = gps.date.year();
  }

  if (gps.time.isValid()){
    hourTime = gps.time.hour() + 8; // Timezone Malaysia adalah UTC+8
    minuteTime = gps.time.minute();
  }

  Serial.print("Location: ");
  Serial.print(Latitude,6);
  Serial.print(",");
  Serial.print(Longitude,6);
  Serial.print(" ");
  Serial.print("Date: ");
  Serial.print(dayDate);
  Serial.print("/");
  Serial.print(monthDate);
  Serial.print("/");
  Serial.print(yearDate);
  Serial.print(" ");
  Serial.print("Time: ");
  Serial.print(hourTime);
  Serial.print(":");
  Serial.print(minuteTime);
  Serial.println();
  delay (1000);
}

Anda boleh lihat hasilnya dalam Serial Monitor.

Setelah upload coding, GPS module mengambil masa lebih kurang 30 saat sebelum ia berfungsi sepenuhnya.

Bonus: GPS module dan Nodemcu

Seterusnya anda akan belajar bagaimana GPS module ini digunakan pada Nodemcu

Komponen yang diperlukan

  • Nodemcu
  • NEO-6M GPS Module

Sambungan Litar

  • Pin Tx sambungkan ke pin D2 pada Nodemcu
  • Pin Rx sambungkan ke pin D1 pada Nodemcu
  • Vcc sambungkan ke 3.3v pada Nodemcu
  • GND sambungkan ke GND pada Nodemcu

Coding

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

TinyGPSPlus gps;

SoftwareSerial ss(4, 5);

//GPS Information variables
float Latitude;
float Longitude;


void setup() {
  // put your setup code here, to run once:
  
  Serial.begin(9600);
  ss.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:

  if (ss.available() > 0){
    while(ss.available() > 0){
      if (gps.encode(ss.read())){
        GPSinfo();
      }
    }  
  }

}

void GPSinfo(){
  if (gps.location.isValid())
  {
    Latitude = gps.location.lat();
    Longitude = gps.location.lng();
  }

  Serial.print("Location: ");
  Serial.print(Latitude,6);
  Serial.print(",");
  Serial.print(Longitude,6);
  Serial.println();
  delay (1000);
}

Penggunaan GPS module pada Nodemcu

Jika anda perasan, coding untuk Nodemcu adalah lebih kurang sama dengan coding untuk Arduino UNO.

Cuma apa yang apa yang berbeza antara Nodemcu dan Arduino UNO adalah penggunaan Sofware Serial iaitu pin dimana GPS module ini dipasang.

SoftwareSerial ss(4, 5);

Di atas adalah syntax pin Nodemcu yang digunakan untuk Software Serial dan pin ini adalah pin GPIO. Anda boleh rujuk gambar di bawah

Semoga tutorial ini dapat membantu anda untuk memahami cara – cara dan penggunaan GPS module ini.

SELAMAT MENCUBA

Tinggalkan komen

This site uses Akismet to reduce spam. Learn how your comment data is processed.