Tutorial Starduino: Membaca Data Dari GPS dan Menampilkannya di LCD


starduino_gps_573

Gambar di samping adalah foto eksperimen Starduino yang sedang membaca data dari GPS dan menampilkannya di layar LCD 16×2 karakter. Modul GPS yang digunakan adalah Parallax CIROCOMM PMB-648 GPS module.

Modul GPS tipe ini tergolong mudah untuk diantarmukakan dengan mikrokontroler (Starduino Board) karena memiliki output berupa data serial dengan level tegangan TTL dan RS232. Adapun baudrate yang digunakan adalah 4800 (default).

Jika menggunakan Starduino Board, pin TX/RX-TTL modul GPS bisa langsung dihubungkan dengan pin-1 (RX) dan pin-2 (TX) pada Starduino Board. Sedangkan pin TX/RX-RS232 modul GPS bisa dihubungkan ke pin-2 (RX) port DB9 Starduino Board dan pin-3 (TX) port DB9 Starduino Board. Pada eksperimen ini, saya menghubungkan pin TX modul GPS ke pin-1 Starduino Board.

Modul GPS PMB-648 dari Parallax ini mendukung protokol data NMEA0183 versi 2.2, untuk lebih detil tentang protokol data NMEA0183, silakan download datasheetnya melalui link berikut ini: http://www.tronico.fi/OH6NT/docs/NMEA0183.pdf.

Sesaat setelah modul GPS diberi catudaya, maka modul GPS akan mengirimkan data-data secara terus-menerus dengan format yang sesuai dengan protokol data NMEA0183. Berikut adalah tampilan data yang dikirimkan oleh modul GPS sesaat setelah modul GPS diberi catudaya yang saya ‘tangkap’ menggunakan program DockLight V1.9.

docklight_gps

Pada tutorial singkat ini hanya akan ditampilkan data mengenai posisi pada derajad lintang dan bujur dan beberapa data tambahan seperti waktu/jam, ketinggian dari permukaan air laut, dan jumlah satelit yang terbaca. Adapun data yang harus diambil adalah data pada kalimat berawalan $GPGGA seperti yang ditunjukkan pada screenshot di atas.

GP adalah Global Positioning. Kalimat yang diawali dengan $GP berarti kalimat yang berhubungan dengan posisi global seperti derajad lintang dan bujur, ketinggian, dll.

GGA adalah Global Positioning System Fix Data. Time, Position and fix related data
for a GPS receiver
.

Berikut adalah keterangan selengkapnya mengenai format kalimat $GPGGA.

nmea0183_gga

Setelah mengetahui informasi-informasi di atas, maka tugas program kontroler adalah menerima dan menampung data yang diterima dari modul GPS dan mengidentifikasi kalimat $GPGGA yang selanjutnya data-data yang terkandung dalam kalimat $GPGGA tersebut kita ambil dengan memilah-milah string yang terpisahkan oleh tanda baca koma (,).

Berikut adalah penggalan-penggalan program yang terdiri dari deklarasi variabel-variabel yang digunakan, perintah pembacaan data serial dan penyimpanan pada buffer data serial, perintah pemilahan data-data string yang terpisahkan oleh tanda baca koma, dan perintah tampilan pada LCD 16×2.

Deklarasi Variabel

#include <LiquidCrystal.h>
#include <MsTimer2.h>

int i=0, j=0, n=0;
char ch;
char *char_ptr;
char inbuf[250];
char *gps[16];
int inbuf_len = 0;
boolean CRLF = false;
unsigned long XWAIT;

LiquidCrystal LCD(7,6,5,4,3,2);

Baca Data Serial – Simpan Dalam Buffer Data Serial

while (!CRLF && XWAIT>0)
{
  if (Serial.available())
  {
    inbuf[inbuf_len] = Serial.read();
    inbuf_len++;
    if (strstr(inbuf, "\r\n"))
      CRLF = true;
  }
  XWAIT--;
}

Pemilahan Data String

gps[0] = strtok(inbuf, ",");
for (i=1; i<10; i++)
gps[i] = strtok(NULL, ",");

Menampilkan Data Pada LCD 16×2

LCD.clear();
LCD.print("Jam Sekarang:");
LCD.setCursor(0, 1);
LCD.print(gps[0]);
LCD.print(" UTC");
delay(2000);

LCD.clear();
LCD.print("Lintang:");
LCD.setCursor(0, 1);
LCD.print(gps[1]);
LCD.print(" LS");
delay(2000);

LCD.clear();
LCD.print("Bujur:");
LCD.setCursor(0, 1);
LCD.print(gps[3]);
LCD.print(" BT");
delay(2000);

LCD.clear();
LCD.print("Jumlah Satelit:");
LCD.setCursor(0, 1);
LCD.print(gps[6]);
LCD.print(" Satelit");
delay(2000);

LCD.clear();
LCD.print("Ketinggian:");
LCD.setCursor(0, 1);
LCD.print(gps[8]);
LCD.print(" Meter");
delay(2000);

Berikut adalah foto board STARDUINO + LCD 16×2 + Modul GPS.

starduino_gps

Video Demo
Anda dapat menyaksikan video demo hasil eksperimen ini melalui link berikut ini:

http://youtu.be/qyZgNSsgGu4.

Demikianlah tutorial singkat pembacaan data dari modul GPS Parallax PMB-648 menggunakan Starduino Board dan menampilkan data jam, derajad lintang dan bujur, jumlah satelit terbaca, dan ketinggian pada LCD 16×2 karakter.

Untuk informasi detil produk Starduino, harga dan cara pemesanan, silakan mengunjungi http://teknikelektrolinks.com/starduino/neo-starduino.htm.

Semoga bermanfaat.

Selamat belajar dan selamat berkarya!

🙂

One comment

  1. udin · Januari 16, 2013

    berapaan modul gpsnya mas? beli dimana y?

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s