Anda di halaman 1dari 17

LAPORAN RESMI

MIKROPROCESSOR DAN ANTARMUKA 2


ANTARMUKA MODUL GPS DENGAN ARDUINO DAN PROCESSING

Nama : Amalia Rizki Fadhila


Nrp : 1210181005
Kelas : 3 D4_TA
Dosen : Akuwan Shaleh

D4 TEKNIK TELEKOMUNIKASI
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA

2020/2021
MODUL 12
ANTARMUKA MODUL GPS DENGAN ARDUINO DAN PROCESSING

I. TUJUAN

 Membuat aplikasi interface modul GPS dengan mikrokontroler arduino dan


processing
 Membaca data dari modul GPS menggunakan arduino dan menampilkan pada
processing

II. DASAR TEORI


GPS (Global Positioning System)
 Sistem teknologi yang dirancang untukmenunjukkan posisi atau lokasi yang bias
digunakan kapan saja dan di mana saja.
 Memanfaatkan satelit untuk mengirimkan sinyal sehingga bisa mendeteksi lokasi suatu
tempat yang diinginkan.

Elemen yang Digunakan GPS

 GPS melibatkan 3 elemen untuk menjalankan fungsinya, yaitu satelit, elemen kontrol,
dan elemen pengguna.

Cara Kerja GPS


1. GPS sendirimengandalkan pengukuran jarakatau jangkauan, yaitu antara penerima
dengan satelit.
2. Satelit akan berputar mengelilingi bumi dalam lintasan orbit.
3. Kemudian, satelit akan mengirimkan sinyal keberadaan lokasi suatu tempat yang dapat
dilacak melalui GPS.
4. Segmen kontrol atau stasiun bumi akan memancarkan radar untuk mengontrol apakah
satelit dapat berfungsi dengan baik.
5. Dengan begitu dapat dipahami bahwa ketiga elemen ini saling mendukung satu sama
lain, sehingga cara kerja GPS dapat berjalan dengan baik oleh setiap penggunanya.

Fungsi GPS

Menentukan letak di permukaan bumi dengan bantuan sinkronisasi sinyal satelit yang
mengirimkan sinyal gelombang mikro ke Bumi, sehingga dapat digunakan untuk
menentukan kecepatan, arah, letak, dan waktu.

Jenis-jenis GPS

 GPS untuk Militer


 GPS untuk Navigasi
 GPS untuk Sistem Informasi Geografis
 GPS untuk Sistem Pelacakan Kendaraan
 GPS untuk Pemantau Gempa

Sistem Koordinat GPS


 Sistem koordinat global yang biasa digunakan dalam sistem GPS disebut sebagai
koordinat GEOGRAFI.
 Koordinat geografi ini dapat dipetakan ke koordinat XY dengan sumbu X sebagai
bujur dan sumbu Y sebagai lintang.

Format Data GPS


 Format data keluaran GPS ditetapkan oleh NMEA (National Maritime Electronic
Association) dan dapat dikoneksikan ke komputer melalui port komunikasi serial
dengan menggunakan kabel RS-232 atau ke media perangkat serial seperti
mikrokontroler.
 Untuk sekarang ini, format yang sering digunakan sebagai standar data keluaran GPS
adalah format NMEA 0183.

Modul GPS
✓ U-Blox GPS NEO-6M

Spesifikasi U-Blox GPS NEO-6M

 Tipe penerima: 50 kanal, GPS L1 frequency, C/A Code. SBAS: WAAS, EGNOS,
MSAS
Sensitivitas penjejak & navigasi: -161 dBm (reakuisisi dari blank-spot: -160 dBm)
 Sensitivitas start: -147 dBm pada cold-start, -156 dBm pada hot start.
 Kecepatan pembaharuan data / navigation update rate: 5 Hz
 Akurasi penetapan lokasi GPS secara horisontal: 2,5 meter (SBAS = 2m)
 Rentang frekuensi pulsa waktu dapat diseting antara 0,25 Hz hingga 1 kHz.
 Akurasi sinyal pulsa waktu: RMS 30 ns (99% dalam kurang dari 60 ns) dengan
granularitas 21ns atau 15 ns saat terkompensasi.
 Akurasi kecepatan: 0,1 meter / detik.
 Akurasi arah (heading accuracy): 0,5°.
 Batasan operasi: daya tarik maksimum 4x gravitasi, ketinggian maksimum 50 Km,
kecepatan maksimum 500 meter / detik (1800 km/jam).

III. Peralatan:

 Arduino UNO
 Modul GPS (U-Blox GPS NEO-6M)
 Bread board
 Kabel Jumper
 Software Processing
 Simulator Proteus

