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
[program]
#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