Pada tulisan pertama, telah dijelaskan tentang GPS beserta data-data yang dapat diambil untuk dijadikan sebagai sumber informasi. Diantara data yang digunakan adalah data $GPGGA – Global Positioning System Fix Data. Pada blok data yang diawali dengan $GPGGA, kita bisa mengetahui waktu, latitude, longitude, altitude, dan yang lainnya. Pada tulisan ini, kita akan mencoba untuk membaca blok data yang diawali dengan identifier $GPGGA.

Pada GPS Garmin seri 60C, data dikirim dalam format NMEA dalam satu paket data. Pada tiap paket data yang dikirimkan, terdapat blok-blok data yang diawali dengan identifier. Sehingga kita bisa memilih kategori data yang akan diambil dengan mengabaikan blok data yang lainnya. Dalam satu blok data yang diawali dengan identifier yang sudah ditentukan formatnya, memberikan informasi yang terdiri dari beberapa bagian informasi. Misalnya, blok data yang diawali dengan identifier $GPZDA, memberikan data UTC, day, month, year, dan local time zone.

Data yang dikirimkan oleh GPS Garmin 60C, dikirim melalui format serial pada kecepatan 4200 dan terdapat jeda untuk tiap paket data yang dikirimkan. Karena data yang dikirimkan adalah berupa data serial, maka kita akan mengambil data yang diberikan dengan menggunakan port serial. Komunikasi yang digunakan adalah komunikasi satu arah dari GPS ke mikrokontroller.

Karena menggunakan komunikasi satu arah, maka pada mikrokontroller harus disetting sebagai Rx Interrupt. Yaitu, mikrokontroller diatur untuk melayani setiap data yang diterima setiap saat. Ini harus dilakukan, karena data yang diterima tanpa didahului oleh proses handshake. Untuk selanjutnya, mikrokontroller harus mampu menyimpan data yang diterima pada sebuah variable buffer. Jadi, data yang diterima disimpan pada variable buffer, kemudian baru difilter berdasarkan identifier yang diinginkan.

Untuk membaca blok data $GPGGA,061648,0619.9585,S,10639.9713,E,1,09,0.8,70.0,M,1.5,M,,*5E

Pada blok data di atas, terdapat blok data berikut:

  • Sentence Identifier : $GPGGA
  • Time : 061648
  • Latitude : 0619.9585
  • Longitude : 10639.9713
  • Fix Quality : 1
  • Number of Satellites : 09
  • Horizontal Dilution of Precision (HDOP)  : 0.8
  • Altitude : 70 M
  • Height of geoid above WGS84 ellipsoid  : 1.5 M
  • Time since last DGPS update : blank
  • DGPS reference station id : blank
  • Checksum : 5E

Maka dipembacaan data dilakukan dengan algoritma pembacaan data GPS digambarkan di bawah ini:

    1. Baca data serial yang diterima, kemudian simpan pada variable buffer.
    2. Stop pembacaan data serial, jika ditemukan 0x0D atau CR (Carriage Return)
    3. Cek, apakah karakter pertama adalah ‘$’: jika betul maka lanjutkan filtering; jika tidak, maka abaikan
    4. Cek, apakah karakter pertama sampai karakter ketujuh sama dengan “$GPGGA,” jika betul, lanjutkan filtering; jika tidak, maka abaikan
    5. Cek mulai karakter 15 sampai karakter terakhir: jika ditemukan karakter ‘S’ atau ‘N’, maka catat panjang data Lintang, kemudian lanjutkan filter; jika belum ditemukan, lanjutkan para karakter selanjutnya
    6. Cek mulai posisi setelah ditemukan karakter ‘S’ atau ‘N’ sampai karakter terakhir: Jika ditemukan karakter ‘E’ atau ‘W’, maka catat panjang data Bujur; Jika belum ditemukan, lanjutkan para karakter selanjutnya
    7. Copy data Lintang dari karakter 15 sampai posisi ditemukan karakter ‘S’ atau ‘N’
    8. Copy data Lintang dari karakter ditemukan posisi karakter ‘S’ atau ‘N’ sampai posisi ditemukan karakter ‘E’ atau ‘W’.

Demikian sedikit penjelasan salah satu cara membaca data dari GPS Garmin seri 60C. Semoga bermanfaat. Untuk pembuatan program pada mikrokontroller, insya Alloh akan dibahas pada tulisan selanjutnya