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);

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 harga dan pemesanan Starduino Board, silakan mengunjungi situsnya di: http://teknikelektrolinks.com dan http://teknikelektrolinks.com/pemesanan.htm.

Semoga bermanfaat.

Selamat belajar dan selamat berkarya!

🙂