IV. Percobaan:
Menampilkan data pada Virtual Terminal
Rangkaian:
Menampilkan data pada Virtual Terminal & Processing

Program Arduino
#include <TinyGPS.h>
TinyGPS gps;
void setup()
{
Serial.begin(9600);
Serial.println("GPS Mulai");
Serial.println();
}
void loop()
{
bool newData = false;
unsigned long chars;
unsigned short sentences, failed;
for (unsigned long start = millis(); millis() - start < 1000;)
{
while (Serial.available())
{IDE
char c = Serial.read();
if (gps.encode(c))
newData = true;
}
}
if (newData) //If newData is true
{
float flat, flon;
unsigned long age;
gps.f_get_position(&flat, &flon, &age);
Serial.print("Latitude = ");
Serial.print(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat, 6);
Serial.print(" Longitude = ");
Serial.print(flon == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flon, 6);
}
Serial.println(failed);
}

Program Proteus
import processing.serial.*;
Serial myPort;
String val;
void setup()
{
String portName = Serial.list()[0];
myPort = new Serial(this, portName, 9600);
}
void draw()
{
if ( myPort.available() > 0)
{
val = myPort.readStringUntil('\n');
}
println(val);
}
V. Hasil :
Amati pada IDE Processing dan virtual terminal, catat data yang ditampilkan.

VI. Latihan :
1. Buatlah program agar GPS dapat mengetahui data kecepatan (Knots), letak (Lat &
Long), waktu (HHMMSS), Tanggal (DDMMYY) dan arah (Course)
Link Output Percobaan dan Latihan
https://drive.google.com/drive/folders/130aeb3ADqPlmmgzQhLk5NLGxkwSkgMXL?u
sp=sharing

VII. Hasil Percobaan dan Latihan


PERCOBAAN
1. Menampilkan data pada Virtual Terminal
Rangkaian

Program Arduino
#include <TinyGPS.h>
TinyGPS gps;
void setup()
{
Serial.begin(9600);
Serial.println("GPS Mulai");
Serial.println();
}
void loop()
{
bool newData = false;
unsigned long chars;
unsigned short sentences, failed;
for (unsigned long start = millis(); millis() - start < 1000;)
{
while (Serial.available())
{
char c = Serial.read();
if (gps.encode(c))
newData = true;
}
}
if (newData) //If newData is true
{
float flat, flon;
unsigned long age;
gps.f_get_position(&flat, &flon, &age);
Serial.print("Latitude = ");
Serial.print(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat, 6);
Serial.print(" Longitude = ");
Serial.print(flon == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flon, 6);
}
Serial.println(failed);
}

Output
Analisa
Pada percobaan pertama adalah menghubungkan mikrokontroler dengan module GPS.
Dalam rangkaian diatas, mikrokontroler memiliki tugas sebagai penerima dari module
GPS. Pada saat module GPS memiliki nilai maka akan dilakukan proses pengiriman data.
Module GPS akan melakukan sensor secara simulasi terhadap keberadaan perangkat. Oleh
karena itu diberikan program seperti dibawah ini :
float flat, flon;
unsigned long age;
gps.f_get_position(&flat, &flon, &age);
Serial.print("Latitude = ");
Serial.print(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat, 6);
Serial.print(" Longitude = ");
Serial.print(flon == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flon, 6);
Diinisialisasi bahwa Latitude, dan Longitude akan menghasilkan bilangan float. Kemudian
hasil dari program tersebut akan ditampilkan output oleh virtual terinal. Pada virtual
terminal akan menampilkan longitude dan latitude untuk mengetahui lokasi keberadaan
secara simulasi.

2. Menampilkan data pada Virtual Terminal & Processing


Rangkaian
Program Arduino
#include <TinyGPS.h>
TinyGPS gps;
void setup()
{
Serial.begin(9600);
Serial.println("GPS Mulai");
Serial.println();
}
void loop()
{
bool newData = false;
unsigned long chars;
unsigned short sentences, failed;
for (unsigned long start = millis(); millis() - start < 1000;)
{
while (Serial.available())
{
char c = Serial.read();
if (gps.encode(c))
newData = true;
}
}
if (newData) //If newData is true
{
float flat, flon;
unsigned long age;
gps.f_get_position(&flat, &flon, &age);
Serial.print("Latitude = ");
Serial.print(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat, 6);
Serial.print(" Longitude = ");
Serial.print(flon == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flon, 6);
}
Serial.println(failed);
}

