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

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

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
- Klik sini untuk download library ini.
- Dalam Software Arduino pergi ke Sketch > Include Library > Add .ZIP Libray.

- 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.