Pada
artikel sebelumnya sudah dijelaskan cara mengakses modul GPS dengan arduino,
dan pada artikel ini merupakan pengembangan dari artikel sebelumnya, yakni
hanya ditambahkan dengn LCD untuk menampilkan titik koordinat longitude atau
garis bujur dan latitude atau garis lintang. Untuk caranya dapat kalian lihat
dibawha ini
Komponen
yang dibutuhkan yaitu :
- Arduino
- Modul GPS Neo6MV2
- LCD 16x2 i2c
- Kabel jumper
- Laptop yang terinstal Arduino IDE
Selanjutnya
rangkai semua komponen seperti pada gambar dibawah ini
Keterangan
:
Modul
GPS terdapat 4 pin
- Pin GND hubungkan ke pin GND pada Arduino
- Pin RX hubungkan ke pin 3 digital pada arduino
- Pin TX hubungkan ke pin 4 digital pada arduino
- Pin VCC hubungkan ke pin 5v pada arduino
Pada
modul i2c pada LCD terdapat 4 pin
- Pin VCC hubungkan juga ke pin 5v pada arduino
- Pin GND hubungkan ke pin GND pad arduino
- Pin SCL hubungkan ke pin A5 pada arduino
- Pin SDA hubungkan ke pin A4 pada arduino
Setelah
semua komponen terhubung selanjutnya memprogram arduino
- Instal terlebih dahulu library LCD
- Setelah library LCD terinstal instal library GPS
- Untuk cara instal GPS bisa kalian lihat disini
- Setelah itu copy program dibawah ini dan pastekan ke project arduino ide kalian
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
#include <TinyGPS.h>
SoftwareSerial mySerial(10, 11);
TinyGPS gps;
LiquidCrystal_I2C lcd(0x3F, 16, 2);
void gpsdump(TinyGPS &gps);
void printFloat(double f, int digits = 2);
void setup()
{
lcd.begin();
lcd.clear();
lcd.noCursor();
Serial.begin(9600);
mySerial.begin(9600);
delay(1000);
Serial.println("uBlox Neo 6M");
Serial.print("Testing TinyGPS library v. "); Serial.println(TinyGPS::library_version());
Serial.println("by Mikal Hart");
Serial.println();
Serial.print("Sizeof(gpsobject) = ");
Serial.println(sizeof(TinyGPS));
Serial.println();
}
void loop() // run over and over
{
bool newdata = false;
unsigned long start = millis();
// Every 5 seconds we print an update
while (millis() - start < 5000)
{
if (mySerial.available())
{
char c = mySerial.read();
//Serial.print(c);
if (gps.encode(c))
{
newdata = true;
break;
}
}
}
if (newdata)
{
Serial.println("Acquired Data");
Serial.println("-------------");
gpsdump(gps);
Serial.println("-------------");
Serial.println();
}
}
void gpsdump(TinyGPS &gps)
{
long lat, lon;
float flat, flon;
unsigned long age, date, time, chars;
int year;
byte month, day, hour, minute, second, hundredths;
unsigned short sentences, failed;
gps.get_position(&lat, &lon, &age);
Serial.print("Lat/Long(10^-5 deg): "); Serial.print(lat); Serial.print(", "); Serial.print(lon);
Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms.");
gps.f_get_position(&flat, &flon, &age);
Serial.print("Lat/Long(float): "); printFloat(flat, 5); Serial.print(", "); printFloat(flon, 5);
Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms.");
lcd.setCursor(0,0);
lcd.print("LAT:");
lcd.print(flat, 5);
lcd.setCursor(0,1);
lcd.print("LONG:");
lcd.print(flon, 5);
}
void printFloat(double number, int digits)
{
if (number < 0.0)
{
Serial.print('-');
number = -number;
}
double rounding = 0.5;
for (uint8_t i=0; i 0)
Serial.print(".");
while (digits-- > 0)
{
remainder *= 10.0;
int toPrint = int(remainder);
Serial.print(toPrint);
remainder -= toPrint;
}
}
- Kemudian upload seperti biasanya dan akan tampil latitude dan longitude