Program Processing
import processing.serial.*;
Serial myPort;
String val;
void setup()
{
String portName = Serial.list()[0];
myPort = new Serial(this, portName, 9600);
}
void draw()
{
if ( myPort.available() > 0)
{
val = myPort.readStringUntil('\n');
}
println(val);
}
Output
Analisa
Percobaan kedua terdapat 2 output yang pertama melalui virtual terminal, dan yang kedua
pada software processing.. Pada rangkaian diatas mikrokontroler masih bertindak sebagai
Rx (penerima) melalui port Arduino (1) sedangkan module GPS sebagai (Tx)pengirim.

Dengan baud rate 9600 melalui COM1 mikrokontroler dapat berkomunikasi dengan
processing. Sehingga dalam jaringan ini mikrokontroler sebagai Tx sedangkan processing
sebagai Rx. Pada module GPS akan melakukan deteksi lokasi secara simulasi yang
dikaitkan dengan letak perangkat yang digunakan, selanjutnya data tersebuat akan
dikirimkan ke mikrokontroler dan mencetak data sebagai Longitude dan Latitude. Pada
virtual terminal akan menampilkan otomatis data dari module GPS untuk processing data
masih harus dikirim melalui COM1 dan dibaca processing kemudian data tersebut
ditampilkan pada console processing.

Kesimpulan :

1. Modulo GPS merupakan perangkat untuk mendeteksi lokasi, namun dalam simulasi ini
letak longitude dan latitude masih dalam simulasi sehingga bukan keadaan realita.
2. Modulo GPS memberi data longitude dan longitude untuk penentuan lokasi target.
3. Modulo GPS menjadi Tx selanjutnya mikrokontroler menjadi Rx pada percobaan ini,
sedangkangkan untuk komunikasi dari mikrokontroler dengan processing,
mikrokontroler bertindak sebagai Tx dan processing sebagai Rx.
LATIHAN
1. Buatlah program agar GPS dapat mengetahui data kecepatan (Knots), letak (Lat & Long),
waktu (HHMMSS), Tanggal (DDMMYY) dan arah (Course)
Rangkaian

Program Arduino
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
TinyGPSPlus gps;
void setup()
{
Serial.begin(9600);
Serial.println(F("Simulasi GPS Praktikum 12 (Amalia)"));
Serial.println();
}
void loop()
{
bool newData = false;
unsigned long chars;
unsigned short sentences, failed;
for (unsigned long start = millis(); millis() - start < 1000;)
{
while (Serial.available())
if(gps.encode(Serial.read()))
newData = true;
}
if (millis() > 5000 && gps.charsProcessed() < 7)
{
Serial.println(F("tidak ada module GPS, cek wiringmu!"));
while(true);
}
if (newData)
//Menampilkan Lokasi
Serial.print(F("Location : "));
if (gps.location.isValid())
{
Serial.print(gps.location.lat(), 6);
Serial.print(F(","));
Serial.print(gps.location.lng(), 6);
Serial.println();
}
//Menampilkan data tanggal
Serial.print(F(" Date: "));
if (gps.date.isValid())
{
Serial.print(gps.date.month());
Serial.print(F("/"));
Serial.print(gps.date.day());
Serial.print(F("/"));
Serial.print(gps.date.year());
Serial.println();
}
//Menampilkan data waktu
Serial.print(F("Time:"));
if (gps.time.isValid())
{
if (gps.time.hour() < 10)
Serial.print(F("0"));
Serial.print(gps.time.hour());
Serial.print(F(":"));
if (gps.time.minute() < 10) Serial.print(F("0"));
Serial.print(gps.time.minute());
Serial.print(F(":"));
if (gps.time.second() < 10) Serial.print(F("0"));
Serial.print(gps.time.second());
Serial.print(F("."));
if (gps.time.centisecond() < 10) Serial.print(F("0"));
Serial.print(gps.time.centisecond());
Serial.println();
}
//Menampilkan kecepatan
Serial.print(F(" Kecepatan : "));
if (gps.speed.isValid())
{
Serial.print(gps.speed.knots());
Serial.print(F(" knots"));
Serial.println();
}
//Menampilkan Arah
Serial.print(F(" Arah : "));
Serial.print("/n");
if (gps.course.isValid())
{
Serial.print(gps.course.deg());
Serial.println(F(" deg"));
Serial.println();
}
else
{
Serial.print(F("INVALID"));
}
Serial.println();
}
Output

Keterangan:
Pada latihan ditambahkan program untuk memaksimalkan kinerja dari module GPS yakni
dengan menampilkan kecepatan (Knots), letak (Lat & Long), waktu (HHMMSS), Tanggal
(DDMMYY) dan arah (Course). Untuk file library Arduino digunakan library lain sehingga
dapat menambahkan beberapa informasi tersebut.

Anda mungkin juga menyukai