Home > GPS Tracking System, Google Map > Membuat Sistem GPS Tracking

Membuat Sistem GPS Tracking

Arsitektur sistem secara global

Sistem terdiri dari Tracking Devices yaitu alat yang secara periodik atau berdasarkan kondisi tertentu mengirimkan informasi posisinya pada saat itu. Informasi posisi diperoleh dari perhitungan data yang diterimanya dari satelit GPS yang senantiasa ada setiap saat. Pada seri artikel ini kita akan menggunakan handphone Nokia N95 yang telah dilengkapi dengan GPS receiver built in, dan membuat program J2ME sehingga hanphone dapat berfungsi sebagai GPS Tracking Device.

Sistem GPS Tracking secara global dapat digambarkan seperti di bawah.

Arsitektur Sistem GPS Tracking

Data posisi tersebut dikirimkan oleh N95 ke Server GPS Tracking melalui internet (disini kita menggunakan HTTP untuk mengirimkan data). Koneksi ke internet dilakukan melalui GPRS yang dimiliki oleh masing-masing operator GSM dan terhubung ke internet.

Di internet kita memiliki GPS Tracking Server yang diletakkan pada server hosting yang akan menampung data yang dikirimkan oleh Nokia N95 pada sebuah database (di sini kita menggunakan MySQL). Server tersebut kita lengkapi dengan aplikasi pemantau (di sini kita buat dengan PHP) sehingga dapat diakses oleh komputer pemantau melalui web browser.

Aplikasi di GPS tracking device

Pada Nokia 95 kita akan membuat aplikasi berbasis J2ME yang mengakses GPS Receiver yang telah ada secara built-in. Setelah informasi posisi didapat, maka data tersebut dikirimkan secara periodik melalui koneksi GPRS dengan protokol HTTP ke server GPS Tracking. Format URL untuk mengirimkan data melalui HTTP misalnya:

http://namaserver/up.php?unit=1&lat=-6.100&lon=107.2900

Struktur URL tersebut terdiri dari beberapa bagian dan dapat dijelaskan sebagai berikut:

Bagian Keterangan
Http:// Nama protokol yang digunakan yaitu HTTP
Namaserver Nama server GPS Tracking yang dikenali di internet misalnya nama server hosting yang kita gunakan
u.php Nama file PHP yang memproses data yang diterima dari Nokia N95. File ini akan menyimpan data yang diterimanya ke database untuk diproses selanjutnya oleh server gps tracking.
Unit=1 Parameter identifikasi unit GPS Tracking device, dimana setiap unit yang mengirimkan data
Lat=-6.100 Latitude koordinat GPS device pada saat itu
Lon=107.2900 Longitude koordinat GPS device pada saat itu

Prinsip kerja aplikasi J2ME sendiri kita sederhanakan sebagai berikut:

  1. Inisialisasi data
  2. Baca data dari GPS dan tunggu sampai data posisi GPS sudah didapatkan
  3. Jika data GPS sudah didapat dan perioda pengiriman data (misal setiap 1 menit) sudah dicapai maka buka koneksi GPRS dan kirimkan data melalui HTTP dengan format URL seperti di atas
  4. Ulangi langkah ke 2, demikian seterusnya, proses ini dilakukan setiap 1 detik sekali.

Implementasi looping di atas akan dilakukan dengan fasilitas Timer yang sudah terdapat pada J2ME.

Flow chart aplikasi GPS Tracking Device dapat digambarkan sebagai berikut:

Flowchart Aplikasi GPS Tracking Device

Aplikasi pemantau

Aplikasi pemantau diimplementasikan dengan web based application, yaitu aplikasi disimpan pada web server yang berfungsi sebagai GPS Tracking Server. Komputer pemantau akan melakukan koneksi ke alamat web server untuk dapat mematau posisi benda bergerak yang dimilikinya.

Aplikasi pemantau yang kita bangun menggunakan tampilan peta digital yang diambil dari Google Map. Peta Google Map tersebut kita program melalui API (application programming interface) yang tersedia untuk menampilkan objek yang mewakili posisi benda bergerak/ GPS Tracking Device.

