Pada
tulisan sebelumnya, 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:
- Baca data serial yang diterima, kemudian simpan pada variable buffer.
- Stop pembacaan data serial, jika ditemukan 0x0D atau CR (Carriage Return)
- Cek, apakah karakter pertama adalah ‘$’: jika betul maka lanjutkan filtering; jika tidak, maka abaikan
- Cek, apakah karakter pertama sampai karakter ketujuh sama dengan “$GPGGA,” jika betul, lanjutkan filtering; jika tidak, maka abaikan
- 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
- 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
- Copy data Lintang dari karakter 15 sampai posisi ditemukan karakter ‘S’ atau ‘N’
- 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.
No comments:
Post a Comment