Menampilkan Titik Lokasi GPS Pada LCD Dengan Arduino

6:30 AM

 

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

Menampilkan Titik Lokasi GPS Pada LCD Dengan Arduino

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

 

Next Article
« Prev Post
Previous Article
Next Post »
Disqus
Tambahkan komentar Anda

No comments