Informasi posisi objek tersebut diambil dari database MySQL dimana datanya selalu diupdate oleh GPS Tracking Device secara periodik. Akibatnya kita akan mendapatkan efek bergerak setiap kali kita me-refresh data dan menampilkannya pada peta Google Map.

Arsitektur sistem pemantau dapat digambarkan sebagai berikut:

Arsitektur Aplikasi Pemantau

Berikut adalah deskripsi masing-masing file program PHP yang digunakan untuk membangun aplikasi GPS Tracking Server:

Program Keterangan
up.php File penerima update data dari GPS Tracking Device. File ini memiliki parameter input unit_id, lat, dan lon yang merepresentasikan informasi posisi GPS Tracking Device pada saat mengirimkan data. Data ini dikirimkan melalui HTTP GET method seperti yang telah dijelaskan pada bagian sebelumnya.

Ketika data diterima, program ini akan langsung menyimpan data tersebut pada table yang terdapat pada database. Informasi yang disimpan adalah semua data tersebut di atas (unit_id, lat, dan lon) ditambah dengan timestamp yang mencatat waktu penyimpanan dan id record (auto increment).

viewer.php Program ini berfungsi untuk menginisialisasi dan menampilkan Google Map pada suatu koordinat tertentu, menyediakan tombol navigasi kepada user (geser dan zoom), menyediakan fasilitas pencarian benda bergerak, dan menampilkan objek dengan tampilan animasi (jika objek yang dipantau bergerak maka tampilan pada peta akan bergerak juga).

Benda bergerak direpresentasikan dengan objek Marker yang terdapat pada API Google Map. Setiap Marker harus memiliki koordinat dimana Marker tersebut diposisikan pada peta.

Data posisi koordinat Marker tersebut diambil dari table yang ada pada database yang berisi data posisi terakhir benda bergerak. Data ini harus diformat terlebih dahulu ke dalam bentuk XML karena Google Map mensyaratkan seperti itu. Hal ini dikerjakan oleh program lainnya yaitu lastpos.xml.php.

lastpos.xml.php Berfungsi untuk membaca data dari table database dan menghasilkan output file dengan format XML sehingga dapat dibaca oleh Google Map dan untuk menampilkan Marker di atas peta oleh program viewer.php.

Struktur database

Database minimal harus terdiri dari satu tabel yang menyimpan informasi posisi terakhir dari benda bergerak yang ingin dipantau. Kita namakan saja tabel ini dengan tabel lastpos. Struktur data pada tabel tersebut adalah sebagai berikut:

Field Datatype Keterangan
id Integer auto increment primary key Indentifikasi nomor record
unit_id Varchar(10) Identifikasi benda bergerak
lat Double Informasi koordinat latitude benda bergerak
lon Double Informasi koordinat longitude benda bergerak
ts Datetime Informasi timestamp saat record dituliskan

Seperti telah disebutkan di atas, tabel ini akan senantiasa di-update datanya oleh GPS Tracking Device yang terdapat pada benda bergerak yang dipantau yang dilakukan oleh program up.php.

Tabel ini juga akan senantiasa dibaca oleh program viewer.php melalui program lastpos.xml.php ketika akan menampilkan repersentasi posisi benda tersebut pada tampilan peta Google Map.

Database ini kita namakan misalnya gpstracking. Berikut adalah struktur perintah SQL untuk membuat database tersebut.

CREATE TABLE `lastpos` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`unit_id` varchar(10),
`lat` double DEFAULT NULL,
`lon` double DEFAULT ‘0′,
`ts` datetime DEFAULT NULL,
PRIMARY KEY  (`id`),
UNIQUE KEY `UNITX` (`unit_id`)
) TYPE=MyISAM;

Masukkan juga bebebrapa contoh data yang dapat digunakan selama proses pembuatan program aplikasi sbb:

INSERT INTO `lastpos` VALUES (‘1′, ‘D991HN’, ‘-6.50′, ‘107.207′, ‘2007-07-27 04:11:32′);
INSERT INTO `lastpos` VALUES (‘2′, ‘B3892HY’, ‘-6.69′, ‘107.192′, ‘2007-07-27 14:21:22′);
INSERT INTO `lastpos` VALUES (‘3′, ‘D4833AA’, ‘-6.4334′, ‘107.3248′, ‘2007-07-27 14:12:34′);
INSERT INTO `lastpos` VALUES (‘4′, ‘D434YT’, ‘-6.7132′, ‘107.9932′, ‘2007-07-16 15:24:58′);

Ikuti artikel selanjutnya tentang bagaimana membuat aplikasi J2ME di handphone Nokia N95 dan membuat aplikasi Pemantau menggunakan Google MAP API.

Source Code Program up.php

Berikut ini controh script PHP up.php yang digunakan untuk menerima data dari device Nokia N95 dan menyimpan data tersebut ke tabel.

<?
///koneksi ke database
mysql_connect("localhost","root","");
mysql_select_db("dijexi_gps");
//ambil parameter query string

$unit_id=$_GET[‘unit_id’];
$lat=$_GET[‘lat’];
$lon=$_GET[‘lon’];
$speed=$_GET[’speed’];
$course=$_GET[‘course’];
$alt=$_GET[‘alt’];
$imei=$_GET[‘imei’];

//update tabel lastpos
$sql="update lastpos set lat=’$lat’,lon=’$lon’,speed=’$speed’,course=’$course’,alt=’$alt’,ts=NOW(), imei=’$imei’ where unit_id=’$unit_id’";
$res=mysql_query($sql) or die(mysql_error());

//insert into tracks history
$sql = "insert into tracks (unit_id,lat,lon,speed,course,alt,ts) values (‘$unit_id’,'$lat’,'$lon’,'$speed’,'$course’,'$alt’,NOW())";
$res=mysql_query($sql) or die(mysql_error());

echo "OK";
?>
 

Artikel terkait:

Akhmad Daniel Sembiring

vITraining.com – Qualified IT Products, Outsourcing, and Services

Ligarwangi.com – Linux, E-book, Coffee, Gift, etc

  • Share/Bookmark
  1. September 24th, 2009 at 15:52 | #1

    ma admin,

    klo sistem dari hp ya gmna?

    apa hanya untuk tipe hp tertentu saja yg medukung GPS

    atau da tipe lain y bisa dipakai

  2. Agus Gunawan
    October 15th, 2009 at 10:15 | #2

    Yth, Bpk. Akhmad Daniel Sembiring,

    Saya punya GPS Garmin Nuvi-205,

    Bisakan GPS tersebut dijadikan sebagai GPS tracking viewer…??

  3. October 15th, 2009 at 10:42 | #3

    saya blm pernah pegang Nuvi-205 pak, tapi sekilas sy lihat itu GPS untuk navigasi jadi memang sudah bisa untuk mengetahu posis kita pada suatu saat melalui layar lcd nya. untuk dijadikan tracking sy kira tidak bisa krn tidak ada modem GSM nya.

  4. October 18th, 2009 at 07:41 | #4
  5. devi
    November 1st, 2009 at 10:08 | #5

    saya lagi coba buat gps trackingnya, sudah berhasil, tapi ada masalah, gimana caranya supaya posisi terakhir bisa dimunculkan tanpa harus refresh web browser, data diambil dari last record yg masuk.

  6. November 2nd, 2009 at 09:01 | #6

    @devi
    @devi: ada dua cara: 1 pakai ajax, refresh javascript object setiap sekian detik sekali untuk ambil data terbaru dan ditampilkan di google map. jadi bukan browsernya yang direfresh tapi ajax/javascriptnya yg melakukan (menggunakan timer)
    2. pakai object semacam kayak data socket shg client dan server always connect dan dapat transfer data secara realtime

  7. devi
    November 2nd, 2009 at 11:27 | #7

    ok pak, setelah mutar2 cari di mbah google, emang jawabannya salah satunya menggunakan ajax, tapi belum nemu pak, mungkin bapak ada contoh srciptnya ? masih bingung dengan ajax nya.

    untuk informasi pak, data yang dikirim sekarang ini sudah real time (saya gunakan interface delphi buat nerima data dari gps dan di save ke mysql), dan lansung update ke databasenya.

    terima kasih atas jawabannya, ditunggu pencerahannya.

  8. wendy
    December 14th, 2009 at 13:53 | #8

    dear admin…
    1. saya mo buat gps viewer untuk bisa dibrowse di blackberry browser, kira2 requirements apa aja yg perlu dalam develop gps viewer-nya supaya bisa dibuka via blackberry browser?
    2. apa lebih efisien bikin under web based application, ato under blackberry OS?
    terima kasih sebelumnya atas jawabannya….

  9. December 14th, 2009 at 14:12 | #9

    wendy:
    utk blackberry kayaknya mending bikin client app khusus, yg request ke server .. soalnya kalau web based takut terjadi banyak incompatibility di javascript.. google map full menggunakan javascript

  10. Angga
    January 29th, 2010 at 00:19 | #10

    untuk membuat aplikasi di HP nya gimana ya?bisa minta tolong penjelasannya untuk membuat aplikasi HP nya mengenai cara pengambilan koordinat dari internal GPS?

  11. viza
    March 13th, 2010 at 09:19 | #11

    mohon info lastpos.xml.php ….

  12. March 13th, 2010 at 20:02 | #12

    Mas klo mau bikin gps tracker untuk web apa metode nya sama, klo ada informasi tentang source code nya dimana ya ?

  13. Bima
    March 30th, 2010 at 12:09 | #13

    Tugas akhir saya berjudul ” Panduan Informasi Lokasi Layanan Umum Jawa Tengah menggunakan teknologi J2ME dan GPS ” pak.
    Jadi ada salah satu menu, yaitu My Position yang berfungsi untuk mengetahui posisi kita di Map, dengan cara mengambil data log, kemudian diolah di server, untuk diberikan kembali kepada client berupa informasi lokasi kita.
    Nah, fitur ini yang saya belum mengerti bagaimana cara mengambil data log dari GPS internalnya, mungkin bapak bisa membantu.
    Maaf pak sebelumnya kalau mengganggu waktu Pak Daniel.

  14. April 4th, 2010 at 12:50 | #14

    iyah nih mas mohon di bikinkan tutorial nya juga untuk pembuatan aplikasi J2ME

    “Pada Nokia 95 kita akan membuat aplikasi berbasis J2ME yang mengakses GPS Receiver yang telah ada secara built-in.”

    Thanks

  15. popy
    April 8th, 2010 at 09:58 | #15

    bang admin maw nanya nih
    klo N95 diganti pake blackberry bisa ga bang?
    kan ad GPS juga tuh yg ud langsung d blackberry-nya

  16. Afifzuhri
    April 8th, 2010 at 13:39 | #16

    Pak, untuk lastpos.xml.php itu gmn ? kita kita ekspost apa ada source codenya sendiri,,, ?

  17. Afifzuhri
    April 14th, 2010 at 05:33 | #17

    @Bima

    mas bima ada email atau kontak ? aq juga lagi tugas akhir tentang web tracking ,,,,

  18. May 4th, 2010 at 05:25 | #18

    bisa pakai Blackberry, tapi programmnya beda

  19. May 4th, 2010 at 05:27 | #19

    lastpost.xml.php, ada di artikel ini yang versi english , ini source codenya:
    <?
    mysql_connect("localhost","root","");
    mysql_select_db("dijexi_gps");
    $sql="select * from lastpos order by id";
    $res=mysql_query($sql) or die(mysql_error());
    echo ‘’;
    echo “\n”;
    while($row=mysql_fetch_array($res))
    {
    $unit_id =$row[‘unit_id’];
    $latitude =$row[‘lat’];
    $longitude =$row[‘lon’];
    echo ‘ ‘;
    }
    echo “\n”;
    ?>

  20. ghufron
    May 12th, 2010 at 06:37 | #20

    pak mohon di share juga source code dari J2ME nya pak, atau artikel nya untuk membuat aplikasi j2me agar bisa mengirim data GPS ke Server.

    thanks pak

  21. putri
    May 12th, 2010 at 21:11 | #21

    Pak,,saya juga minta di share code j2me nya pak agar bisa dikirim ke server yg akan saya hosting..
    Dikarenakan tuga akhir saya GPS tracking juga pak..terima kasih pak atas bantuannya..

  22. Bima
    May 20th, 2010 at 22:39 | #22

    @ ghufron : ada mas, bima_aristantyo@yahoo.com
    siapa tau bisa tukar pikiran

  23. ghufron
    May 21st, 2010 at 15:42 | #23

    thanks mas bima. saya selalu OL di goblin_tik@yahoo.co.uk
    mohon bisa sharing ilmu nya :D

  24. putri
    May 23rd, 2010 at 10:11 | #24

    Mas,,tau code j2me untuk mendapatkan koordinat setiap 10 menit ga mas??Aku udah bisa mendapatkan koordinat dan mengirimnya ke server. Masalahnya sekarang,aku pengen mendapatkan koordinat setiap 10 menit dan otomatis akan terikirim ke server. Tanpa di tekan tombol ok nya mas. terima kasih atas bantuannya..
    :)

  25. May 24th, 2010 at 23:23 | #25

    Hi mas Bima dan mas Ghuron tugas akhir saya juga tentang GPS dan aplikasi sudah 60% mungkin kita bisa sharing2 data, kebetulan saya belum mendapatkan judul yang tepat untuk TA saya tersebut, Saya sudah test di Nokia E71 dan SE G702i dan hasilnya bisa di lihat di http://www.ericeo.net/gpstracker/gps.aspx, webnya saya buat dengan .NET (ASP.NET/C#) dan databasenya menggunakan SQLSERVER 2008, aplikasi di Hpnya menggunakan J2ME saya menggunakan Netbean 6.8 untuk deploynya, pada aplikasi J2ME belum selesai saya buat tapi sudah bisa di gunakan, ada beberapa fitur yang saya inginkan belum berfungsi.

  26. May 24th, 2010 at 23:44 | #26

    maaf bukan SE G702i tapi SE C702i@Rico

  27. fajar
    May 26th, 2010 at 17:28 | #27

    mas admin…mw tanya donk…pada aplikasi gps tracking ini pada data gps bs diambil data2 layanan umum (seperti atm, rmh skt, ato pelayanan umum lainnya)..jd fungsinya selain untuk mengetahui posisi kita di Map, tapi jg dpt memberitahukan info pelayanan2 umum yg deket dgn posisi kita…

  28. bontor
    May 28th, 2010 at 19:06 | #28

    pak ini kan aplikasi basis web ya, alias butuh server. kalau koneksi dari GPS receiver ke komputer pengolah datanya itu peer to peer, bagaimana ya? Saya kebayangnya pakai java atau C# untuk listening/nerima data dari port IP komputer pengolah data. saya bingung gimana ngegabungin aplikasi java saya itu dengan googlemap API. Mohon bantuannya

  29. tiyo
    May 30th, 2010 at 08:02 | #29

    saya sedang mengerjakan TA tentang GPS traking,,saya sudah berhasil mengrim data dari GPS receiver ke server dgn aplikasi J2ME,,tetapi setelah di visualisasikan dengan gogle map,posisi objek agak melenceng dari jalan(posisi sebenarnya), kira2 ada cara untuk mengatasi maslah ini ga?

  30. June 11th, 2010 at 05:20 | #30

    posisi melenceng 10-15 m biasa, itu akurasi GPS. Tapi kalau melenceng sangat jauh misal posisi di bandung tergambarkan di vietnam atau laut samudra hindia itu berarti ada yang salah di program

  31. June 11th, 2010 at 05:22 | #31

    iya ini web based. kalau peer-to-peer bisa saja yang penting yang berfungsi sbg server bisa diakses via internet (public ip).. bisa pakai bantuan dyndns kalau perlu, supaya komputer kita di rumah bisa diakses dari luar.

  32. putri
    June 17th, 2010 at 09:06 | #32

    Mas admin,,saya sedang mengerjakan TA. di J2ME yg saya buat sudah bisa mendapatkan dan mengirimkan posisi ke server. Maslahnya skrang, saya ingin update posisi itu setiap 10 menit dan dikirm setiap 10 menit ke server. Kalau boleh, saya minta share ilmunya donk mas. terima kasih..

  33. June 21st, 2010 at 23:28 | #33

    @putri
    hi putri
    mungkin saya bisa sedikit membantu, ini potongan source-code nya
    di sini saya membuat 2 pilihan update permenit atau perdetik
    saya lebih suka pakai yang perdetik biasanya saya tracker /10sec
    hasilnya bisa di lihat di http://www.ericeo.net/gpstracker/gps.aspx
    kl putri mw ngetes bs download di http://www.ericeo.net/download/GPST1.0.jar

    private void displayInterval() {
    int tempTimesec = Integer.parseInt(Timesec);
    int tempTimemin = Integer.parseInt(Timemin);
    int temptv= Integer.parseInt(updateView);
    display.setCurrent(form);
    form.deleteAll();
    if (temptv == 1)
    {
    if (tempTimemin == 1) {
    log(“Getting map once a minute…”);
    }
    else {
    log(“Getting map every ” + String.valueOf(tempTimemin) + ” minutes…”);
    }
    }
    else
    {
    if (tempTimesec == 1) {
    log(“Getting map once a second…”);
    }
    else {
    log(“Getting map every ” + String.valueOf(tempTimesec) + ” seconds…”);
    }
    }
    }

    private void startGPS() {
    if (gps == null) {
    int temptv= Integer.parseInt(updateView);
    if (temptv == 1)
    {
    gps = new GPS(this, Integer.parseInt(Timemin)*60, uploadWebsite);
    }
    else
    {
    gps = new GPS(this, Integer.parseInt(Timesec), uploadWebsite);
    }
    gps.startGPS();
    }
    }

    public GPS(GPSTracker Midlet, int Interval, String UploadWebsite){
    currentTime = Calendar.getInstance();
    sessionID = System.currentTimeMillis();
    this.midlet = Midlet;
    this.interval = Interval;
    this.uploadWebsite = UploadWebsite;
    }

    public void changeInterval(int Interval) {
    if (locationProvider != null) {
    locationProvider.setLocationListener(this, Interval, -1, -1);
    }
    }

  34. June 21st, 2010 at 23:59 | #34

    mas admin saya lg kebingungan nih, di aplikasi j2me yg saya buat pengen ada fitur send sms di mn isi sms tersebut adalah lokasi pengirim berada, jd idenya kita minta di jemput orang melalui sms isi smsnya lat dan long posisi kita, lalu aplikasi si penerima sms tersebut mentracker dari posisi penerima ke pengirim membentuk satu garis, lalu sipenerima menuju lokasi si pengirim dengen mengikuti garis tracker tersebut, yang jadi pertanyaan saya adalah bagaimana kita membuat garis dari penerima ke pengirim di mn garis tersebut sesuai dengan peta jalan yg ada di google map dan yg di ambil adalah jalan terdekat, mohon bantuannya, Trimakasih

  35. putri
    July 1st, 2010 at 10:02 | #35

    Mas rico,,terima kasih banyak untuk bantuannya..
    Saya akan coba…
    Tetapi,link downloadnya kok ga bisa yah mas????

  36. tiyo
    July 4th, 2010 at 20:48 | #36

    @Rico
    mas Rico boleh minta alamat emailnya ga atau YM nya..soalnya saya juga lagi nyusun Skripsi tentang GPS tracking untuk monitoring kendaraan,,sapa tau bisa tuker pikiran..email saya susahpayah@gmail.com

  1. July 6th, 2009 at 20:55 | #1
  2. July 7th, 2009 at 01:22 | #2

Ikutilah Seminar GPS! "MEMBONGKAR RAHASIA BISNIS GPS TRACKING" - Pembicara : Ir. Akhmad Daniel Sembiring (CEO Vitraining.com & GpsTrackingIndonesia.com) - Bandung, Sabtu 7 Agustus 2010 - Hotel Arion Swiss - Belhotel, Jl. Otto Iskandardinata No. 16 Bandung - Investasi : 2 Jt (sebelum 31 JULI 2010 HANYA 1 Jt) - Register ONLINE : seminar-gps.vitraining.com - More Info e-mail to : info@gpstrackingindonesia.com

This site uses a Hackadelic PlugIn, Hackadelic SEO Table Of Contents 1.6.0.