APLIKASI PELACAK OBJEK TUGAS AKHIR
Transcript of APLIKASI PELACAK OBJEK TUGAS AKHIR
APLIKASI PELACAK OBJEK
TUGAS AKHIR
Diajukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Program Studi Teknik Elektro
Oleh:
Nama : Dhika Bramantia
NIM : 025114080
PROGRAM STUDI TEKNIK ELEKTRO
JURUSAN TEKNIK ELEKTRO
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2007
i
OBJECT TRACKING APPLICATION
FINAL PROJECT
Presented as Partial Fulfillment of the Requirements
To Obtain the Sarjana Teknik Degree
In Electrical Engineering Study Program
By:
Name : Dhika Bramantia
Student Number : 025114080
ELECTRICAL ENGINEERING STUDY PROGRAM
DEPARTMENT OF ELECTRICAL ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2007
ii
LEMBAR PERSETUJUAN
APLIKASI PELACAK OBJEK (OBJECT TRACKING APPLICATION)
Oleh :
DHIKA BRAMANTIA
NIM : 025114080
Telah disetujui oleh :
Pembimbing Tanda tangan Tanggal
A. Bayu Primawan, S.T., M.Eng. ………………………… ……………....
iii
HALAMAN PENGESAHAN
APLIKASI PELACAK OBJEK
Oleh :
DHIKA BRAMANTIA
NIM : 025114080
Telah dipertahankan di depan Panitia Penguji
Pada tanggal : 27 September 2007
dan dinyatakan memenuhi syarat
Susunan Panitia Penguji
Nama Lengkap Tanda Tangan
Ketua : Pius Yozy Merucahyo, S.T., M.T. ...................................
Sekretaris : A. Bayu Primawan, S.T., M.Eng. ...................................
Anggota : Damar Widjaja, S.T., M.T. ...................................
Yogyakarta, September 2007
Fakultas Sains dan Teknologi Universitas Sanata Dharma Dekan
Ir. Greg. Heliarko, SJ., B. ST., MA., M. Sc
iv
HALAMAN PERNYATAAN KEASLIAN KARYA
“Saya menyatakan dengan sesungguhnya bahwa tugas akhir yang saya tulis ini
tidak memuat karya atau bagian karya orang lain,
kecuali yang telah disebutkan dalam kutipan dan daftar pustaka,
sebagaimana layaknya karya ilmiah.”
Yogyakarta, 2007
Dhika Bramantia
v
INTISARI
Tugas akhir ini mendeskripsikan tentang Aplikasi Pelacak Objek. Aplikasi ini
akan mencari dan menvisualisasikan posisi transmitter yang sudah ditempelkan pada
objek yang sedang bergerak. Mikrokontroler akan mengontrol GPS dan HP untuk
mengirimkan koordinat transmitter yang berupa data posisi berbentuk PDU yang
kemudian diubah menjadi data string.
Aplikasi menggunakan GPS sebagai penyedia koordinat transmitter dan
kemudian koordinat dikirimkan melalui SMS ke server sehingga posisi transmitter
yang sudah ditempelkan pada objek dapat dipetakan dalam sebuah peta digital (GIS).
Aplikasi berjalan dengan baik. Hal ini ditunjukkan dengan keberhasilan
transmitter mengirimkan data posisi ke database server.
Kata kunci: PDU, GIS, GPS, Koordinat
vi
ABSTRACT
This final project describes about Object Tracking Application. This
Application will search and visualize the transmitter position which has been plug
into a moving object. Microcontroller will control the GPS and HP to send the
transmitter coordinate, represented as position data in PDU mode and then will be
converted into string mode.
This Application using GPS as transmitter coordinate source that will be sent
by SMS to server so that the transmitter that has been plugged into object can be
mapped into a digital map (GIS).
Application has work properly. This is shown by transmitter that has been
sent position data into the database server succesfully.
Keyword: PDU, GIS, GPS, coordinates
vii
KATA PENGANTAR
Segala puji bagi Allah SWT, Tuhan semesta alam karena-Nya penulis dapat
menyelesaikan Tugas Akhir “Aplikasi Pelacak Objek”. Dalam proses penyelesaian
Tugas Akhir ini penulis banyak mendapat bantuan dari begitu banyak pihak yang
telah memberikan dukungan dengan caranya masing-masing sehingga penulis dapat
menyelesaikan Tugas Akhir ini dengan baik dan lancar. Oleh karena itu penulis ingin
mengucapkan terima kasih antara lain kepada :
1. Bapak Ir. Greg. Heliarko, SJ., B.ST., MA., M.Sc, selaku dekan fakultas teknik.
2. Bapak Augustinus Bayu Primawan, S.T., M.Eng. selaku dosen pembimbing yang
telah memberikan ide dan bimbingan sampai tugas akhir ini terselesaikan.
3. Bapak Ir. Iswanjono, M.T. yang sudah membimbing dalam mengerjakan alat.
4. Dosen teknik elektro yang selama ini selalu memotivasi agar menyegerakan lulus,
laboran dan sekretariat.
5. Papa dan Mama tercinta atas semangat dan doanya, i’m the luckiest son for
having both of you.
6. Rinda Gita adikku yang cerewet.
7. Mas Hanjar, thanks for the advice and all. Selamat sudah mempunyai keluarga
kecil. Mas Dhita.
8. Untuk bintangku, Artha Febriana, the sky would’nt beautiful without you.
9. Seluruh keluarga besar yang berhubungan dengan Bambang Risdiyanto dan Indah
Mawarni.
10. Mbah ”Darmo” dan Mr. X, sang sutradara.
viii
11. Pandu, temen maen PS ma nyari bahan, data dan lainnya.
12. Hari en T-cuz, maestro desain produk.
13. Temen Elektro ’02, Lele, Hugo, Wuri, Spadic, Lina, McD, Deri, Andec, Bule,
Plentonk, Erik, Gepenk, Sinung, Yoga, Broto, Oscar, Robi, Heri, Rina dan
lainnya.
14. Anak kost pandean, endy, siswa, kak udi, reza jr.,reza sr, toi, mba lis, ms ale,
inoe, dani, ms bowo en mas seno.
15. Si Hitam, Si Hitam, Si Hitam, Komeng...thanks udah mau bolak-balik jogja
semarang.
16. Kemudian seluruh pihak yang sudah membantu dan penulis tidak tuliskan disini.
Dengan rendah hati, penulis masih merasa bahwa tugas akhir ini masih belum
sempurna, sehingga kritik dan saran sangat diterima demi kesempurnaan tugas akhir
ini. Akhir kata, semoga tugas akhir ini dapat berguna bagi semua pihak. Terima
kasih.
Yogyakarta, September 2007
Penulis
ix
DAFTAR ISI
JUDUL .................................................................................................................... i
HALAMAN PERSETUJUAN ............................................................................ iii
HALAMAN PENGESAHAN.............................................................................. iv
HALAMAN PERNYATAAN KEASLIAN KARYA......................................... v
INTISARI ............................................................................................................. vi
ABSTRACT......................................................................................................... vii
KATA PENGANTAR........................................................................................ viii
DAFTAR ISI.......................................................................................................... x
DAFTAR GAMBAR........................................................................................... xv
DAFTAR TABEL ............................................................................................ xviii
BAB 1 PENDAHULUAN
1.1 Latar Belakang Masalah ................................................................................ 1
1.2 Rumusan Masalah. ..........................................................................................2
1.3 Tujuan Penelitian ........................................................................................... 2
1.4 Manfaat Penelitian ......................................................................................... 2
1.5 Batasan Masalah............. ............................................................................... 3
1.6 Metode Penelitian .......................................................................................... 3
1.7 Sistematika Penulisan ................................................................................... 4
x
BAB II DASAR TEORI
2 SMS dan Format PDU ...................................................................................... 5
2.1 Pengertian SMS ..................................................................................... 5
2.2 Format PDU ........................................................................................... 6
2.2.1 Bentuk dan Format PDU............................................................... 7
2.2.2 AT-Command ( Perintah AT ) ...................................................... 9
2.3 Port COM............................................................................................ 10
2.4 Pengertian GPS ................................................................................... 12
2.4.1 GPS Segmen .............................................................................. 13
2.4.2 GPS Signal ................................................................................. 15
2.4.3 Akurasi Penerima GPS .............................................................. 16
2.4.4 Informasi yang didapat dari GPS............................................... 16
2.4.5 Cara Kerja GPS.......................................................................... 17
2.4.6 Bentuk Keluaran data GPS ........................................................ 21
2.5 GIS ( Geographic Information System ) ............................................. 22
2.5.1 Model Raster dan Vektor ........................................................... 26
2.5.1.1 Model Data Raster ......................................................... 26
2.5.1.1.1 Karakteristik Layer Raster .............................. 27
2.5.1.1.2 Layer(s) Raster................................................. 28
xi
2.5.1.2 Model Data Vektor ........................................................ 31
2.6 Mikrokontroler AVR ATMega8515 ............................................................ 34
2.7 Relational Database Management System .................................................. 38
2.7.1 SQL Server 2000................................................................................. 40
2.8 .NET..............................................................................................................42
2.8.1 ADO .Net ............................................................................................ 43
BAB III PERANCANGAN SISTEM
3.1 Model Sistem .................................................................................................. 44
3.2 Perancangan Perangkat Lunak........................................................................ 46
3.2.1 Algoritma Penerima dan Penyimpan data.............................................. 46
3.2.2 Diagram Alir Penerima dan Penyimpan data......................................... 47
3.2.3 Algoritma Cek data User ....................................................................... 48
3.2.4 Diagram Alir Cek data User .................................................................. 49
3.2.5 GIS Mapping.......................................................................................... 50
3.2.6 Algoritma Login User............................................................................ 51
3.2.7 Menu Utama........................................................................................... 53
3.2.7.1 Form Anggota dan Administrasi user........................................ 54
3.2.7.2 Pengaturan database .................................................................. 56
3.2.7.2.1 Tabel Pengguna........................................................... 58
3.2.7.2.2 Tabel Anggota............................................................. 59
xii
3.2.7.2.3 Tabel Posisi ................................................................. 50
3.2.8 Class pada VB.Net....................................................................................... 60
3.2.9 Interface pada Mikrokontroler ..................................................................... 64
3.2.10 Pengendali pada Mikrokontroler................................................................ 65
3.2.10.1 Aplikasi Pengambil Data ............................................................. 65
3.2.10.2 Aplikasi Pengirim SMS ............................................................... 66
BAB IV HASIL DAN PEMBAHASAN
4.1 Program Ambil data ........................................................................................ 69
4.2 Program Visualisasi ........................................................................................ 70
4.2.1 Form Login ............................................................................................ 70
4.2.2 Halaman Utama ..................................................................................... 70
4.2.2.1 Administrator ............................................................................. 72
4.2.2.2 Anggota...................................................................................... 74
4.2.2.3 Peta............................................................................................. 75
4.2.3 Visualisasi Objek ................................................................................... 76
4.2.4 Transmitter dan Data Koordinat GPS.................................................... 79
4.2.4.1 Data dari GPS ........................................................................... 79
4.2.4.2 Transmitter................................................................................ 82
4.2.4.3 Perbandingan dan Error Posisi ................................................. 82
4.2.4.3.1 Data Waktu ................................................................ 82
xiii
4.2.4.3.2 Data Posisi ................................................................. 83
BAB V PENUTUP 91
5.1 Kesimpulan .................................................................................................... 91
5.2 Saran............... ................................................................................................ 92
DAFTAR PUSTAKA
LAMPIRAN
DATASHEET
xiv
xv
DAFTAR GAMBAR Gambar 2.1 Contoh syntaks AT-Command ...................................................... 10
Gambar 2.2 Satelit yang mengorbit bumi dengan jalur yang sama.................. 14
Gambar 2.3 Lokasi acuan “A” ......................................................................... 18
Gambar 2.4 Lokasi acuan titik “A” dan “B” .................................................... 18
Gambar 2.5 Lokasi objek ................................................................................. 19
Gambar.2.6 Perbandingan 1 detik dengan 6 periode pulsa .............................. 20
Gambar 2.7 Gabungan dari beberapa bentuk
data melalui GIS ........................................................................... 23
Gambar 2.8 GIS data dalam bentuk layer ........................................................ 24
Gambar 2.9 Tampilan GIS dalam satu daerah yang menunjukkan detail yang
berbeda.......................................................................................... 24
Gambar 2.10 Uraian subsistem dalam GIS ...................................................... 26
Gambar 2.11 Gambar Raster ........................................................................... 31
Gambar 2.12 Gambar Vektor ........................................................................... 33
Gambar 2.13 Diagram blok fungsional ATmega8515 ..................................... 36
Gambar 2.14. Pin ATMega8515 ...................................................................... 37
Gambar 2.15 Cascade update dan cascade delete ........................................... 41
Gambar 3.1 Sistem pemancar dan penyedia data............................................. 45
Gambar 3.2 Sistem penerima dan penampil data ............................................. 45
xv
Gambar 3.3 Diagram alir untuk fungsi penyimpan dan penerima data objek.... 47
Gambar 3.4 Diagram alir untuk validasi data user........................................... 49
Gambar 3.5 Diagram alir mapping pada GIS................................................... 50
Gambar 3.6 Komponen yang diperlukan untuk menampilkan peta ................. 51
Gambar 3.7 Window untuk pemilihan layer yang disediakan oleh
MapObjects ................................................................................... 51
Gambar 3.8 Diagram alir login untuk user....................................................... 52
Gambar 3.9 Tampilan utama yang berisi sub menu Informasi,
Pengaturan dan Bantuan ............................................................... 53
Gambar 3.10 Layout dari form Anggota .......................................................... 55
Gambar 3.11 Diagram Alir form Anggota ....................................................... 55
Gambar 3.12 Diagram alir untuk database setting........................................... 56
Gambar 3.13 Korelasi tabel pada database ...................................................... 57
Gambar 3.14 Komponen penyusun tabel Pengguna ........................................ 58
Gambar 3.15 Komponen penyusun tabel Anggota .......................................... 59
Gambar 3.16 Komponen penyusun tabel posisi ............................................... 60
Gambar 3.17 Diagram alir cara kerja pada class koneksi ................................ 63
Gambar 3.18 Antarmuka HP dan GPS dengan RS-232 ................................... 64
Gambar 3.19 Diagram alir pengambilan data GPS .......................................... 65
Gambar 3.20 Diagram alir kirim SMS ............................................................. 67
Gambar 4.1 Tampilan utama program ambil data............................................ 69
xvi
Gambar 4.2 Login Form ................................................................................... 70
Gambar 4.3 Tampilan utama program ............................................................. 71
Gambar 4.4 Menu bar informasi ...................................................................... 71
Gambar 4.5 Menu bar Pengaturan.................................................................... 72
Gambar 4.6 Menu bar bantuan dan sub menu.................................................. 72
Gambar 4.7 Halaman administrasi user ........................................................... 73
Gambar 4.8 Halaman untuk membuat user baru.............................................. 73
Gambar 4.9 Halaman form data anggota dan tabel posisi ................................ 74
Gambar 4.10 Data dari user yang didapat dari database ................................. 75
Gambar 4.11 Peta dalam form GIS .................................................................. 75
Gambar 4.12 Sub menu yang terdapat dalam menu bar Pengaturan................ 76
Gambar 4.13 Halaman setting koneksi............................................................. 76
Gambar 4.14 Tab perpindahan antara form anggota dan form posisi............... 77
Gambar 4.15 Pemilihan data yang ingin ditampilkan berdasarkan waktu ....... 78
Gambar 4.16 Tombol ‘Tampilkan posisi’ untuk memvisualisasikan data ....... 78
Gambar 4.17 Tampilan data yang telah divisualisasikan pada peta................. 78
Gambar 4.18 Contoh data yang diterima server............................................... 80
Gambar 4.19 Lampu menunjukkan GPS mendapat sinyal atau tidak.............. 81
Gambar 4.20 Bentuk fisik dari transmitter dan accu sebagai catu dayanya..... 81
Gambar 4.21 Hasil visualisasi titik pada peta .................................................. 88
Gambar 4.22 Rumus Haversine untuk menghitung jarak 2 titik ...................... 89
xvii
xviii
DAFTAR TABEL
Tabel 2.1 Penjelasan string PDU ......................................................................8
Tabel 4.1 Titik dan waktu pengiriman data yang diterima server...................84
Tabel 4.2 Perbandingan koordinat antara transmitter dan database...............86
Tabel 4.3 Perbandingan dan error pada peta .................................................90
BAB I
PENDAHULUAN
1.1 Latar Belakang Masalah
Aplikasi Pelacak Object adalah alat yang digunakan untuk mengetahui koordinat
posisi objek yang sudah ditempel transmitter di dalamnya, kemudian ditampilkan dalam
bentuk visual kedalam sebuah PC. Sebuah GPS dapat melacak koordinat setiap kali GPS
tersebut bergerak dalam jangkauan tertentu. Oleh karena itu, apabila sebuah objek
bergerak, semisal mobil, ditempel GPS maka kita dapat mengetahui koordinat posisi dari
mobil tersebut. Dari data koordinat posisi yang telah diketahui oleh GPS, dapat dibuat
alat untuk mengambil data koordinat yang ada di dalam GPS untuk kemudian diolah dan
ditampilkan lagi dalam bentuk visual agar mudah dimengerti oleh user.
Penulis merancang sebuah alat untuk mengambil data koordinat dari GPS dengan
SMS menggunakan Mikrokontroller AVR ATMega 8515. Transmitter menggunakan HP
Siemens M55, receiver menggunakan PC dan HP Siemens M55. AVR ATMega 8515
dipilih karena mendukung fitur AT-Command untuk pengaksesan SMS pada HP Siemens
M55 yang menggunakan kabel serial sebagai penghubung dengan mikrokontroler.
Untuk menampilkan secara visual data GPS yang dikirimkan melalui SMS ke
dalam PC, digunakan program Visual Basic .Net® sebagai bahasa pemrogramannya.
Program Visual Basic .Net® dipilih karena compatible dengan menggunakan port-port
serial dan paralel.
2
1.2 Rumusan Masalah
Rumusan masalah yang diberikan dalam Tugas Akhir ini adalah:
1. Belum adanya alat yang dapat melacak lokasi objek secara visual dan real time
pada sebuah PC dengan menggunakan peta digital.
2. Data GPS yang masih sulit untuk diolah.
3. Peta digital tidak terlalu mendetail karena keterbatasan data.
4. Peta digital hanya terbatas pada wilayah atau kota tertentu.
1.3 Tujuan Penelitian Tujuan penyusunan tugas akhir ini adalah untuk menghasilkan suatu program untuk
melacak dan memvisualisasikan objek dalam sebuah peta digital.
1.4 Manfaat Penelitian
Manfaat yang diharapkan dari penulisan Tugas Akhir ini adalah:
1. Dapat menjadi program bantu untuk perusahaan transportasi dalam mengawasi
armadanya.
2. Dapat menjadi aplikasi pelengkap dalam sistem keamanan kendaraan selain alarm.
3. Dapat menjadi referensi mengenai GPS, pemrograman Visual Basic .Net® dan
pemrograman mikrokontroler AVR ATMega 8515.
3
1.5 Batasan Masalah
Batasan masalah pada Tugas Akhir ini adalah:
1. Alat yang digunakan untuk memberikan data koordinat objek adalah sebuah
GPS.
2. Rentang akurasi GPS adalah 5 sampai 15 meter dari posisi transmitter GPS
berada.
2. Pengiriman data dari GPS menggunakan SMS dan diatur menurut interval yang
telah ditetapkan didalam mikrokontroler.
3. Interval mikrokontroler akan ditetapkan tiap 3 menit pengiriman.
4. Visualisasi jalur pada tiap titik tidak terlalu mendetail dan hanya untuk
pergerakan objek tiap 3 menit.
5. Mikrokontroler menggunakan AVR ATMega 8515 sebagai pengatur data di
Transmitter.
6. Peta digital akan menggunakan peta digital GIS (Geographic Information
System) dengan menggunakan program ArcGIS desktop®.
7. Menggunakan komponen ESRI MapObject® untuk menampilkan peta dalam
Visual Basic.
8. Untuk tampilan visual pada PC menggunakan program Visual Basic .Net® dan
database menggunakan SQL Server®.
1.6 Metode Penelitian
Metode penelitian yang digunakan dalam penyusunan tugas akhir ini adalah:
4
1. Perancangan program dengan berdasar pada kajian pustaka yang berhubungan
dengan GPS, mikrokontroler dan GIS.
2. Pembuatan program dengan mengacu pada pengambilan data GPS, pengiriman
data GPS dan visualisasi data GPS.
3. Pengujian alat secara manual dengan menggunakan 2 user secara bersamaan
untuk melaporkan posisi objek dan mencocokkan dengan data pada server.
4. Membahas dan menganalisis hasil data yang telah dikirimkan oleh GPS.
5. Membuat kesimpulan dan hasil pembahasan.
1.7 Sistematika Penulisan
Sistematika penulisan pada tugas akhir ini adalah sebagai berikut :
BAB I PENDAHULUAN
Berisi latar belakang masalah, batasan masalah, tujuan penelitian,
metodologi penelitian dan sistematika penulisan.
BAB II DASAR TEORI
Berisi teori-teori yang mendasari perancangan penelitian, penjelasan
tentang SMS, AT-Command, GPS, GIS dan Mikrokontroler.
BAB III PERANCANGAN
Berisi perancangan program, visualisasi objek dan perancangan
mikrokontroler sebagai transmitter.
BAB IV PEMBAHASAN
Berisi hasil program yang telah dibuat dan analisis hasil koordinat
yang telah didapat dari transmitter.
BAB V PENUTUP
Berisi kesimpulan dari hasil analisis dan saran terhadap pengembangan
penelitian berikutnya.
BAB II
LANDASAN TEORI
2. SMS dan Format PDU
2.1 Pengertian SMS
SMS (Short Message Service) adalah pesan pendek dalam bentuk teks yang
berkembang dalam dunia telekomunikasi seluler. Fasilitas ini tidak jauh beda dengan
layanan pesan teks dari perangkat sebelumnya, yaitu pager .
Di Indonesia, sekarang ada sekitar 40-an juta pengguna layanan jaringan
komunikasi seluler. Mengacu perkiraan Asosiasi Telekomunikasi Seluler Indonesia
(ATSI), SMS akan menyumbangkan pendapatan kepada operator sekitar Rp10 triliun
tahun ini.
Selama tiga belas tahun SMS menjadi sarana komunikasi teks, semakin cepat
inovasi yang berkembang. Ada banyak jenis pesan teks, panjang karakter, dan
berbagai bentuk layanan tambahan seperti gambar dan kode-kode komunikasi di
dalamnya. Hasil penemuan inovatif yang paling menonjol adalah layanan pesan yang
dimodifikasi dari segi konten (media) atau metode.
Dari segi konten, user disuguhi dengan pesan yang tidak saja berisi teks
namun dapat disisipkan di dalamnya gambar dan suara, atau lebih dikenal dengan
MMS (Multimedia Message Service). Sedangkan perkembangan pesan teks dari segi
6
metode, kini ada layanan pesan e-mail SMS, layanan obrolan (chat), dan layanan
sejenis Walkie Talkie (Push to Talk).
Pesan SMS mempunyai 160 karakter pada satu SMS dengan tiap karakternya
bernilai 7 bit. Delapan bit pesan (maksimum 140 karakter) biasanya tidak dilihat oleh
telepon sebagai pesan teks, sebaliknya pesan digunakan sebagai pesan data misalnya
smart messaging (pesan gambar atau MMS). Enam belas bit pesan (maksimum 70
karakter) biasanya digunakan untuk Unicode (UCS2) text messages dan biasanya,
pada beberapa telepon, akan terlihat sebagai Flash SMS (SMS yang berkedip) [1].
2.2 Format PDU
Ada 2 cara dalam mengirim dan menerima pesan SMS, yaitu dengan text
mode dan PDU Mode (Protocol Description Unit). Pada mode teks (text mode), tidak
tersedia pada semua telepon. Mode teks adalah mendekodekan stream bit data yang
direpresentasikan oleh metode PDU. Dalam mode PDU, pesan yang dikirim berupa
informasi dalam bentuk data dengan beberapa kepala (header) informasi. Hal ini
akan memberikan kemudahan jika dalam pengiriman akan dilakukan kompresi data
atau akan dibentuk sistem penyandian data dari karakter dalam bentuk untaian bit-bit
biner.
Data PDU tidak hanya berisi pesan teks saja, tetapi terdapat beberapa meta-
informasi lainnya, seperti nomor pengirim, nomor SMS Centre, waktu pengiriman,
dan sebagainya. Semua informasi yang terdapat dalam PDU, dituliskan dalam
7
bentuk pasangan-pasangan bilangan heksadesimal yang disebut dengan pasangan
oktet.
Senarai PDU akan berbeda-beda pada tiap telepon dan disana ada beberapa
alternatif ketika menampilkan pesan SMS. Beberapa opsinya adalah “PCCP437”,
“PCDN”, “8859-1”, “IRA” dan “GSM”. Semuanya diolah oleh At+Command
AT+CSCS saat user membaca pesan pada aplikasi komputer. Jika user membaca
pesan pada telepon, maka telepon akan memilih encoding yang sesuai. Sebuah
aplikasi yang dapat membaca pesan SMS yang datang lalu akan menggunakan dan
memilih untuk menggunakan mode teks atau mode PDU.
Apabila mode teks yang digunakan, maka aplikasi hanya terbatas pada default
encoding yang ada pada telepon. Pada beberapa kasus hal itu tidak cukup, sehingga
digunakan mode PDU karena semua cara encoding bisa diimplementasikan [2].
2.2.1 Bentuk Format PDU
Bentuk dan format PDU dapat dilihat pada tabel dibawah yang akan
menjelaskan senarai data dalam bentuk PDU dari tiap bagiannya. Dimisalkan user
mengirim pesan “hellohello” sehingga format PDU adalah
”078021593733F7040BC87238880900F10000993092516195800AE8329BFD4697D
9EC37”. Keterangan dari format PDU ini dapat dilihat pada tabel 2.1[2].
8
Tabel 2.1 Penjelasan dari string PDU
Octet(s) Keterangan
07 Panjang informasi yang terkandung dalam data PDU.
Dalam kasus ini terdapat 7 oktet.
91
Type-of-address dari SMS centre number. Sembilan puluh
satu adalah format internasional dari nomor telepon. Untuk
Indonesia nomor Type-of-address adalah 81.
72 83 01 00 10 F5
Service center: "+27381000015". Karena pada kasus ini
ada satu bilangan tidak mendapat pasangan, sehingga akan
dipasangkan dengan F.
04 Octet pertama dari SMS-DELIVER message.
0B Panjang alamat atau panjang dari nomor pengirim (0B hex
= 11 dec).
C8 Type-of-address dari nomor pengirim.
8021593733F7 Nomor Pengirim (decimal semi-octets), dengan pasangan
terakhir dipasangkan dengan F.
00 Data dikirim dalam bentuk SMS.
00 Menggunakan skema encoding data 7 bit.
99 30 92 51 61 95 80 Pembatasan waktu validasi SMS (semi-octets).
9
Octet(s) Keterangan
0A
Panjang data user atau panjang pesan. TP-DCS field
menunjukkan 7-bit data, sehingga panjang
direpresentasikan dengan septets (10). Jika TP-DCS field di
atur untuk menunjukkan 8-bit data, maka panjang akan
diindikasikan dengan nomor octets (9).
E8329BFD4697D9EC37 Pesan "hellohello" yang terdiri dari 8-bit octets yang
merepresentasikan 7-bit data.
Tabel 2.1 (Lanjutan) Penjelasan dari string PDU
2.2.2 AT-Command ( Perintah AT )
Komunikasi melalui gerbang serial pada komputer meggunakan terminal (
modem ) harus menggunakan perintah AT. Perintah AT dapat diketahui atau dilihat
dari kondisi terminal, seperti mengetahui kondisi sinyal, kondisi baterai, mengirim
pesan, membaca pesan dan sebagainya. Gambar 2.1 memperlihatkan beberapa jenis
perintah AT yang berhubungan dengan SMS [3].
10
AT+CMGS : Mengirim pesan
AT+CMGR : Membaca pesan
AT+CMGF : Format pesan
AT+CMGD : Menghapus pesan
AT+CNMI : Prosedur indikasi pesan baru
AT+CPMS : Pemilihan target memori
AT+CSMS : Pemilihan layanan pesan
Gambar 2.1 Contoh syntaks AT-Command.
Perintah AT (AT-Command) digunakan untuk berkomunikasi dengan terminal
melalui port serial komputer. Perintah AT dapat digunakan untuk mengetahui
kekuatan sinyal dari terminal, mengirim pesan menambahkan item pada buku alamat,
mematikan terminal dan banyak fungsi lainnya. Setiap vendor biasanya memberikan
referensi tentang daftar perintah AT yang tersedia.
2. 3 PORT COM
Selama bertahun-tahun para pengguna komputer banyak sekali yang
menggunakan port serial untuk menghubungkan beberapa alat seperti modem,
perangkat mouse, joystick dan lain - lain. Serial port juga disebut port com karena
mentransmisikan dan menerima data satu bit dalam satu fase, melalui sebuah kabel
11
tunggal. Saat ini sebuah PC masih dilengkapi dengan satu atau dua buah serial port,
yang bisa merupakan konektor serial 9 pin dan mempunyai kecepatan hingga 115.200
bit/detik.
Serial port adalah port yang pertama kali digunakan oleh PC agar dapat
berkomunikasi dengan sejumlah perangkat serial yang lain, sehingga pengguna
komputer menyebutnya sebagai port com. Secara umum, PC mendukung kegunaan
dari 4 port com yang dinamakan Com1, Com2, Com3 dan Com4.
Serial port menerima dan mengirimkan data tiap satu bit dalam satu waktu di
dalam serial port. Chip yang dinamakan Universal Asynchronous Receiver
Transmiter (UART) mengumpulkan beberapa bit yang datang dan menyatukan bit
tersebut dalam satu nilai byte. Hal serupa juga terjadi ketika port serial mengirimkan
suatu nilai byte, UART memecah byte tadi ke dalam bit-bit individual untuk
pentransmisian.
Kecepatan dari suatu serial port berhubungan secara langsung dengan
kecepatan UART. Saat ini kebanyakan komputer mempunyai kecepatan UART
16.550 bit/detik dari 115.200 bit/detik. Beberapa sistem baru menggunakan kecepatan
UART 16.550 bit/detik sampai dengan 460 Kb/detik.
Untuk menerima data, UART memonitor jalur penerima dari sebuah port.
Ketika UART mendeteksi suatu bit awal, UART akan menguji sejumlah isi dari pin
penerima dalam beberapa rentang waktu tertentu. Isi dari bit data berikutnya
ditentukan dengan mengasumsikan bahwa perangkat-perangkat port berkomunikasi
12
pada 9600 bit/detik dan UART akan mencari data dalam pin kira-kira tiap 1/9600
detik. Setelah UART membaca sejumlah bit data, UART akan mengawasi adanya bit
terakhir dan juga bit paritas, jika memang ada pengaliran komunikasi maka kedua bit
tersebut dipakai. Untuk menerima data, UART akan memunculkan suatu bit awal dan
kemudian ia akan mengirimkan sejumlah bit data sekali pada suatu waktu, dalam
interval tertentu yang lantas diikuti bit yang terakhir dan paritas yang bersifat
pilihan[4].
2.4 Pengertian GPS
GPS adalah singkatan dari Global Positioning System. GPS adalah sebuah
special radio receiver yang akan mengukur jarak dari lokasi receiver berada dengan
satelit yang terdekat dengan receiver tersebut. GPS dapat menunjukkan koordinat
lokasi di seluruh dunia dan sistem ini dapat digunakan secara gratis untuk semua
user.
GPS pertama kali dikembangkan oleh Rusia pada tahun 1957 saat Rusia
meluncurkan SPUTNIK, yaitu satelit pertama yang mengorbit bumi. SPUTNIK
mengirimkan beberapa data yang menunjukkan telemetri buni melalui radio
transmitter. Ilmuwan Amerika menyadari, apabila mereka dapat mengetahui letak
dari satelit secara tepat, maka mereka dapat secara akurat mengetahui lokasi mereka
di bumi dengan cara mendengarkan pinging sounds dan mengukur efek dopler dari
sinyal radio satelit.
13
2.4.1 GPS Segmen
Pertama-tama GPS akan dibagi menjadi 3 segmen yaitu satelit sebagai
segmen angkasa, ground station sebagai segmen kontrol dan penerima sebagai
segmen user. Di dalam GPS, peranan satelit sangatlah vital. Sebanyak 24 satelit (21
beroperasi dan 3 sebagai cadangan) mengorbit sekitar 12000 mil diatas bumi. Sebuah
satelit membutuhkan waktu 12 jam untuk mengorbit bumi dan melewati titik yang
sama tiap 24 jam. Satelit akan diposisikan sehingga penerima GPS dapat menerima
sinyal setidaknya dari 6 satelit setiap waktu, di mana saja di muka bumi (jika tidak
ada yang menghalangi sinyal).
Sebuah satelit mempunyai 3 komponen dasar :
1. Computer : on board computer yang akan mengatur penerbangan dan fungsi yang
lain.
2. Atomic Clock : akan mempertahankan keakuratan waktu dengan rentang
kesalahan 3 nanosecond.
3. Radio Transmitter : digunakan untuk mengirim sinyal ke bumi.
Sebuah satelit GPS hanya mempunyai masa kerja sebanyak 10 tahun, jika
satelit sudah mulai tidak berfungsi maka satelit cadangan akan mulai aktif dan satelit
yang baru akan diluncurkan untuk mengganti yang lama. Gambar 2.2 menunjukkan
jalur dan satelit yang mengorbit bumi.
14
Gambar 2.2 Satelit yang mengorbit bumi dengan jalur yang sama [5].
Ground Station yang berfungsi sebagai kontrol segmen akan mengontrol
satelit dari bumi dengan menentukan lokasi dan letak dari satelit. Data dari satelit
akan diproses tiap hari untuk mensinkronisasikan sinyal antara ground station dan
satelit.
Penerima GPS akan menerima 2 tipe data dari satelit yaitu :
1. Almanac : data yang berisi posisi dari satelit, dengan data secara konstan
ditransmisikan dan disimpan di dalam memory yang terdapat di dalam GPS
receiver.
2. Ephemeris : data mempunyai ketepatan posisi dari satelit dengan menggunakan
sinyal satelit dan menghitung ketepatan jarak menggunakan rumus jarak =
kecepatan x waktu dengan kecepatan dalam intensitas kecepatan cahaya.
15
2.4.2 GPS Signal
Satelit GPS mentransmisikan 2 tipe sinyal yaitu C/A-code dan P-code, untuk
lebih jelasnya dapat dilihat pada penjelasan dibawah :
1. Coarse Acquisition (C/A-code) : tipe sinyal yang banyak digunakan oleh GPS
pada umumnya. C/A-code dikirim oleh L1 band dengan frekuensi 1575,42 MHz
sehingga penyebaran sinyal C/A dikenal sebagai Standard Positioning Service (SPS).
C/A-code kurang akurat dibandingkan dengan P-code dan sangat mudah untuk
dibajak atau dimata-matai. Keuntungan dari C/A-code adalah mudah untuk
menangkap sinyal pada satelit dan mendapatkan posisi penerima. Beberapa receiver
P-code dengan standarisasi militer pertama-tama akan menggunakan C/A-code
terlebih dahulu dan kemudian akan mengubah frekuensinya ke P-code.
2. Precision (P-Code) : P-code memberikan keakuratan posisi yang sangat tinggi.
P-code termasuk sinyal yang sangat sulit untuk dibajak dan dimata-matai. Militer
adalah pengguna utama dari transmisi P-code karena P-code menggunakan data yang
telah dienkripsi, jadi hanya penerima khusus saja yang dapat mengakses kode
tersebut. Sinyal dari P-code disebarkan dari band L2 dengan frekuensi 1227,6 MHz
sehingga P-code dkenal dengan Precise Positioning Service (PPS).
16
2.4.3 Akurasi Penerima GPS
Ketepatan GPS ditentukan dari regulasi pemerintah dan merk/tipe dari GPS
penerima, dengan 15 meter adalah ruang lingkup jarak ketepatan umumnya
ditemukan di tiap penerima GPS. Jika penerima GPS melaporkan bahwa objek berada
di suatu titik maka objek berada pada jarak 15 meter dari titik tersebut.
Akurasi sebuah penerima GPS salah satunya berdasarkan dari sinyal satelit
dan unit penerima. Data GPS akan menampilkan estimasi ketepatan koordinat dalam
jarak kaki/meter dan kesalahan yang terjadi tergantung pada :
1. Lokasi penerima.
2. Halangan yang ada pada permukaan bumi ( pohon, gedung, menara dll).
3. Multipath error yaitu sinyal akan terpantul berulang kali pada permukaan yang
keras sehingga menimbulkan delay sebelum sampai pada receiver.
4. Timing error yaitu selisih ketepatan waktu antara atomic clock yang ada pada
satelit dengan waktu yang ada pada penerima.
2.4.4 Informasi yang didapat dari GPS
Selain koordinat lokasi, penerima GPS akan menyediakan informasi yang
berguna lainnya, yaitu :
1. Waktu : sebuah penerima GPS akan menerima informasi waktu dari atomic clock
yang lebih akurat dibanding dengan waktu umumnya.
17
2. Lokasi : GPS akan memberikan lokasi dalam 3 dimensi (latitude sebagai x
koordinat, longitude sebagai y koordinat dan elevasi).
3. Kecepatan : apabila objek bergerak maka penerima GPS akan menunjukkan
kecepatan objek.
4. Arah objek : sebuah penerima GPS juga akan menampilkan arah dari objek jika
objek tersebut bergerak. Oleh karena itu, jika objek tersebut diam maka hanya akan
menampilkan arah hadap objek.
5. Lokasi penyimpan : koordinat yang telah dilalui atau yang belum dilalui dapat
disimpan dalam memori penerima GPS. Koordinat lokasi tersebut dinamakan
waypoint, sekumpulan dari waypoint tersebut akan disatukan untuk dijadikan sebuah
garis yang dinamakan route .
6. Data kumulatif : sebuah penerima GPS dapat menyimpan juga informasi dari
data-data yang diperoleh diatas, misalnya : total jarak yang ditempuh, kecepatan rata-
rata, kecepatan maksimum, kecepatan minimum, waktu total dan waktu yang
diperlukan untuk sampai di lokasi yang dituju.[5][6]
2.4.5 Cara Kerja GPS
Untuk cara kerja GPS akan diperlihatkan melalui gambar dan penjelasan berikut
dengan satelit diibaratkan sebagai sebuah titik. Dimisalkan objek berada 7 km dari
titik acuan berada dengan posisi yang masih belum diketahui, dimisalkan titik
tersebut adalah “A” pada Gambar 2.3. Kemudian dari titik A tersebut diketahui juga
bahwa objek berada 14 km dari titik “B” yang dapat dilihat pada Gambar 2.4
18
Gambar. 2.3 Lokasi acuan “A”
Gambar 2.4 Lokasi acuan titik “A” dan “B”
Dari dua titik tersebut yaitu “A” dan “B” adalah titik koordinat objek tersebut
berada, tetapi objek tersebut tidak mungkin berada dalam 2 tempat yang bersamaan.
Oleh karena itu dibutuhkan satu lagi titik acuan untuk menentukan koordinat pasti
dari objek tersebut. Dimisalkan objek juga berada 3 km dari titik “C” maka dapat
19
dilihat pada Gambar 2.5. Jadi didapatkan lokasi objek yang sesungguhnya meskipun
masih kurang 1 titik/satelit untuk mengukur ketinggian/elevasi karena GPS penerima
akan menampilkan dalam bentuk 3 dimensi.
Gambar 2.5 lokasi objek
Jadi setiap satelit akan mengirimkan data posisi (X,Y,Z) kepada penerima.
Diasumsikan receiver GPS hanya bisa menerima 3 satelit yang berarti ada 3 variabel
dalam 3 persamaan dalam penerima, yaitu : X 1+Y1+Z1 = X2+Y2+X2 = X3+Y3+Z3.
Karena nilai masing-masing (X,Y,Z) berbeda-beda maka ditambahkan 3 variabel lagi
yang berlaku untuk 3 variabel tersebut yaitu (a,b,c) jadi persamaannya adalah sebagai
berikut : aX 1+bY1+cZ1 = aX2+bY2+cX2 = aX3+bY3+cZ3
Variabel (a,b,c) adalah informasi posisi ketinggian objek. Sebelum GPS
memproses 3 persamaan tersebut masih ada 1 variabel lagi yaitu waktu ( T ), dan
waktu diberikan oleh satelit yang keempat.
Saat satelit GPS mengirim sinyal ke GPS penerima di dalamnya juga ada
informasi waktu dan posisi satelit, sehingga adanya jarak dan perbedaan waktu saat
20
sinyal pertama kali dipancarkan akan membuat kurangnya akurasi dalam penentuan
koordinat objek. Kecepatan sinyal yang dipancarkan sama dengan kecepatan cahaya
pada ruang hampa. Dengan adanya atmosfir dan hambatan lain maka kecepatan ini
akan berkurang. Asumsikan bahwa ruang antara satelit dan penerima berada dalam
ruang hampa sehingga kecepatannya sama dengan kecepatan cahaya dan dengan beda
waktu sebesar ( T ), dapat diperoleh rumus : jarak (S) = Waktu (T) x Kecepatan
Cahaya (V), dengan jarak (S) adalah nilai yang digunakan dalam menentukan titik
acuan.
Untuk pembangkit waktu digunakan kristal yang bergetar pada frekuensi
tertentu sehingga lama 1 detik ditentukan lama 1 frekuensi terjadi ( 1 periode pulsa ).
Hal ini dapat dilihat pada Gambar 2.6 yang menjelaskan frekuensi pada 6 Hz
Gambar 2.6 perbandingan 1 detik dengan 6 periode pulsa
Apabila satelit berada pada ketinggian 20000 km diatas permukaan laut dan
dianggap kecepatan cahaya sekitar 300000 km/detik maka dapat dihitung waktu
21
transmisi sebesar 20000/300000 = 0.006 detik. Jika ada kesalahan pengukuran
sebesar 1/100 detik saja maka ada kesalahan koordinat sejauh 300 km. [7]
2.4.6 Bentuk keluaran data GPS
Bentuk keluaran data GPS berbentuk digital, berformat string dan sudah
distandarisasi oleh NMEA (National Marine Electronic Association) 0183 protocol.
Penerima GPS akan mengirim informasi string pada kecepatan 4800 bps, meskipun
sebelumnya string inisialisasi ulang diperlukan agar dapat diketahui berapa kali user
ingin menerima transmisi yang berisi informasi koordinat dll. Beberapa devais akan
mengirim string lebih banyak dari yang lain tergantung dari alat dan tujuan yang
diperlukan.
Contoh dari string yang ditransmisikan adalah sebagai berikut:
$GPGGA,200136,4043.2808,N,07317.4976,W,1,03,1.27,4.5,M,-34.4,M,,*41
String diatas akan dimulai dengan $GP yang berarti Global Positioning,
kemudian setelahnya akan diikuti 3 kode karakter, GGA, yang berarti terdapat data
yang sudah pasti dari sebuah Global Positioning. Waktu transmisi dari string tersebut
adalah 20:01:36 dengan urutan jam:menit:detik. GPS akan melaporkan bahwa
koordinat telah tetap di 40.432808 N latitude, 73.174976 W longitude dengan 1
berarti informasi ini valid ( bukan informasi dari transmisi sebelumnya ). Devais ini
melacak 3 (03) satelit. Garis horizontal adalah 1.27 meter dengan ketinggian 4,5
meter diatas permukaaan laut atau 34,4 meter dibawah WGS84 ellipsoid, diikuti
22
dengan DGPS data. String berakhir dengan sebuah nilai *41 yang berarti checksum
field bernilai 41 (jumlah space informasinya adalah 41). WGS84 adalah World
Geodetic System 1984 Ellipsoid, koordinat imajiner dari bentuk bumi dan digunakan
sebagai referensi untuk GPS. [8]
2.5 GIS ( Geographic Information System )
GIS adalah sistem komputer yang mampu untuk menangkap, menyimpan,
menganalisa dan menampilkan informasi geografis sehingga data akan teridentifikasi
oleh lokasi tersebut. Inti dari sebuah GIS adalah kemampuan untuk menggabungkan
beberapa informasi yang berbeda didalam sebuah konteks spatial dan kemudian
mengambil inti yang diperlukan dari beberapa/banyak informasi. Banyak informasi
tentang bumi adalah mengacu dari lokasi-lokasi yang ada, misalnya, jika informasi
pergantian musim yang terjadi telah didapat maka lokasi terjadinya musim hujan atau
musim panas di lokasi tertentu dapat diketahui. Hal ini dapat dilakukan dengan
menggunakan referensi sistem lokasi untuk dapat menentukan lokasi rawa atau danau
yang hampir mengering, jadi dapat diketahui bahwa daerah tersebut sedang berada
dalam musim hujan atau kering.
Data-data tersebut diketahui dengan menggunakan data GPS, longitude dan
latitude bahkan juga elevasi untuk kemudian disinkronisasikan dengan map digital
yang sudah ada. Spatial data atau geographic data adalah data objek yang
teridentifikasi menurut dari keadaan atau letak geografisnya.
23
Gambar 2.7 Gabungan dari beberapa bentuk data melalui GIS
Spatial data dapat diperoleh dari berbagai macam sumber misalnya dari
digital map, gambar dari satelit, GPS dll. Setelah data tersebut terkumpul maka GIS
akan menyimpan data tersebut sebagai layer didalam GIS database seperti terlihat
dalam Gambar 2.8. [9]
24
Gambar 2.8 GIS data dalam bentuk layer
Gambar 2.9 Tampilan GIS dalam satu daerah yang menunjukkan detail yang
berbeda
25
Jadi properti GIS dalam database akan mempunyai keunggulan sendiri karena
data dan presentasi petanya dipisahkan, sehinggga data dapat dipresentasikan dalam
berbagai cara dan bentuk. Menurut definisi dari GIS sendiri, GIS akan dapat
diuraikan dari beberapa sub sistem berikut ini:
1. Data Input = Sub sistem ini bertugas untuk mengumpulkan dan mempersiapkan
data spasial dan atribut dari berbagai sumber. Sub sistem ini juga berfungsi untuk
mengkonversi atau mentransformasikan format data asli kedalam format yang
digunakan oleh GIS
2. Data Output = Sub sistem ini menampilkan atau menghasilkan keluaran seluruh
atau sebagian database baik dalam bentuk softcopy maupun bentuk hardcopy seperti
tabel, grafik, peta dan lain lain.
3. Data Management = sub sistem ini menorganisasikan baik data spasial maupun
atribut kedalan sebuah database sedemikian rupa sehingga mudah dipanggil, dirubah
dan diperbaharui.
4. Data Manipulation and Analysis = sub sistem ini menentukan informasi-
informasi yang akan direpresentasikan oleh GIS. Selain itu, sub sistem ini juga
melakukan manipulasi dan pemodelan data untuk menghasilkan informasi yang
diharapkan.
Untuk lebih jelasnya dari penjelasan diatas dapat dilihat pada diagram blok
yang digambarkan pada Gambar 2.10. Untuk bentuk data spasial dalam database
akan disimpan dalam bentuk raster dan vektor.
26
DATA INPUT
Tabel
Laporan
Pengukuran Lapangan
Peta Digital
Citra Satelit
Foto Udara
Data Lain
Input Storage (database
Retrieval
Processing
Output
Data Management & Manipulation
Gambar 2.10 Uraian Subsistem dalam GIS
2.5.1 Model Raster dan Vektor
2.5.1.1 Model Data Raster
Untuk model data raster akan menampilkan, menyimpan dan menempatkan
data spasial dengan menggunakan struktur matriks atau piksel yang membentuk grid.
Setiap piksel atau sel ini memiliki atribut sendiri , termasuk koordinatnya yang unik
27
yaitu disudut grid ( pojok ), dipusat grid, atau ditempat yang lainnya. Akurasi model
ini sangat bergantung pada resolusi dan ukuran pikselnya.
Objek-objek geografis yang dapat direpresentasikan dan dimanipulasi oleh
komputer (dalam konteks ini akan digunakan terminologi entity spatial) akan
disimpan dalam layer yang secara fungsionalitas direlasikan dengan unsur-unsur
petanya. Model raster akan memberikan informasi spasial apa yang terjadi dimana
saja dalam bentuk gambaran yang digeneralisir. Dengan model data raster, data
geografi ditandai oleh nilai-nilai bilangan elemen matriks.
2.5.1.1.1 Karakteristik Layer(s) Raster
Sub bab ini akan menjelaskan sifat atau karakteristik dari sebuah layer yang
mengacu pada model data raster. Resolusi (spasial) dapat didefinisikan sebagai
dimensi linier minimum dari satuan terkecil geographic space yang dapat direkam.
Satuan terkecil ini pada umumnya berbentuk segi empat (biasanya bujur sangkar) dan
dikenal sebagai sel-sel grid, elemen matriks, elemen terkecil dari suatu gambar
(image), atau piksel. Resolusi suatu data raster akan merujuk pada ukuran (atau luas)
permukaan bumi pada setiap pikselnya.
Zone layer pada peta raster adalah sekumpulan lokasi-lokasi yang
memperlihatkan nilai-nilai (ID atau nomor pengenal yang direpresentasikan oleh nilai
piksel) yang sama. Tidak semua layer pada peta raster memiliki zone, setiap isi sel
28
grid dapat bervariasi secara kontinyu di dalam daerah tertentu sehingga setiap sel
memiliki nilai yang berbeda (unik).
Sedangkan nilai dalam konteks raster adalah item informasi (atribut) yang
disimpan dalam sebuah layer untuk setiap pikselnya. Piksel-piksel di dalam zone atau
area yang sejenis memiliki nilai (isi piksel atau nomor pengenal) yang sama. Pada
umumnya, lokasi di dalam model data raster akan diidentifikasi dengan
menggunakan pasangan kordinat kolom dan baris (x,y).
2.5.1.1.2 Layer(s) Raster
Penjelasan diatas menjelaskan bahwa setiap piksel atau sel grid memiliki nilai
tunggal. Nilai-nilai piksel ini akan bekerja-sama dalam membentuk layer(s) data
spasial. Dengan demikian suatu database spasial kemungkinan besar akan
mengandung lebih dari satu layer seperti ini. Setiap layer akan bersifat kongruen
terhadap layer(s) yang lain dalam database tersebut yaitu memiliki keselarasan yang
sama dengan batas-batas lokasi yang sama, junlah yang sama baik kolom maupun
barisnya dan sistem koordinat yang sama.
Penyimpanan layer pada kebanyakan database raster menggunakan arsitektur
yang berbeda. Ada perangkat yang menggunakan arsitektur dimana beberapa layer
berikut header dimasukkan dalam 1 file besar. Sementara perangkat yang lain
memisahkan setiap isi data dengan masing-masing header data tersebut kedalam file
29
yang terpisah. Pada prinsipnya, alternatif arsitektur ini dimaksudkan untuk
menyimpan semua layer dengan nilai –nilai piksel yang berurutan.
Pada layer raster yang disimpan dalam suatu file dapat dikelompokkan
menjadi 3 bagian yaitu header, blok data layer dan ancillary. Untuk header yang
berisi informasi penting adalah mengenai kode file, jumlah band (data yang didapat
dari berbagai peripheral) yang dikandung, baris, kolom, tipe-tipe data dan
sebagainya. Informasi ini harus dibaca terlebih dahulu sebelum membaca data yang
sebenarnya meskipun ukuran header ini hanya beberapa bytes saja. Bagian kedua
adalah blok data layer yang berisi data-data peta dalam bentuk jumlah band data, tipe
data, baris dan kolom. Sedangkan bagian yang terakhir adalah ancillary yang berisi
informasi-informasi tambahan yang biasanya meliputi data statistik citra yang
bersangkutan. Untuk penyimpanan band sendiri ada 2 macam yaitu:
1. Band-interleaved : data setiap band citra akan disimpan secara berselang-seling
oleh piksel dari band yang lain secara bergantian.
2. Band-Sequential : data setiap band citra akan disimpan secara berurutan tanpa
diselingi (interleaved) oleh piksel-piksel dari band yang lain.
Kelebihan dari model data raster adalah sebagai berikut:
1. Memiliki struktur data yang lebih sederhana.
2. Mudah dimanipulasi dengan menggunakan fungsi-fungsi matematis sederhana.
(karena strukturnya sederhana seperti matrik bilangan biasa)
30
3. Teknologi tidak begitu rumit sehingga pengguna dapat membuat program aplikasi
yang menggunakan citra raster.
4. Metode untuk mendapatkan citra raster lebih mudah (dapat menggunakan
konversi dari format citra vektor)
5. Gambaran permukaan bumi dalam format citra raster selalu lebih aktual daripada
bentuk vektornya.
6. Tipe paling sering dipakai oleh masyarakat pada umumnya untuk bertukar
informasi berupa gambar.
Kelemahan dari citra raster adalah sebagai berikut:
1. Memerlukan penyimpanan yang lebih besar daripada citra vektor
2. Penggunaan sel atau ukuran grid yang lebih besar untuk menghemat ruang
penyimpanan akan menyebabkan kehilangan informasi dan ketelitian.
3. Transformasi koordinat dan proyeksi lebih sulit dilakukan
4. Tampilan atau representasi dan akurasi posisinya sangat bergantung pada ukuran
pikselnya (resolusi spasial)
5. Sebuah citra raster hanya mengandung satu tematik saja sehingga sulit
digabungkan dengan atribut-atribut lainnya dalam satu layer dengan demikian untuk
merepresentasikan atribut-atribut tambahan diperlukan layer baru sehingga timbul
masalah ukuran file yang sangat besar.
31
Ukuran asli
Diperbesar
Gambar 2.11 Gambar Raster
2.5.1.2 Model Data Vektor
Model data vektor menampilkan, menempatkan dan menyimpan data spasial
dengan menggunakan titik-titik, garis-garis atau kurva beserta polygon dan atribut-
atributnya. Bentuk dasar representasi data spasial adalah menggunakan sistem model
data vektor, didefinisikan oleh sistem koordinat kartesian 2 dimensi (x,y). Di dalam
32
model data spasial vektor, garis-garis atau atau kurva merupakan sekumpulan titik-
titik terurut yang dihubungkan. Sedangkan luasan atau poligon juga disimpan sebagai
sekumpulan titik-titik, dengan catatan bahwa titik awal dan titik akhir poligon
memiliki koordinat yang sama (poligon tertutup dengan sempurna).
Kelebihan dari sebuah model data vektor adalah sebagai berikut:
1. Memerlukan ruang atau tempat penyimpanan yang lebih sedikit di komputer.
2. Satu layer dapat dikaitkan dengan atau mengandung banyak atribut sehingga
dapat menghemat menyimpan ruang penyimpanan secara keseluruhan.
3. Dengan banyak atribut yang dapat dikandung oleh satu layer, banyak peta
(tematik) lain (layer) yang dapat dihasilkan sebagai peta turunannya.
4. Memiliki resolusi spasial yang tinggi.
5. Transformasi koordinat dan proyeksi sangat mudah dilakukan.
6. Dapat diperbesar / zoom hingga tak terbatas.
Sedang kelemahannya adalah sebagai berikut:
1. Memiliki struktur data yang kompleks.
2. Datanya tidak mudah dimanipulasi.
3. Pengguna tidak mudah berkreasi untuk membuat programnya sendiri untuk
memenuhi kebutuhan aplikasinya. Hal ini disebabkan oleh struktur data vektor yang
33
jauh lebih kompleks dan prosedur-prosedur analisisnya memerlukan kemampuan
yang tinggi karena lebih sulit dan rumit.
4. Karena proses keseluruhan untuk mendapatkannya lebih lama, peta vektor sering
mengalami out of date atau kadaluarsa.
5. Proses pembuatannya memerlukan alat khusus seperti plotter, atau dengan cara
menggambar melalui perangkat lunak yang menghasilkan objek bertipe vektor seperti
corel, autocad, map info, dan lain lain [10][11][12].
Representasi vektor suatu objek merupakan suatu cara di dalam menyajikan
objek yang bersangkutan secara sempurna. Untuk itu, ruang atau dimensi koordinat
diasumsikan bersifat kontinyu (tidak dikuantisasi sebagaimana ruang terjadi pada
model data raster) yang memungkinkan semua posisi, panjang dan dimensi
didefinisikan dengan presisi. Gambar 2.12 menunjukkan karakteristik dari gambar
vektor.
Ukuran asli
Gambar 2.12 Gambar Vektor
34
Diperbesar
Gambar 2.12 (lanjutan) Gambar Vektor
2.6 Mikrokontroler AVR ATMega8515
Mikrokontroler AVR memiliki arsitektur RISC (Reduced Instruction Set
Computing) 8 bit, sehingga semua instruksi dikemas dalam kode 16-bit (16-bits
word) dan sebagian besar instruksi dieksekusi dalam 1(satu) siklus clock.
Untuk blok diagram fungsionalnya dapat dilihat pada Gambar 2.13 dengan
bagian-bagian adalah sebagai berikut:
1. Saluran I/O sebanyak 32 buah, yaitu Port A, Port B, Port C, dan Port D.
2. ADC 10 bit sebanyak 8 saluran.
35
3. Tiga buah Timer/Counter dengan kemampuan pembanding.
4. CPU yang terdiri atas 32 buah register.
5. SRAM sebesar 512 byte.
6. Unit interupsi internal dan eksternal.
7. EEPROM (Electrically Erasable Programmable Read Only Memory) sebesar
512 byte yang dapat diprogram saat operasi.
8. Antarmuka komparator analog.
9. Port USART untuk komunikasi serial.
Dan untuk fitur-fitur yang dimiliki oleh mikrokontroller sebagai berikut:
1. Sistem Mikroprosessor dengan kecepatan maksimum 16 MHz.
2. ADC internal.
3. Portal komunikasi serial (USART) dengan kecepatan maksimum 2,5 Mbps.
4. Enam pilihan mode sleep menghemat penggunaan daya listrik.
5. Kapabilitas memori flash 8 KB, SRAM 512 byte.
36
Gambar 2.13 Diagram blok fungsional ATmega8515
Kofigurasi pin ATMega8535 bisa dilihat pada Gambar 2.14. Penjelasan
secara fungsional adalah sebagai berikut:
37
1. VCC merupakan pin yang berfungsi sebagai masukkan catu daya.
2. GND merupakan pin ground.
3. Port A (PA0..PA7) merupakan pin I/O dua arah dan pin masukkan ADC.
4. Port B (PB0..PB7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu
Timer/Counter, komparator analog, dan SPI.
5. Port C (PC0..PC7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu TWI,
comparator analog, dan timer oscilator.
6. Port D (PD0..PD7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu
komparator analog, interupsi eksternal, dan komunikasi serial.
7. RESET merupakan pin yang digunakan untuk reset mikrokontroler.
8. XTAL1 dan XTAL2 merupakan pin masukkan tegangan untuk clock eksternal.
9. AVCC merupakan pin masukan tegangan untuk ADC.
10. AREF merupakan pin masukan tegangan referensi ADC. [13]
Gambar 2.14. Pin ATMega8515
38
2.7 Relational Database Management System
Merupakan sekumpulan data yang disimpan sedemikian rupa sehingga mudah
diambil informasinya bagi pengguna meskipun data tersebut saling berhubungan.
RDBMS merupakan suatu paket perangkat lunak yang kompleks digunakan untuk
memanipulasi database.
Ada tiga prinsip dalam RDBMS yaitu:
1. Data definition: mendefinisikan jenis data yang akan dibuat (dapat berupa angka
atau huruf), relasi data, validasi data dan lain-lain.
2. Data Manipulation: data yang telah dibuat dan didefinisikan tersebut akan
dilakukan beberapa pengerjaan, seperti menyaring data, melakukan proses query dan
sebagainya.
3. Data Control: bagian ini berkenaan dengan cara mengendalikan data, seperti
siapa saja yang bisa melihat isi data, bagaimana data bisa digunakan oleh banyak user
dan sebagainya.
Semua operasi input dan output yang berhubungan dengan database harus
menggunakan DBMS. Bila pemakai akan mengakses database, DBMS menyediakan
penghubung (interface) antara pemakai dengan database. Hubungan pengguna
dengan database dapat dilakukan dengan 2 cara:
1. Secara interaktif mengggunakan bahasa pertanyaan (query language)
2. Dengan menggunakan program aplikasi
39
Beberapa contoh software database adalah Dbase, Foxbase, Foxpro, Microsoft
Access, File Maker Pro, DB2, Postgres/Ingres, Microsoft SQL Server, Oracle, Power
Builder, Sybase, MySQL dan sebagainya. SQL adalah singkatan dari Structured
Query Language. SQL adalah bahasa yang digunakan untuk berkomunikasi dengan
database. Menurut ANSI (American National Standard Institute), bahasa ini
merupakan standar untuk Relational Database Management System (RDBMS).
Pertanyaan-pertanyaan pada SQL digunakan untuk melakukan beberapa tugas
seperti update data pada database, atau menampilkan data dari database. Beberapa
software RDBMS dapat menggunakan SQL, seperti Oracle, Sybase, Microsoft SQL
Server, Microsoft Access dan Ingres, namun pada prinsipnya mempunyai arti dan
fungsi yang sama. Perintah di bawah ini dapat digunakan untuk mengerjakan hampir
semua kebutuhan dalam database.
Perintah-perintah tersebut antara lain:
1. Select
2. Insert
3. Update
4. Delete
5. Create
6. Drop
40
2.7.1 SQL SERVER 2000
MS SQL Server adalah salah satu produk Relational Database Management
System (RDBMS) yang handal buatan Microsoft. Fungsi utamanya adalah sebagai
database server yang mengatur semua proses penyimpanan data dan transaksi suatu
aplikasi. Program ini dapat beroperasi pada berbagai sistem informasi, mulai dari
Windows 9x, Windows 2000 dengan berbagai macam versinya, Windows NT dan
Windows XP.
SQL Server diluncurkan pada tahun 1989 dan berkembang sangat pesat sejak
saat itu, baik dalam skalabilitas, integritas, kemudahan dalam administrasi,
performance dan juga feature. SQL Server yang umumnya digunakan adalah SQL
server 2000. Versi 2000 memiliki feature-feature lengkap untuk membangun aplikasi
mulai skala kecil sampai dengan tingkat enterprise.
Masing-masing versi memiliki perbedaan dalam hal maksimum ukuran
database, RAM, jumlah koneksi serta berbagai feature lanjutan. Versi personal,
developer dan desktop dapat digunakan di OS Desktop seperti Windows 2000 dan
Xp, sedangkan versi Enterprise dan Standard hanya dapat digunakan di Windows
2000/2003 Server serta NT Server. Versi Windows CE biasa digunakan untuk PDA
dan Pocket PC.
Untuk relationship tabel yang ada pada SQL Server agar dimudahkan untuk
menjaga keutuhan database digunakan cascade update dan delete
41
Pada Gambar 2.15 dapat dilihat bagaimana cara menjaga keutuhan relationships
dengan cascade update dan cascade delete. Cascade Update berfungsi untuk
mengganti data pada Tabel sehingga tidak terjadi kesalahan pada data yang
bersangkutan antar Tabel, sedangkan cascade delete digunakan untuk menghapus
data pada Tabel agar data pada komponen Tabel tetap sesuai satu sama lain. [8]
Gambar 2.15 Cascade update dan cascade delete
42
2.8 .NET
Interoperabilitas adalah suatu kemampuan untuk saling bekerjasama antara
sebuah sistem, khususnya pada suatu sistem komputer. Jadi inti interoperabilitas
adalah bagaimana suatu sistem yang berbeda dapat saling berkomunikasi.
Permasalahan ini dipecahkan dengan hadirnya konsep protokol (misalnya TCP/IP,
Bluetooth, dan sebagainya).
Protokol adalah sekumpulan aturan spesifik yang memungkinkan berbagai
sistem dapat berkomunikasi. Protokol meliputi seluruh format data, error handler,
dan prosedur-prosedur khusus dalam berkomunikasi.
Namun protokol bukanlah akhir dari sebuah solusi interoperabilitas. Semakin
hari sistem komputer makin bersifat distributif, bila dahulu komputer hidup secara
stand alone maka saat ini hampir sekitar 70% komputer di dunia terhubung dengan
internet. Hal ini memberikan arti bahwa semakin hari tingkat interoperabilitas
semakin kompleks. Kekompleksan ini dapat dilihat dengan menujunya
interoperabilitas pada tingkat aplikasi.
Tujuan interoperabilitas tingkat software adalah bagaimana komponen -
komponen aplikasi yang dibuat dengan development tools yang berbeda, dengan
bahasa yang berbeda, serta berjalan pada platform yang berbeda dapat saling
berkomunikasi.
43
2.8.1 ADO.NET
ADO.NET adalah fitur sistem koneksi yang terdapat pada VB.NET untuk
sistem koneksi antara aplikasi dengan database. Pada ADO.NET dikembangkan
sebuah arsitektur baru yang mencoba melakukan koneksi ke server/database dengan
paradigma baru, yakni paradigma terputus. Dengan kata lain klien melakukan koneksi
ke database jika hanya diperlukan, yaitu pada saat melakukan query data kedalam
database.
Yang dimaksud dengan klien (client) adalah program yang mengakses
database (query). Jadi dengan menggunakan sistem diatas akan mereduksi akan
terjadinya bottleneck.
BAB III
PERANCANGAN SISTEM
Bab ini akan menjelaskan perancangan program aplikasi pelacak objek.
Program akan terdiri dari 2 jenis, yaitu program dengan menggunakan bahasa
assembler untuk program pengendali data pada mikrokontroler dan menggunakan
Visual Basic .NET® untuk penampil data pada PC. Kedua program dibuat dengan
spesifikasi komputer AMD Turion 64 dan RAM sebesar 1024 MB. Program untuk
tampilan akan dibuat agar dapat menampilkan objek secara visual pada peta dengan
berbentuk jalur atau titik. Program ini dibuat dengan mengaplikasikan peta digital
GIS dan GPS.
3.1 Model Sistem
Perancangan akan dibagi dalam 2 sistem, yaitu sistem pemancar dan sistem
penerima. Diagram blok dari sistem pemancar dapat dilihat pada Gambar 3.1,
sedangkan diagram blok dari sistem penerima dapat dilihat pada Gambar 3.2.
Diagram blok akan menggambarkan koneksi antara komponen-komponennya.
47
MCU GPS HP
Jalur Data
Gambar 3.1 Sistem pemancar dan penyedia data
HP PC
Jalur Kendali
Jalur Data
Gambar 3.2 Sistem penerima dan penampil data
48
Sistem penerima akan mengggunakan sebuah PC dan sebuah telepon seluler
dengan PC sebagai pengendali untuk meminta data yang berupa koordinat objek dari
sistem pemancar. Perintah AT yang terdapat di Windows HyperTerminal akan
digunakan untuk mengendalikan permintaan data pada pemancar melalui HP yang
sudah terkoneksi dalam bentuk SMS. Sistem pemancar menggunakan GPS sebagai
penyedia data dan akan dikendalikan oleh mikrokontroler untuk aktivasi, sedangkan
mikrokontroler akan meminta data atau mengaktifkan GPS apabila ada SMS yang
masuk dari HP yang sudah terkoneksi sebelumnya.
Komponen utama dari sistem penerima adalah sebuah PC sebagai penampil
dan HP Siemens M55 untuk penerima dan pengirim data. Sistem pemancar
menggunakan GPS Receiver/GPS Mouse BR304 seriel sebagai penyedia data dan
sistem minimal mikrokontroler ATMega 8515 dengan 2 port RS232 sebagai koneksi
antara GPS dan HP siemens M55.
3.2 Perancangan Perangkat Lunak
3.2.1 Algoritma Penerima dan Penyimpan data
Untuk algoritma perancangan program untuk penerima dan penyimpan data
adalah sebagai berikut:
1. Awal program akan dimulai dengan pembacaan serial port.
2. Memeriksa apakah ada data atau tidak.
49
3. Mendekodekan format PDU yang berasal dari HP dengan menggunakan PDU
decoder.
4. Memeriksa ada tidaknya data baru user tersebut dengan waktu yang diinginkan
user.
5. Menyimpan/memperbaharui data ke dalam database.
6. Reset timer hingga proses kembali seperti semula.
3.2.2 Diagram alir Penerima dan penyimpan data
Gambar 3.3 adalah diagram alir dari algoritma program pada bagian
3.2.1.
Mulai
Timer ON
Timer = 100ms
Increment Timer
Timer Off
Ada?
Tidak
Ya
Tidak
Baca Data Decode PDU
Reset Timer
Ya
B
Cek data user
A
Gambar 3.3 Diagram alir untuk fungsi penyimpan dan penerima data objek.
50
Terdaftar ?
Ada ?
Perbaharui data
B
Ya
Tidak
Tidak
Ya
Masukkan data baru
Cek User
Cek data posisi user pada waktu sekarang
A
Gambar 3.3 (lanjutan) Diagram alir untuk fungsi penyimpan dan penerima data
objek.
3.2.3 Algoritma Cek Data User
Algoritma cek data user dijelaskan seperti langkah-langkah dibawah ini:
1. Cek data dalam HP melalui hyperterminal dan AT Command.
51
2. Dekodekan format PDU yang ada dalam Handphone .
3. Baca header untuk nomor pengirim pada PDU.
4. Baca data pada database untuk user yang terdaftar.
5. Cocokkan data header dan data database.
3.2.4 Diagram Alir Cek Data User
Diagram alir dari algoritma program dari bagian 3.2.3 ditunjukkan oleh
Gambar 3.4
Mulai
Cek data pada Handphone
Dekodekan PDU
Baca Header data
Baca database
Cocokkan header dengan data database
Selesai
Gambar 3.4 Diagram alir untuk Validasi data user
52
3.2.5 GIS Mapping
Perancangan menggunakan peta digital GIS yang berupa layer pertama
akan dipilih layer file utama dan kemudian memilih warna dari peta dan
atributnya selanjutnya memilih legend¸ terakhir menampilkan layer kedalam
Program Visual Basic. Diagram alir dalam mapping dapat dilihat pada Gambar
3.5.
Mulai
Pilih Layer File
Pilih Warna
Selesai
Tampilkan Layer ke Peta
Gambar 3.5 Diagram alir mapping pada GIS
Untuk menampilkan peta digital kedalam Visual Basic diperlukan
komponen ESRI MapObject® agar bisa berintegrasi dalam form Visual Basic.
Gambar 3.6 dan Gambar 3.7 menunjukkan component Esri MapObject.
53
Gambar 3.6 Komponen yang diperlukan untuk menampilkan peta
Gambar 3.7 Window untuk pemilihan layer yang disediakan oleh MapObjects
3.2.6 Algoritma Login User
Sebelum memasuki menu utama harus melalui proses login selain untuk
keamanan program juga sebagai input data awal pada database. Gambar 3.8
menunjukkan diagram alir dari program login user.
54
Masukkan Nama dan Password
Baca Data pada Database
Cari account user
Ada ? Tidak
Tidak
Ya
Ya
Selesai
Tampilkan menu utama
Cocokkan nama dan password
Mulai
Gambar 3.8 Diagram alir login untuk user
55
3.2.7 Menu Utama
Gambar 3.9 menunjukkan layout program utama. Pada menu utama terdapat
beberapa menu yaitu:
1. Menu informasi yang terdiri dari:
1. form Administrator.
2. form Anggota .
3. form Peta.
2. Menu pengaturan yang terdiri dari:
1. form Database setting
3. Menu bantuan terdiri dari:
1. form Tentang program
Gambar 3.9 Tampilan utama yang berisi sub menu Informasi, Pengaturan dan
Bantuan
56
Gambar 3.9 Tampilan utama yang berisi sub menu Informasi, Pengaturan dan
Bantuan (lanjutan)
3.2.7.1 Form Anggota dan form Manajemen User
Form Anggota dan pengguna yang mempunyai bentuk form yang sama dapat
diakses dari menu informasi yang terdapat pada menu utama. Gambar 3.10
menunjukkan layout dari menu anggota dan menu untuk menampilkan posisi.
57
Gambar 3.10 Layout dari form Anggota
Di dalam form manajemen user dapat diubah account administrator pada
database sehingga administrator dapat menambah dan menghapus account anggota
yang sudah ada. Diagram alir dari form anggota dapat dilihat pada Gambar 3.11.
Hapus Data pada Databse
Hapus Data
Tidak
Tidak
Tidak
Ya
Ya
Ya
Masukkan data ke Database
Simpan Data
Masukkan data user
Tambah Data
Mulai
Tidak
Edit Data Ubah D t b
Simpan Data
Edit Data User
Ya
Tidak
Hapus Data
Tidak
Ya
Ya
Selesai
Gambar 3.11 Diagram alir form anggota
58
3.2.7.2 Pengaturan Database
Pada engaturan Database akan dijelaskan tentang pengaturan dari
koneksi pada database dan server untuk tiap-tiap pengguna. Diagram alir untuk
form pengaturan database dapat dilihat pada Gambar 3.12.
Mulai
Buat Koneksi
Koneksi Berhasil
Simpan Setting
Selesai
Ya
Tidak
Masukkan nama
Server
Masukkan nama
Database
Masukkan nama ser dan Password
u
Gambar 3.12 Diagram alir untuk pengaturan database.
59
Form pengaturan database akan melakukan input nama server,
database, validasi user dan password. Jika koneksi berhasil maka setting akan
disimpan setelah koneksi dibuat pada database. Untuk perancangan database
digunakan MS SQL Server 2000, dengan nama database yaitu GIS dan
menggunakan 3 tabel:
1. Tabel Anggota
2. Tabel Pengguna
3. Tabel Posisi
Rancangan awal pada database akan digunakan Tabel Anggota yang
berelasi dengan Tabel Posisi sedangkan Tabel Pengguna tidak berelasi dengan
kedua tabel yang tersisa sehingga korelasinya dapat dilihat pada Gambar 3.13
Pengguna -User ID -Password -Hak
Anggota -User ID
Posisi -User ID
Gambar 3.13 Korelasi Tabel pada database
Hubungan antar Tabel pada Tabel Anggota dan Posisi sangat erat, dengan
Tabel master atau Tabel induk adalah Tabel Anggota. Jadi apabila Tabel Anggota
salah satu komponen penyusunnya dihapus maka akan berefek juga pada dihapusnya
salah satu komponen penyusun yang terdapat pada Tabel posisi.
60
Misalnya, jika Tabel anggota yang mempunyai komponen UserID dengan
data “user123”, maka komponen UserID yang berisi data “user123” tersebut dihapus
maka secara otomatis data yang sama yang terdapat pada Tabel posisi akan ikut
terhapus. Sedangkan apabila pada Tabel slave yaitu tabel posisi, komponen penyusun
UserID dihapus maka Tabel induk tidak akan ikut terhapus meskipun hal itu
mengakibatkan relasi antar Tabel menjadi rusak karena UserID yang terdapat pada
Tabel Master sudah tidak ada. Untuk menjaga keutuhan relasi adalah dengan
menggunakan cascade delete dan update.
3.2.7.2.1 Tabel Pengguna
Tabel Pengguna yang tidak berelasi secara langsung dengan Tabel Anggota
dan Tabel posisi akan digunakan untuk menyimpan data anggota dengan komposisi
penyusun Tabel dapat dilihat pada gambar 3.14
Gambar 3.14 Komponen penyusun tabel Anggota
61
Tabel Pengguna akan berfungsi untuk:
1. Pengelolaan data user.
2. Mengatur semua aktivitas yang dilakukan oleh user yang sedang login menurut
otoritas dan hak yang dimiliki oleh user tersebut.
3.2.7.2.2 Tabel Anggota
Komponen penyusun tabel Anggota dapat dijelaskan pada gambar 3.15. Tabel
anggota mempunyai fungsi untuk menentukan user dan informasi yang lebih
mendetail dan harus dikombinasikan dengan Tabel posisi.
Gambar 3.15 Komponen penyusun tabel Anggota
3.2.7.2.3 Tabel Posisi
Pada Tabel posisi komponen penyusunnya dapat dilihat pada Gambar 3.16.
Pada Tabel posisi terdapat relasi komponen penyusun yang terdapat pada field
UserID antara Tabel Anggota dan Tabel Posisi.
62
Gambar 3.16 Komponen penyusun tabel posisi
Tabel posisi mempunyai fungsi:
1. Untuk menentukan identitas user yang mengakses.
2. Menyimpan informasi dari objek yang sedang diakses user yaitu berupa posisi
(latitude dan longitude), lama waktu yang diakses, kecepatan user dan arah dari
objek.
3.2.8 Class pada VB.NET
Pada aplikasi untuk menampilkan objek, di server akan digunakan class untuk
pemanggilan objek atau perintah agar program lebih terstruktur dan data lebih mudah
dimanipulasi.
Terdapat 3 class yang terdapat pada program:
1. Class Koneksi terdiri dari:
1. Server
63
2. Nama Database
3. UserID
4. Password
5. Connected
6. Connection String
7. Properti Connection
2. Class Query terdiri dari:
1. Query Execute
2. Query Non Execute
3. Class Data
1. Ambil data
2. Tambah data
3. Edit data
4. Hapus data
5. Simpan data
Aplikasi akan mengambil data pada database dengan menggunakan query
sehingga perlu adanya koneksi/jembatan untuk menghubungkan aplikasi dengan
database pada saat aplikasi sedang memanipulasi data secara real-time atau pada saat
itu juga. Jadi untuk mengambil data pada saat query akan dipanggil class koneksi
untuk melihat apakah ada data yang diubah atau perlu load data pada aplikasi. Pada
64
class koneksi terdapat 4 properti yang bisa di-set ataupun di-get oleh user, dalam
artian user bisa memasukkan data maupun me-load data yang ingin dilihat saat itu
juga dalam hal ini adalah Nama Server, UserID, Nama database dan Password.
Tetapi untuk 3 properti sisa yaitu Connected, Connection String dan Properti
Connection tidak dapat diubah.
Untuk fungsi dari properti connected adalah sebagai penanda apakah data
sudah valid atau belum untuk membuat koneksi dengan database melalui properti
connection. Properti connection string berisi parameter dalam membuat koneksi
misalnya nama server, user id, validasi password dan lainnya. Properti connection
akan membuat jalur/koneksi antara aplikasi dengan database dengan bergantung pada
properti-properti yang terdapat pada class koneksi
Kemudian pada class Query terdapat 2 properti yaitu Query Execute dan
Query Non-Execute. Query Execute digunakan apabila user menginginkan nilai balik
dengan data yang ada pada database. Query Non-Execute digunakan apabila user
tidak menginginkan nilai balik meskipun pada aplikasi ini, Query Non-Execute akan
dibuat agar program memberi nilai balik berupa true atau false.
Class data akan berisi properti yang akan digunakan untuk pengolahan data
pada database. Apabila terdapat perubahan pada properti server, nama database,
userID dan password maka secara otomatis properti connected akan berubah
menjadi true dan kemudian properti connection string akan diubah dengan data yang
baru
65
Properti connected mempunyai output true atau false. Jika properti connected
mempunyai nilai true maka properti connection akan membuat koneksi pada
database untuk query data.
Diagram alir cara kerja dari class koneksi dapat dilihat pada Gambar
3.17
Berubahkah Cek Field pada properti yang bisa di-set?
Generate Connection String
Ya
Buat Koneksi
Connected True?
Tidak
Tidak
Ya
Gambar 3.17 Diagram alir cara kerja pada class koneksi
66
3.2.9 Interface pada Mikrokontroler
Dikarenakan pada mikrokontroler ATMega 8535 hanya mempunyai 1 port
yang mendukung USART sehingga port dipecah untuk komunikasi devais menjadi 2
bagian yaitu pada Tx yang akan digunakan untuk komunikasi mikrokontroler dengan
HP dan Rx untuk komunikasi mikrokontroler dengan GPS. Antarmuka akan
menggunakan IC Max232 yang kemudian akan dihubungkan langsung dengan kabel
DB-9 untuk komunikasi serial. Untuk lebih jelasnya dapat dilihat pada gambar 3.18.
VCC_CIRCLE
P1
CONNECTOR DB9
594837261
J4
CON8
12345678
J2
CON8
12345678
P2
CONNECTOR DB9
594837261
C5
C6
C8
C
C7
C
U5
MAX232
138
1110
134526
129147
R1INR2INT1INT2IN
C+C1-C2+C2-V+V-
R1OUTR2OUTT1OUTT2OUT
Gambar 3.18 Antarmuka HP dan GPS dengan RS-232
67
3.2.10 Pengendali data pada Mikrokontroler
Pada mikrokontroler akan terdapat perubahan data dari pertama kali data GPS
diambil sampai dengan saat mengirimkan data pada HP dengan menggunakan format
SMS.
3.2.10.1 Aplikasi Pengambil Data
Pada program untuk pengambilan data, disini GPS akan bersifat free-running
tiap kali GPS dalam posisi “ON”. Data pada GPS akan dikonversi dari string menjadi
heksa agar dapat mudah diolah oleh mikrokontroler saat data akan dikirimkan dalam
bentuk SMS. Diagram alir dapat dilihat pada Gambar 3.19.
Mulai
Ambil data
GPS
A
Beri Delay
B
Gambar 3.19 Diagram Alir Pengambilan data GPS
68
A
Ya
Konversi String ke Heksa
BTidak Sudah
Selesai ?
Simpan ke Memori
Selesai
Gambar 3.19 Diagram Alir Pengambilan data GPS (lanjutan)
3.2.10.2 Aplikasi Mengirim SMS
Pada Mikrokontroler akan digunakan HP tipe Siemens M55 untuk
mengirimkan data yang sudah berisi data string GPS yang sudah diolah oleh
mikrokontroler ke HP yang berada pada server. Data tersebut diolah lagi agar
bisa diterjemahkan dalam bentuk visual. Data pertama kali akan diubah dari
bentuk heksa kedalam ASCII dan kemudian akan diubah lagi kedalam bentuk
69
PDU hingga akhirnya data akan dikirimkan dalam bentuk SMS. Diagram alir
dapat dilihat pada Gambar 3.20.
Mulai
Kirim AT+CMGS = 26
Beri delay
B
Ambil data pada memori
Cek CMGS=’>’
Ubah dari Heksa ke
ASCII Ubah ASCII ke PDU
format
A
Gambar 3.20 Diagram Alir kirim SMS
70
A
Kirim pesan
B Selesai kirim
pesan ?
Selesai
Kirim AT+CMGS=‘^Z’
Gambar 3.20 Diagram Alir kirim SMS (lanjutan)
BAB IV
HASIL DAN PEMBAHASAN
4.1 Program Ambil Data
Program ambil data berfungsi untuk mengambil data SMS dari HP dan
menyimpan data yang sudah diolah dari format PDU menjadi format string ke dalam
database untuk kemudian digunakan pada program visualisasi objek. Program ambil
data langsung berkomunikasi dengan port COM untuk kemudian mengecek SMS
yang ada pada inbox SMS HP dengan iterasi 100 kali karena isi maksimal SMS pada
inbox adalah 100 SMS. Setelah iterasi 100 kali, program akan berhenti mengecek
SMS di inbox. Program akan membaca SMS, menyimpan dan memisahkan data ke
dalam database. Setelah itu program akan menghapus SMS tersebut. Urutan tadi
akan dieksekusi jika tombol “Mulai Ambil Data” dipilih. Gambar 4.1 menunjukkan
program ambil data.
Gambar 4.1 Tampilan utama program ambil data
72
4.2 Program Visualisasi
4.2.1 Login Form
Sebelum memasuki halaman utama program, user diharuskan untuk memasukkan
user name dan password untuk mengetahui apakah user terdaftar atau tidak dengan
mengecek pada database. Jika validasi berhasil maka program akan menampilkan
halaman utama. Login Form dapat dilihat pada gambar 4.2.
Gambar 4.2 Login form
4.2.2 Halaman Utama
Halaman utama terdapat 3 menu bar yaitu ‘Informasi’, ‘Pengaturan’ dan
‘Bantuan’. Menu bar ‘Informasi’ terdiri dari sub menu ‘Administrator’, ’Anggota’
dan ‘Peta’. Sub menu ‘Administrator’ berfungsi untuk masuk ke halaman
administrasi user kemudian sub menu ‘Anggota’ berfungsi untuk masuk ke halaman
‘form data anggota’. Gambar 4.3 menunjukkan tampilan awal program. Gambar 4.4
menunjukkan menu bar ‘informasi’ beserta sub menu bar di dalamnya.
73
Gambar 4.3 Tampilan utama program
Gambar 4.4 Menu bar informasi
Menu bar ‘Pengaturan’ mempunyai sub menu bar ‘Pengaturan database’
untuk masuk ke halaman pengaturan database. Gambar 4.5 menunjukkan menu bar
‘Pengaturan’ beserta sub menu bar di dalamnya.
74
Gambar 4.5 Menu bar Pengaturan
Sub menu ‘bantuan’ akan berisi sub menu ‘Tentang Program’ yang
menjelaskan data diri pembuat program dan pembimbing tugas akhir. Gambar 4.6
menampilkan menu bar ‘Bantuan’ dan sub menu di dalamnya.
Gambar 4.6 Menu bar bantuan dan sub menu
4.2.2.1 Administrator
Sub menu ‘Administrator’ pada menu bar ‘Informasi’ berfungsi untuk masuk
ke halaman administrasi user. Halaman administrasi user berfungsi sebagai pengatur
program, yaitu untuk mengubah hak akses, menambah user, menghapus user dan
untuk proses monitoring. Gambar 4.7 menampilkan halaman administrasi user.
Halaman administrasi menampilkan anggota berdasarkan user ID dan juga
hak dalam mengakses program ini. Pada halaman administrasi user, Administrator
akan dapat membuat user baru, mengubah data user yang sudah ada dan menghapus
user.
75
Gambar 4.7 Halaman administrasi user
Gambar 4.8 menampilkan halaman untuk membuat user baru beserta hak dan
password dengan mengaktifkan tombol ‘buat user baru’. Tombol ‘edit user’
menampilkan halaman untuk mengubah data dari user yang telah ada. Secara visual,
halaman edit user mempunyai bentuk yang sama dengan halaman untuk membuat
user baru. Tombol ‘hapus’ berfungsi untuk menghapus user dari database.
Gambar 4.8 Halaman untuk membuat user baru
76
4.2.2.2 Anggota
Sub menu ‘anggota’ berfungsi untuk masuk kedalam halaman form data
anggota dan tabel posisi yang dapat dilihat pada Gambar 4.9. Form data anggota
hanya bisa dimasuki oleh user yang mempunyai status hak sebagai anggota dan
administrator, selain itu maka anggota yang belum terdaftar tidak bisa mengakses
halaman ini..
Gambar 4.9 Halaman form data anggota
Contoh dari tabel data anggota dapat dilihat pada Gambar 4.10. Form data
anggota berfungsi untuk menampilkan data dari anggota yang ingin ditampilkan
posisinya. Tabel posisi berfungsi untuk menampilkan apakah ada data posisi yang
bisa ditampilkan dalam peta
77
Gambar 4.10 Data dari user yang didapat dari database
4.2.2.3 Peta
Sub menu ‘Peta’ berfungsi untuk masuk ke dalam halaman form GIS untuk
menampilkan peta Yogyakarta [12] dan visualisasi dari data yang ada pada tabel
posisi. Gambar 4.11 menunjukkan halaman dari form GIS.
Gambar 4.11 Peta dalam form GIS
78
Fungsi tombol ’pan’ atau simbol tangan berfungsi untuk menggerakan peta
supaya peta dapat lebih terlihat. Zoom in dan zoom out berfungsi untuk memperbesar
dan memperkecil peta. Full extent yang disimbolkan dengan gambar bumi berfungsi
untuk menampilkan peta secara keseluruhan.
Dalam menu bar ‘Pengaturan’ terdapat sub menu bar ‘Pengaturan database’
yang berfungsi untuk mengatur koneksi antara program dengan database SQL
Server. Menu bar, sub menu bar dan halaman setting koneksi dapat dilihat pada
Gambar 4.12 dan Gambar 4.13.
Gambar 4.12 Sub menu yang terdapat dalam menu bar Pengaturan
Gambar 4.13 Halaman setting koneksi
4.2.3 Visualisasi Objek
Data posisi objek yang sudah berada di dalam database dapat ditampilkan
dengan masuk ke dalam halaman form anggota, dengan login terlebih dahulu untuk
79
menentukan hak akses. Setelah berada di dalam form anggota, user dapat memilih
user lain yang ingin ditampilkan data posisinya dengan memilih nama user/id user
yang telah terdaftar di form window sebelah kiri. Setelah user dipilih, user dapat
beralih halaman dengan menggunakan tab yang terletak di atas window sebelah
kanan. Gambar 4.14 menunjukkan tab form antara anggota dan posisi yang terletak di
dalam form anggota.
Gambar 4.14 Tab perpindahan antara form anggota dan form posisi
Setelah masuk ke dalam form posisi user dapat memilih data berdasarkan
waktu yang ada untuk mendapatkan data yang ada pada database. Gambar 4.15
menunjukkan form posisi dalam form anggota.
Setelah data yang diinginkan didapat, selanjutnya user dapat menekan tombol
‘Tampilkan Posisi’ yang disimbolkan oleh tanda anak panah. Gambar 4.16
menunjukkan letak tombol untuk menampilkan posisi dan Gambar 4.17 menunjukkan
data yang telah divisualisasi.
80
Gambar 4.15 Pemilihan data yang ingin ditampilkan berdasarkan waktu.
Gambar 4.16 Tombol ‘Tampilkan posisi’ untuk memvisualisasikan data.
Gambar 4.17 Tampilan data yang telah divisualisasikan pada peta.
81
4.2.4 Transmitter dan Data Koordinat GPS
Objek yang ingin diketahui posisinya harus ditempel dengan transmitter
sebagai penyedia data. Transmitter terdiri dari GPS, HP dan mikrokontroler yang
berfungsi sebagai pengendali data. Server berfungsi sebagai penerima data dan
visualisasi data. Sub bab ini akan membahas tentang transmitter dan analisis pada
data lampiran yang telah didapat saat pengujian alat.
4.2.4.1 Data dari GPS
GPS yang berada pada transmitter mempunyai 4 macam jenis keluaran data
berbentuk data string yaitu bertipe GGA, GSV, GSA dan RMC. Penjelasan dari 4
macam keluaran data GPS adalah:
1. $GPGGA,142222,0745.6812,S,11023.0020,E,1,03,3.3,72.4,M,-34.0,M,,*
(data GPS pasti)
2. $GPGSV,3,3,09,13, (detail data dari satelit)
3. $GPGSA,A,3,04,12,02,28,17,26,29,,,,,,4.9,1.8,4.6*32955.757,A,0745.6812,S
,11023.6915,E,18.05,31.22,1609 ( data satelit dan informasi satelit yang
aktif)
4. $GPRMC144222.750,A,0745.4962,S,11023.0020,E,8.72,191.43,160907,,*1
41,9.9, (data minimum dari GPS yang ditransmisikan)
82
Jenis data yang akan digunakan pada sistem adalah yang berjenis GGA karena
data GGA adalah fix data yang ditangkap oleh transmitter dan memiliki informasi
yang lebih banyak. Penjelasan dari String GGA adalah:
$GPGGA,142222,0745.6812,S,11023.0020,E,1,03,3.3,72.4,M,-34.0,M,,000*05
142222 = Waktu hhmmss(GMT+7) ; jadi waktu sesungguhnya adalah 21:22:22
0745.6812,S = 7’ 45” 6812”’; koordinat geografis (-(45/60))+7) = -7.76135 LS
11023.0020,E = 110’ 23” 0020’’’; koordinat geografis 110.3834 BT
1 = Menunjukkan validasi bahwa data sudah benar
03 = Jumlah satelit yang terdeteksi oleh transmitter
3.3 = Presisi posisi dalam meter
72.4,M = Altitude/ketinggian dari permukaan laut dalam meter
-34.0,M = Geoidal Separation dalam meter
000*05 = Satelit ID dan checksum character yang dikirimkan oleh GPS
Dari beberapa data string di atas hanya diambil tiga data string, yaitu waktu,
koordinat lintang selatan dan koordinat bujur timur. Data yang lain diabaikan.
Gambar 4.18 menunjukkan data koordinat yang dikirimkan ke dalam server.
Gambar 4.18 Contoh data yang diterima server
83
4.2.4.2 Transmitter
Transmitter mempunyai sumber data yaitu GPS, pengendali data berupa
mikrokontroler dan HP sebagai pengirim data ke server. Jika sinyal satelit sudah
diakuisisi oleh GPS, maka lampu GPS berkedip dan apabila GPS kehilangan sinyal,
maka lampu pada GPS tidak berkedip. Gambar 4.19 menunjukkan letak lampu GPS
dan Gambar 4.20 menunjukkan bentuk fisik transmitter.
Gambar 4.19 Lampu menunjukkan GPS mendapat sinyal atau tidak
Gambar 4.20 Bentuk fisik dari transmitter dan accu sebagai catu dayanya
84
Inbox pada HP harus dalam keadaan kosong supaya alat bekerja karena
pembacaan SMS dimulai dari urutan SMS yang berada di inbox atau mempunyai
indeks 1. SMS dengan tanggal terlama berada pada indeks terakhir.
4.2.4.3 Perbandingan dan Error Posisi
4.2.4.3.1 Data Waktu
Interval dari mikrokontroler untuk mengirimkan 1 titik posisi adalah selama 3
menit. Untuk melihat apakah mikrokontroler sudah mengirimkan data sesuai dengan
interval yang telah ditetapkan, dapat dilihat pada waktu diterimanya SMS pada HP
dalam database server. Tabel 4.1 menunjukkan titik dan waktu data posisi yang
diterima dalam database.
Tabel 4.1 Titik dan waktu pengiriman data yang diterima dalam server
No Waktu penerimaan SMS pada database
server
Posisi data pengujian
Interval waktu )( sebelumnyasekarang tt −
Error (detik)
Error (%)
1 14:23:30 Jl Pandean Sari 0 0 0
2 14:26:33 Perempatan Ring Road Kaliurang
3:03 3 0,0166
3 14:29:30 Perempatan Magister Manajemen Kaliurang
3:03 3 0,0166
4 14:32:28 Neutron Jl Kaliurang
3:02 2 0,0111
85
Tabel 4.1 (lanjutan)Titik dan waktu pengiriman data yang diterima dalam server
5 14:35:30 Gramedia Jl Solo 3:02 2 0,0111
6 14:38:23 SMU Bosa 3:03 3 0,0166
7 14:41:26 Brimob Baciro 3:03 3 0,0166
8 14:44:33 Perempatan Demangan
3:07 7 0,0388
9 14:47:37 Jl Gejayan sebelum traffic light
3:04 4 0,0222
10 14:50:36 Mirota Gejayan 3:01 1 0,0055
11 14:53:33 Perempatan Ring road Gejayan
3:03 3 0,0166
12 14:56:30 Jl Pandean Sari blok A
3.03 3 0,0166
Rata-rata error 0,0307
Toleransi error sebesar 10% dipilih dari total interval waktu yang diinginkan
yaitu tiap 3 menit. Tabel waktu menunjukkan bahwa terdapat data baru setiap interval
3 menit dalam database server. Error rata-rata sebesar 0,0307 % yang didapat dari
waktu pertama hingga waktu terakhir tidak melebihi nilai toleransi yang ditetapkan.
Dari tabel juga didapatkan bahwa nilai error dalam pentransmisian data bervariasi
dengan nilai error terendah yaitu 1 detik dan error tertinggi yaitu 7 detik.
4.2.4.3.2 Data Posisi
Untuk data posisi, pengujian dilakukan dengan cara mengamati dan mencatat
posisi sebelum data dikirim dengan melihat pada HP dan kemudian membandingkan
86
data yang telah diterima dalam database. Data posisi transmitter yang merupakan
data langsung GPS menggunakan koordinat dalam bentuk derajat perlu diubah
kedalam bentuk desimal.
Format derajat adalah DDMM.MMMM sehingga pengubahan menjadi bentuk
desimal dilakukan dengan rumus Latitude = DD + (MM.MMMM / 60) dan Longitude
= DDD + (MM.MMMM / 60). Tabel 4.2 menunjukkan pengubahan dari data posisi
berupa derajat ke bentuk desimal dengan nilai koordinat pada data transmitter adalah
yang bercetak tebal dan bergaris bawah.
Nilai koordinat dalam bentuk desimal yang didapatkan dibandingkan dengan
nilai koordinat yang berada dalam database sehingga bisa diketahui perbedaan yang
terjadi. Tabel 4.3 menunjukkan perbandingan koordinat transmitter dengan koordinat
pada database.
Tabel 4.2 Perbandingan koordinat antara transmitter dan database
No Transmitter (Latitude)
Transmitter (Longitude)
Database (Latitude)
Database (Longitude)
1 -7.7562133330 S 110.3923067000 E -7.7562133330 110.3923067000
2 -7.7537550000 S 110.3839717000 E -7.7537550000 110.3839717000
3 -7.7649150000 S 110.3789617000 E -7.7649150000 110.3789617000
4 -7.7763250000 S 110.3742667000 E -7.7763250000 110.3742667000
5 -7.7829150000 S 110.3735033000 E -7.7829150000 110.3735033000
6 -7.7871150000 S 110.3772617000 E -7.7871150000 110.3772617000
87
Tabel 4.2 (lanjutan) Perbandingan koordinat antara transmitter dan database
No Transmitter (Latitude)
Transmitter (Longitude)
Database (Latitude)
Database (Longitude)
7 -7.7908450000 S 110.3835900000 E -7.7908450000 110.3835900000
8 -7.7848466670 S 110.3881250000 E -7.7848466670 110.3881250000
9 -7.7787383330 S 110.3884417000 E -7.7787383330 110.3884417000
10 -7.7708133330 S 110.3900333000 E -7.7708133330 110.3900333000
11 -7.7595850000 S 110.3951333000 E -7.7595850000 110.3951333000
12 -7.7570300000 S 110.3923833000 E -7.7570300000 110.3923833000
Perbandingan koordinat menunjukkan bahwa data yang berada di transmitter
dengan data yang berada dalam database adalah sama. Tidak adanya perubahan data
dari transmitter ke dalam database menunjukkan bahwa, koordinat di dalam
database adalah sama dengan koordinat yang didapat oleh GPS. Pengolahan data
dari string menjadi ASCII saat masuk ke dalam mikrokontroler, dan kemudian
dilanjutkan dengan ASCII menjadi PDU untuk dikirimkan melalui SMS berhasil dan
tidak mengubah data koordinat.
Hasil pengolahan data posisi yang berupa visualisasi pada peta juga
dicocokkan dengan data di lapangan, berupa foto posisi diambilnya koordinat.
Gambar 4.21 menunjukkan rute dan masing-masing titik yang diberi nomor.
88
. Gambar 4.21 Hasil visualisasi titik pada peta
Untuk melihat kinerja dari GPS, dapat dibandingkan antara pengukuran
dengan menggunakan skala yang dilihat secara visual atau mengukur dengan
menggunakan latitude dan longitude yang ada. Pengukuran dengan menggunakan
latitude dan longitude dapat dilakukan dengan menggunakan rumus Haversine, yaitu
89
rumus untuk menghitung jarak 2 titik menggunakan nilai koordinat titik tersebut.
Rumus Haversine dapat dilihat pada Gambar 4.22 .
R = earth’s radius (mean radius = 6,371km)
Δlat = lat2− lat1
Δlong = long2− long1
a = sin²(Δlat/2) + cos(lat1).cos(lat2).sin²(Δlong/2)
c = 2.atan2(√a, √(1−a))
d (km) = R.c
Gambar 4.22 Rumus Haversine untuk menghitung jarak antara 2 titik
Dari perhitungan dengan menggunakan rumus Haversine didapatkan jarak
terdekat antara 2 titik koordinat. Rumus Haversine menggunakan asumsi permukaan
bumi rata dan mengabaikan ketinggian tanah antara 2 titik. Titik pertama
menggunakan GPS yang langsung disambungkan ke laptop dan titik kedua
menggunakan transmitter dan kedua titik berada pada posisi yang sama.
Perbandingan hasil perhitungan dengan menggunakan rumus dan melakukan
pengamatan secara langsung dapat dilihat pada tabel 4.6.
90
Tabel 4.3 Perbandingan dan error pada peta
No Laptop Transmitter Skala Skala
(Perbesaran) Error Visual (cm)
Error Posisi (meter)
Rumus Haversine (meter)
BT 110.3922300000 110.3923067000 1
LS -7.7562130000 -7.7562133330
1:37500 1:569 1,5 8,5 8,451
BT 110.3840800000 110.3839717000 2
LS -7.7537556670 -7.7537550000
1:7566 1:1341 0,1 1,34 1,193
BT 110.3789617000 110.3789617000 3
LS -7.7649151110 -7.7649150000
1:37000 1:569 - - 0,0123
BT 110.3743050000 110.3742667000 4
LS -7.7763050000 -7.7763250000
1:6666 1:3732 0,15 5,6 4,77
BT 110.3731650000 110.3735033000 5
LS -7.7829333330 -7.7829150000
1:37000 1:400 - - 0,0373
BT 110.3772200000 110.3772617000 6
LS -7.7871483330 -7.7871150000
1:17777 1:2311 0,3 6,93 5,903
BT 110.3831383000 110.3835900000 7
LS -7.7907416670 -7.7908450000
1:21000 1:439 - - 0,0517
BT 110.3881267000 110.38812500008
LS -7.7847356770 -7.7848466670
1:11428 1:1959 0,5 9,7 12,34
BT 110.3884450000 110.3884417000 9
LS -7.7787788000 -7.7787383330
1:12300 1:1400 0,3 4,21 4,514
91
Tabel 4.3 (lanjutan) Perbandingan dan error pada peta
No Laptop Transmitter Skala Skala (perbesaran
Error Visual
Error posisi (meter)
Rumus Haversine (meter)
BT 110.3899969000
110.3900333000 10
LS -7.7708350000 -7.7708133330
1:23000 1:3195 0,2 6,4 4,678
BT 110.3952100000 110.3951333000 11
LS -7.7595456670 -7.7595850000
1:6666 1:1111 0,4 4,44 9,515
BT 110.3923633000 110.3923833000 12
LS -7.7571250000 -7.7570300000
1:5555 1:1481 0,7 10,3 10,79
Rata-rata error dalam meter 4,785 4,974
Dari hasil tabel diatas didapatkan nilai rata-rata error dalam meter untuk
perhitungan kinerja GPS. Error menggunakan hasil pengamatan sebesar 4,785 meter
dan melalui perhitungan rumus Haversine didapat error 4,974 meter. Selisih error
untuk hasil pengamatan dan perhitungan sebesar 0,189 meter didapat karena
pengukuran dengan menggunakan hasil pengamatan dilakukan dengan cara
mengukur jarak dengan menggunakan skala perbesaran dari program. Untuk kinerja
GPS dalam hal akurasi masih masuk dalam toleransi pada datasheet GPS yaitu 15
meter.
BAB V
PENUTUP
5.1 Kesimpulan
Berdasarkan hasil yang telah didapat dalam perancangan dan pengujian, maka
diperoleh beberapa kesimpulan sebagai berikut :
1. Aplikasi Pelacak Objek telah berhasil dibuat dengan baik.
2. Aplikasi ini akan bekerja dengan baik dengan toleransi jarak posisi yang
disesuaikan dengan modul GPS yang ada pada transmitter yaitu 15 meter.
3. Interval pengiriman data melalui SMS juga didapatkan setiap 3 menit
pengiriman.
4. Visualisasi objek juga berhasil menampilkan titik dengan berdasarkan
waktu dan berhasil membuat jalur pergerakan dari objek.
5. Koordinat transmitter dengan koordinat dalam database sama dan tidak
ada error dalam pengubahan data.
6. Akurasi GPS sesuai dengan toleransi pada datasheet yaitu kurang dari 15
meter.
5.2 Saran
1. Pengujian masih dilakukan dengan cara manual sehingga tidak bisa
diketahui error posisi secara tepat sehingga untuk hasil yang jauh
93
lebih akurat disarankan untuk menggunakan 2 buah GPS secara
bersamaan.
2. Penggunaan GPS dengan kualitas dan presisi koordinat yang lebih
tinggi juga dapat meningkatkan kemampuan aplikasi dalam
menentukan posisi objek.
3. Interval yang lebih cepat juga dapat digunakan agar visualisasi objek
lebih dapat diperhalus dan pergerakan objek juga lebih rinci
Daftar Pustaka
1. TRen Digital, edisi Jumat 4 mei 2007
2. Istyanto, Jazi Eko, Rancangan dan Implementasi Prototipe Sistem Kendali
Jarak Jauh Berbasis AT89C52 Dan Layanan SMS GSM. Jurnal Ilmu Dasar
vol.5, 2004.
3. Siemens AT Command Set, 2003.
4. www.wikipedia.com
5. El-Rabbany, Ahmed. Introduction to GPS: Global Positioning System.
Boston: Artech House, 2002.
6. Mcnamara, Joel. GPS for Dummies. Indianapolis:Wiley Publishing, 2004.
7. www.NAVIGASI.net
8. Visual Basic .Net help
9. Http//www.USGS.com
10. Budiyanto, Eko. Sistem Informasi Geografis menggunakan MapInfo.
Yogyakarta:CV. Andi Ofset, 2004.
11. Anam, Syaiful. Menggunakan ArcInfo untuk proyeksi peta.
Bandung:Penerbit Informatika, 2005.
12. Prahasta, Eddy. Sistem Informasi Geografis. Bandung:Informatika, 2005
13. Wardhana, Lingga. Belajar Sendiri Mikrokontroler seri ATMega 8535,
Simulasi, Hardware dan Aplikasi. Yogyakarta:CV. Andi Ofset, 2006.
14. GIS Yogyakarta , Http://PetaEndonesia.blogspot.com
DATA PENGUJIAN GPS ( LANGSUNG)
1.$GPGGA,100002.720,0745.3654,S,11023.4858,E,1,08,1.0,191.3,M,4. (Jl Pandean Sari)
2.$GPGGA,100334.710,0745.2248,S,11023.0448,E,1,05,1.8,2 (Perempatan Ring road Jakal)
3.$GPGGA,100814.697,0745.8213,S,11022.7691,E,1,09,1.0,176.0,M, ( Perempatan MM)
4.$GPGGA,101729.670,0746.5783,S,11022.4583,E,1,09,1.0, (seven resto)
5.$GPGGA,101945.663,0746.9760,S,11022.3899,E,1,07,1.0, (Jalan Solo)
6.$GPGGA,102248.655,0747.2289,S,11022.5852,E,1,10,0.9,150. (SMU BoSa)
7.$GPGGA,102601.645,0747.4445,S,11022.9883,E,1,10,0.9,1 (Jalan Baciro)
8.$GPGGA,102914.636,0747.1241,S,11023.2717,E,1,11,0.8,15 (Sebelum traffic light pasar demangan)
9.$GPGGA,103241.626,0746.7514,S,11023.3013,E,1,10,0.9,164.4 ( Pertigaan Jl Kolombo)
10.$GPGGA,103612.616,0746.2627,S,11023.3968,E,1,10,0.9,1 (Mirota Gejayan)
11.$GPGGA,103844.609,0745.6508,S,11023.6646,E,1,10,0.9,185 (SPBU Gejayan)
12.$GPGGA,104223.598,0745.3675,S,11023.4902,E,1,08,1.0, (jalan Pandean Sari)
Data Transmitter
No Data pada transmitter (derajat) Data pada transmitter (desimal)1 072326.478,0745.3728,S,11023.5384,E,1,04,5.5,191.4,M,4.4,M,00
00*5-7.7562133330 S 110.3923067000 E
2 072628.469,0745.2253,S,11023.0383,E,1,05,4.3,191.1,M,4.4,M,0000*5
-7.7537550000 S 110.3839717000 E
3 072926.460,0745.8949,S,11022.7377,E,1,06,1.7,170.2,M,4.4,M,0000*5
-7.7649150000 S 110.3789617000 E
4 073223.452,0746.5795,S,11022.4560,E,1,06,1.7,154.5,M,4.4,M,0000*5
-7.7763250000 S 110.3742667000 E
5 073521.443,0746.9749,S,11022.4102,E,1,04,4.0,159.9,M,4.4,M,0000*5
-7.7829150000 S 110.3735033000 E
6 073819.435,0747.2269,S,11022.6357,E,1,05,2.0,145.6,M,4.4,M,0000*5
-7.7871150000 S 110.3772617000 E
7 074116.423,0747.4507,S,11023.0154 , E,1,04,4.0,137.9,M,4.4,M,0000*5
-7.7908450000 S 110.3835900000 E
8 074428.418,0747.0908 , S,11023.2875,E,1,05,2.4,148.7,M,4.4,M,0000*5
-7.7848466670 S 110.3881250000 E
9 074726.409,0746.7243,S,11023.3065,E,1,05,2.3,154.9,M,4.4,M,0000*5
-7.7787383330 S 110.3884417000 E
10 075023.401,0746.2488,S,11023.4020,E,1,06,1.7,165.8,M,4.4,M,0000*5
-7.7708133330 S 110.3900333000 E
11 075320.393,0745.5751,S,11023.7080,E,1,07,1.3,182.7,M,4.4,M,0000*5
-7.7595850000 S 110.3951333000 E
12 075618.384,0745.4218,S,11023.5430,E,1,06,1.6,183.4,M,4.4,M,0000*5
-7.7570300000 S 110.3923833000 E
LOKASI PENGAMBILAN TITIK
1. Jalan Pandean Sari
2. Jalan Kaliurang km.6
3. Jalan Kaliurang km.4,5
4. Seven Resto (Mirota Kampus) Jalan Kaliurang
5. Jalan Solo (sebelum Gramedia)
6. SMU Bosa
7. Jalan Baciro (sebelum brimob)
8. Sebelum perempatan traffic light antara pasar demangan dan Jalan Solo
9. Pertigaan di Jalan Kolombo
10. Toko Vikita ( Sebelum Mirota Gejayan)
11. SPBU Jalan Gejayan (sebelum Ring Road)
.nolist
.include"m8515def.inc"
.def status = r1
.def hitung_timer = r2
.def hitung_char = r23
.def simpans = r16
.def txbyte = r17
.def rxbyte = r18
.def hitung = r20
.equ fclock = 4000000
.equ baud_rate = 4800
.equ ubbr_value = (fclock / (16*baud_rate)) - 1
.equ timer_setengah = 0xF85E
.equ nilai_timer5 = 0xB3B3
.equ nilai_timer2 = 0xE17B
.equ nilai_timer16 = 0x0000
.equ jalur_HP = (1<<2)|(0<<3)
.equ jalur_GPS = (1<<2)|(1<<3)
.list
.cseg
.org 0rjmp main;reti;reti;reti;reti;reti.org 0x06rjmp timer1_int;reti;reti.org 0x09 rjmp usart_rx_int
;;*********************************** SMS COMMAND ************************;cmd_at: .db "AT",13,0cmd_ate: .db "ATE0",13,0cmd_mem: .db "AT+CPMS=ME,ME,ME",13,0cmd_smssend: .db "AT+CMGS=79",13,0cmd_smsread: .db "AT+CMGR=1",13,10,0cmd_smsdel: .db "AT+CMGD=1",13,10,0cmd_sign : .db "AT+CNMI=1,1,0,0,1",13,10,0;sms indicator +CMTI: <mem>,<index>cmd_tes : .db "ATD123",59,13,10,0
sms_aktif : .db "CBB43CDD06",0 ; "Kirim"
; *************************** **** Text2PDU ******************************
heksa: .db "0123456789abcdef",0;;********************************** Main Program ************************;* Inisialisasi untuk I/O dan penggunaan port untuk pengendali;* IO yang dipakai: port E sbg out led indicator , PortD.2& PortD.3 sbg out;* pengendali MUX. Inisialiasi HP berupa test perintah AT, setting memori sms;* HP (+CPMS),+CNMI(opt);* Setelah melalui inisialisasi maka uC akan masuk dalam kondisi idle dan hanya akan ;* diaktifkan melalui interupt RXC
main:
;;******************************** Inisialisasi USART ********************;init_usart:ldi simpans,high(ubbr_value)out UBRRH, simpansldi simpans,low(ubbr_value)out UBRRL, simpansldi simpans, (1<<RXEN)|(1<<TXEN)|(1<<RXCIE); mengaktifkan transmitter,receiver dan interupt pada RXCout UCSRB,simpans
;;********************************** inisialisasi IO ***********************; Inisialisasi IO (PortD)s setelah inisialisasi USART,ldi simpans,0xFFout DdrE,simpansldi simpans,0out PortE,simpans ;sebagai output, nyalakan LED
ser simpansout DdrD,simpansldi simpans, jalur_HP ;line dr HP aktif out PortD,simpansrcall delay_2dtk
ser simpansout PortE,simpans
perintah_at :ldi ZH,high(cmd_at*2)ldi ZL,low(cmd_at*2)rcall kirim_data_serialrcall tunggu_OKcbi PortE,0;(1) ;nyalakan indikator led setelah sukses mengirim perintah;rcall delay_2dtk
perintah_ate :ldi ZH,high(cmd_ate*2)ldi ZL,low(cmd_ate*2)rcall kirim_data_serialrcall tunggu_OKldi simpans,(1<<2)|(1<<0);(2);nyalakan indikator ledout PortE,simpans ;setelah sukses mengirim perintah;rcall delay_2dtk
perintah_cpms :ldi ZH,high(cmd_mem*2)ldi ZL,low(cmd_mem*2)rcall kirim_data_serialrcall tunggu_OKcbi PortE,0 ;(3);rcall delay_2dtk
;indicator smsperintah_cnmi:ldi ZH,high(cmd_sign*2)ldi ZL,low(cmd_sign*2)rcall kirim_data_serialrcall tunggu_OKldi simpans,(1<<0)|(1<<1)|(0<<2);(4);nyalakan indikator ledout PortE,simpansnop ;setelah sukses mengirim perintahrcall delay_2dtk
;tes_koneksi:;ldi ZH,high(cmd_tes*2);ldi ZL,low(cmd_tes*2);rcall kirim_data_serial;rcall tunggu_OK;ldi simpans,(0<<0)|(1<<1)|(0<<2);(5);nyalakan indikator led;out PortE,simpans ;setelah sukses mengirim perintah;rcall delay_2dtk
tidur:;rcall delay_2dtk ;2 detik untuk persiapan!nopser simpansout PortE,simpansldi simpans,(1<<SE) ;Sleep enable, idle modeout MCUCR,simpansseisleep ;interupsi yg aktif lsg : RXC
;interupsi timer1 akan aktif setelah diset;yaitu setelah pengiriman paket pertama
mulai_dari_sini :; ini looping utama program, selama dalam proses akusisi & pengiriman data, tidak ; boleh ada interupsiclicbi porte,1 ;nyalakan indikatorsbi porte,0;aktifkan dulu saluran gpsldi simpans, jalur_GPS ;line dr gps aktif out PortD,simpans
;inc xl
cari1:ldi hitung_char,0ldi xl,low(0x0060)ldi xh,high(0x0060)rcall usart_rxcpi rxbyte,'G'brne cari1st x,rxbyteinc hitung_charinc xlcari2:rcall usart_rxcpi rxbyte,'G'brne cari1st x,rxbyteinc hitung_charinc xlcari3:rcall usart_rxcpi rxbyte,'A'brne cari1st x,rxbyteinc hitung_char
;****** ***** ** Header data GPS sudah ketemu, mulai simpan streaming datasimpan:rcall usart_rxcpi hitung_char,73 ; penyimpanan berhenti setelah menemukan char header data GPS kedua (GGA), yaitu Gbreq keluarsimpanst x,rxbyteinc hitung_charinc xlrjmp simpan
keluarsimpan:;muxmati:push hitung_charsubi hitung_char,8mov r1,hitung_charpop hitung_char
cbi porte,0sbi porte,1clr rxbyteclr txbyte
ldi simpans,jalur_HPout PortD,simpans
;; **** Kirim data melalui sms **** ; = Kirim AT+CMGS=
perintah_smssend :ldi ZH,high(cmd_smssend*2)ldi ZL,low(cmd_smssend*2)
rcall kirim_data_serialrcall tunggu_3Eperintah_smsheader:ldi ZH,high(sms_header_kirim*2)ldi ZL,low(sms_header_kirim*2)rcall kirim_data_serialldi txbyte,'4'rcall usart_txldi txbyte,'9'rcall usart_tx
;KIRIM PESAN;========================================kirimpesan:ldi xl,low(0x0060)ldi xh,high(0x0060)mov r10,xlmov r11,xh
count:ldi r20,0 ;r20 sbg penghitung gesermov xl,r10ld r16,x
;lpm ;ambil karakter pertama;mov r16,r0
load:mov r22,r20inc r22
inc r10mov xl,r10ld r17,x;lpm ;ambil karakter kedua;mov r17,r0mov r18,r17 ;karakter kedua diselamatkan;----------------------geserkanan:dec r22cpi r22,0breq olahlsr r16rjmp geserkanan
;*****************************************************************************;PENGOLAHAN CONVERTING
olah:ldi r19,7 ;konstantasub r19,r20 ;8-r20;--------------------geserkiri:dec r19lsl r17cpi r19,0
brne geserkiri;---------------------or r16,r17 ;hasil PDUmov r15,r16
; CONVERT TO ASCII;==============================Hex2ascii:ldi zl,low(2*heksa)ldi zh,high(2*heksa)mov r26,r16 ;pindah data heksa di r16 ke r26mov r27,r16andi r27,0b00001111andi r26,0b11110000swap r26 ;swap data pada r26 agar 4 bit juga data r16 4 bit
naik:cpi r26,0breq tabelhexinc zldec r26rjmp naik
tabelhex:lpmmov txbyte,r0rcall usart_tx ;kirimkanldi zl,low(2*heksa)ldi zh,high(2*heksa)
naik2:cpi r27,0breq tabelhex2inc zldec r27rjmp naik2
tabelhex2:lpmmov txbyte,r0rcall usart_tx ;kirimkan;-----------------------------------------
mov r16,r18 ;karakter kedua jadi karakter pertamadec r1;cp r18,0 ;dah sampai nol?breq kirim1A ;kalo udah selesaicpi r20,6breq count1inc r20rjmp load
count1:inc r10rjmp count;================================
; KIRIM Ctrl Z;=================================kirim1A:ldi txbyte,26rcall usart_txldi simpans,0 ;nolkan hitung timermov hitung_timer,simpansrcall delay_16dtk ;atur wakturjmp tidur
;rjmp mulai_dari_siniperintah_smsdel :ldi ZH,high(cmd_smsdel*2)ldi ZL,low(cmd_smsdel*2)rcall kirim_data_serialrcall tunggu_OKret;perintah_smsread :ldi ZH,high(cmd_smsread*2)ldi ZL,low(cmd_smsread*2)rcall kirim_data_serialret
;*************** tunggu respon dari HP ***********************; ============== ==respon dr perintah AT,ATE0,AT+CPMS,AT+CNMI tunggu_OK:CLR RXBYTErcall usart_rxcpi rxbyte,'O'brne tunggu_OKrcall usart_rxcpi rxbyte,'K'brne tunggu_OKret
;==================== respon dr perintah AT+CMGS ========tunggu_3E:CLR RXBYTErcall usart_rxcpi rxbyte,'>'brne tunggu_3Eret
kirim_data_serial:lpmmov txbyte,r0cpi txbyte,0breq kembalircall usart_txinc zlrjmp kirim_data_serial
kembali:nop
ret
timer1_int:cbi porte,2cbi porte,0ldi simpans, (1<<TOV1) ;Timer 1 overflow flag dinolkan dengan memberikan logika 1out TIFR,simpansinc hitung_timer ;hitung sampai 10ldi simpans,10 ;10 x 16,7 detik =167 detik =2 mnt 47 dtkcpse hitung_timer,simpansrjmp tidurrjmp mulai_dari_sini ;saatnya kirim lagi
; *****************************************************************************; interupsi serial; *********************************************************************jembatan_tidur :rcall delay_setengahrjmp tidur
usart_rx_int:cbi PortE,2 ;tanda lampu nyalaclr simpansout mcucr,simpanscli
;=========================================; Tunggu respon hp= +CMTI: "ME",1 (enter);=========================================;ldi simpans,20tunggu_plus:rcall usart_rxcpi rxbyte,$2B ;apa ada respon?brne jembatan_tidur
;tunggu_index:;rcall usart_rx;dec simpans;cpi simpans,0;breq jembatan_tidur;cpi rxbyte,$31 ;apa ada respon?;brne tunggu_indexsbi PortE,2 ;tanda lampu kediprcall perintah_smsread ;Baca sms inbox
;=========================================;=========================================tunggu_stat:rcall usart_rxcpi rxbyte,$30brne tunggu_stat
tunggu_nol:rcall usart_rxcpi rxbyte,$30brne tunggu_nolcbi PortE,2 ;tanda lampu kedappesanterima:
ldi zl,low(2*sms_header_terima)ldi zh,high(2*sms_header_terima)
loadperintah:lpmmov r29,r0cpi r29,0 ;apakah akhir dari header_terima?breq skip_waktu ;jika sudah lompat ke skip waktu rcall usart_rxcp rxbyte,r0 ;cocokan no hp userbrne pintu_keluar1inc zlrjmp loadperintah
skip_waktu:sbi PortE,2 ;tanda lampu kedipldi simpans,15 ;
loop_skip:rcall usart_rxcpi simpans,0breq baca_perintahdec simpansldi r25,0xFFin r3,pineeor r3,r25out porte,r3rjmp loop_skip
baca_perintah:ldi zl,low(2*sms_aktif)ldi zh,high(2*sms_aktif)
perintah_aktif:lpmmov r29,r0cpi r29,0breq persiapanrcall usart_rxcp rxbyte,r0 ;cocokan karakter SMSbrne perintah_berhenti;jika tidak cocok bukan perintah aktifinc zlrjmp perintah_aktif
perintah_berhenti_mulai:ldi zl,low(2*sms_berhenti)ldi zh,high(2*sms_berhenti)
perintah_awal: ;awal perintah2 untuk menghindari pengambilan karakter rx 2 kalilpminc zlcp rxbyte,r0breq perintah_berhentirjmp pintu_keluar
perintah_berhenti:lpm
mov r29,r0cpi r29,0 ;apakah pembanding sudah nolbreq pintu_keluar ;perintah benarrcall usart_rxcp rxbyte,r0brne bukan_perintahinc zlrjmp perintah_berhenti
cbi PortE,2persiapan:ldi simpans,1 ;beri tanda aktivitas, 1=aktif 0=pasifmov status,simpansrcall perintah_smsdel ;hapus smsrjmp mulai_dari_sini ;
bukan_perintah :tst status ;cek aktivitas sebelumnyabreq pintu_keluar ;ternyatapasif, keluarrjmp persiapan ;aktif, teruskan saja
rcall perintah_smsdel ;hapus sms dan kembali tidur sajarjmp tidur
;;*********************************************************************************;* SUBRUTIN YANG SERING DIPAKAI;*****************************************************************************
; usart transmit data;***********************************************************usart_tx:sbis UCSRA,UDRE ; Wait for empty transmit bufferrjmp usart_txout UDR,txbyte ; Put data into buffer, sends the dataret
;***********************************************************; usart receive data;***********************************************************usart_rx:sbis UCSRA, RXC ; Wait for data to be receivedrjmp usart_rxin rxbyte, UDR ; Get and return received data from bufferret;============================================================;subrutin delay 5dtk;-----------------------delay_5dtk:ldi simpans, (1<<TOIE1) ; aktifkan enable intrupt timer1out TIMSK, simpansldi simpans, high(nilai_timer5) ;masukkan nilai timerout TCNT1H, simpansldi simpans, low(nilai_timer5)out TCNT1L, simpansldi simpans, (1<<CS12)|(1<<CS10) ; masukkan prescaler untuk timer, disini 1024out TCCR1B, simpans
looptimer5:in r17,TIFRsbrs r17,TOV1 ;tunggu sampai timer1 overflow flag setrjmp looptimer5ldi simpans, (1<<TOV1) ;Timer 1 overflow flag dinolkan dengan memberikan logika 1out TIFR,simpansret
;;******************************** delay 2 detik ******************************delay_2dtk:ldi simpans, (1<<TOIE1) ; aktifkan enable intruptout TIMSK, simpansldi simpans, high(nilai_timer2) ;masukkan nilai timerout TCNT1H, simpansldi simpans, low(nilai_timer2)out TCNT1L, simpansldi simpans, (1<<CS12)|(1<<CS10) ; masukkan prescaler untuk timer disini 1024out TCCR1B, simpans
looptimer2:in r17,TIFRsbrs r17,TOV1 ;tunggu sampai timer1 overflow flag setrjmp looptimer2ldi simpans, (1<<TOV1) ;Timer 1 overflow flag dinolkan dengan memberikan logika 1out TIFR,simpansret
delay_setengah:ldi simpans, (1<<TOIE1) ; aktifkan enable intruptout TIMSK, simpansldi simpans, high(timer_setengah) ;masukkan nilai timerout TCNT1H, simpansldi simpans, low(timer_setengah)out TCNT1L, simpansldi simpans, (1<<CS12)|(1<<CS10) ; masukkan prescaler untuk timer disini 1024out TCCR1B, simpans
looptimer1_2:in r17,TIFRsbrs r17,TOV1 ;tunggu sampai timer1 overflow flag setrjmp looptimer1_2ldi simpans, (1<<TOV1) ;Timer 1 overflow flag dinolkan dengan memberikan logika 1out TIFR,simpansret
LISTING PROGRAM (VB .NET) SERVER‘FORM MAIN
Imports System.Windows.Forms
Public Class FormMain ' Public SQLServer As New KoneksiSQLServer Private Judul As String = "... GIS ... GIS ... GIS ... GIS ... GIS ... GIS ... GIS ... GIS " Private Sub ShowNewForm(ByVal sender As Object, ByVal e As EventArgs) Handles NewToolStripButton.Click ' Create a new instance of the child form. Dim ChildForm As New System.Windows.Forms.Form ' Make it a child of this MDI form before showing it. ChildForm.MdiParent = Me
m_ChildFormNumber += 1 ChildForm.Text = "Window " & m_ChildFormNumber
ChildForm.Show() End Sub
Private Sub OpenFile(ByVal sender As Object, ByVal e As EventArgs) Handles OpenToolStripButton.Click Dim OpenFileDialog As New OpenFileDialog OpenFileDialog.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments OpenFileDialog.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*" If (OpenFileDialog.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK) Then Dim FileName As String = OpenFileDialog.FileName ' TODO: Add code here to open the file. End If End Sub
Private Sub SaveAsToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Dim SaveFileDialog As New SaveFileDialog SaveFileDialog.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments SaveFileDialog.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*"
If (SaveFileDialog.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK) Then Dim FileName As String = SaveFileDialog.FileName ' TODO: Add code here to save the current contents of the form to a file. End If End Sub
Private Sub ExitToolsStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Global.System.Windows.Forms.Application.Exit() End Sub
Private Sub CutToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) ' Use My.Computer.Clipboard to insert the selected text or images into the clipboard End Sub
Private Sub CopyToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) ' Use My.Computer.Clipboard to insert the selected text or images into the clipboard End Sub
Private Sub PasteToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) 'Use My.Computer.Clipboard.GetText() or My.Computer.Clipboard.GetData to retrieve information from the clipboard. End Sub Private Sub CascadeToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Me.LayoutMdi(MdiLayout.Cascade) End Sub
Private Sub TileVerticleToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Me.LayoutMdi(MdiLayout.TileVertical) End Sub
Private Sub TileHorizontalToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Me.LayoutMdi(MdiLayout.TileHorizontal) End Sub
Private Sub ArrangeIconsToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Me.LayoutMdi(MdiLayout.ArrangeIcons) End Sub
Private Sub CloseAllToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) For Each ChildForm As Form In Me.MdiChildren ChildForm.Close() Next End Sub
Private m_ChildFormNumber As Integer = 0
Private Sub FormMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If SQLServer.Connected Then With FormLogin .ShowDialog() End With Else MsgBox("Gagal") Application.Exit() End If End Sub
Private Sub tJudul_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tJudul.Tick Dim panjang, i As Integer Dim TempJudul As String = "" tJudul.Enabled = False panjang = (Judul).Length For i = 0 To panjang - 1
If i = (panjang - 1) Then TempJudul &= Judul(0).ToString Else TempJudul &= Judul(i + 1).ToString End If Next Judul = TempJudul Me.Text = TempJudul tJudul.Enabled = True End Sub
Private Sub AnggotaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AnggotaToolStripMenuItem.Click With FormAnggota .MdiParent = Me .BringToFront() .WindowState = FormWindowState.Maximized .Show() End With
End Sub
Private Sub PenggunaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PenggunaToolStripMenuItem.Click With FormManajemenUser
.MdiParent = Me .BringToFront() .WindowState = FormWindowState.Maximized .Show() End With
End Sub
Private Sub PetaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PetaToolStripMenuItem.Click With FormGIS .MdiParent = Me .BringToFront() .WindowState = FormWindowState.Maximized .Show() End With
End Sub
Private Sub OptionsToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OptionsToolStripMenuItem.Click With FormSetting .MdiParent = Me .BringToFront() .WindowState = FormWindowState.Normal .Show() End With
End SubEnd Class
‘Form Login=====================================================================================public Class FormLoginPrivate Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click Pengguna.UserID = txtUserName.Text If Pengguna.DataField.userID = "" Then MsgBox("Nama User belum terdaftar") ElseIf Pengguna.DataField.password = txtPassword.Text Then Me.Hide() Else MsgBox("Maaf Anda Gagal Login") End If End Sub
‘Form GIS========================================================================================Imports MapObjects2Imports System.IOImports System.DataImports System.Data.Odbc
Public Class FormGIS Dim dc As New DataConnection Dim ileft, itop, ibottom, iright, dragx, dragy As Integer Dim dsLayer As DataSet 'Dim btn() As Button Dim pLyr() As Panel Dim cLyr() As CheckBox Dim lLbl() As Label Dim pShp() As Panel Dim lLyr() As Label Dim slctdIxLyr As Integer Dim treeLayer As String Public toNoRuas As String Public kabKota As String Public vLbl As Boolean Public sLbl As String Dim drawShp As Object
Dim newPoint As New System.Drawing.Point()
Dim xx As Integer Dim yy As Integer Dim Kotak As New Rectangle Dim Poligon As New Polygon Dim Simbol As New Symbol Dim KumpulanTitik As New Points Dim GarisPerjalanan As New Line Dim Titik As New Point
Private Sub tPan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tPan.Click tPan.Checked = True tZIn.Checked = False tZOut.Checked = False tInfo.Checked = False tKota.Checked = False mMAP.MousePointer = MousePointerConstants.moPan End Sub
Private Sub tZIn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tZIn.Click tPan.Checked = False tZIn.Checked = True tZOut.Checked = False tInfo.Checked = False tKota.Checked = False mMAP.MousePointer = MousePointerConstants.moZoomIn
End Sub
Private Sub tZOut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tZOut.Click tPan.Checked = False tZIn.Checked = False tZOut.Checked = True tInfo.Checked = False tKota.Checked = False mMAP.MousePointer = MousePointerConstants.moZoomOut
End Sub
Private Sub tFull_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tFull.Click mMAP.Extent = mMAP.FullExtent End Sub
Private Sub tInfo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tInfo.Click tPan.Checked = False tZIn.Checked = False tZOut.Checked = False tInfo.Checked = True tKota.Checked = False mMAP.MousePointer = MousePointerConstants.moIdentify
End Sub
Private Sub mMAP_AfterLayerDraw(ByVal sender As System.Object, ByVal e As AxMapObjects2._DMapEvents_AfterLayerDrawEvent) Handles mMAP.AfterLayerDraw If e.index = 0 Then ' Gambar layer pertama dan kemudian refresh lokasi sMap.TrackingLayer.Refresh(True) End If
End SubPrivate Sub mMAP_AfterTrackingLayerDraw(ByVal sender As System.Object, ByVal e As AxMapObjects2._DMapEvents_AfterTrackingLayerDrawEvent) Handles mMAP.AfterTrackingLayerDraw If Not drawShp Is Nothing Then Dim sym As New MapObjects2.Symbol sym.OutlineColor = ColorConstants.moBlack sym.SymbolType = SymbolTypeConstants.moFillSymbol
sym.Color = ColorConstants.moYellow sym.Style = FillStyleConstants.moSolidFill ' moDiagonalCrossFill ' moSolidFill ' moTransparentFill 'sMap.DrawShape(mMap.Extent, sym) mMAP.DrawShape(drawShp, sym) drawShp = Nothing
End If
End SubPrivate Sub mMAP_MouseUpEvent(ByVal sender As System.Object, ByVal e As AxMapObjects2._DMapEvents_MouseUpEvent) Handles mMAP.MouseUpEvent Dim m_xMin, m_yMin, m_xMax, m_yMax As Integer MapRectToPixels(sMap, mMAP.Extent, m_xMin, m_yMin, m_xMax, m_yMax)
lTop.Left = 0 'm_xMin End Sub
Private Sub MapRectToPixels(ByVal m_map As MapObjects2.Map, ByVal r As MapObjects2.Rectangle, ByVal xMin As Integer, ByVal yMin As Integer, ByVal xMax As Integer, ByVal yMax As Integer) MsgBox(xMin.ToString) Dim p As New Point Dim xc As Single, yc As Single
p.X = r.Left p.Y = r.Top m_map.FromMapPoint(p, xc, yc)
' convert to pixels xMin = m_map.Parent.ScaleX(xc, 1, 3) yMin = m_map.Parent.ScaleY(yc, 1, 3)
p.X = r.Right p.Y = r.Bottom m_map.FromMapPoint(p, xc, yc)
' convert to pixels xMax = m_map.Parent.ScaleX(xc, 1, 3) yMax = m_map.Parent.ScaleY(yc, 1, 3) End Sub
Sub PixelsRectToMap(ByVal m_map As MapObjects2.Map, ByVal xMin As Integer, ByVal yMin As Integer, ByVal xMax As Integer, ByVal yMax As Integer, ByVal r As MapObjects2.Rectangle) Dim xc As Single, yc As Single Dim p
' convert to twips xc = m_map.Parent.ScaleX(xMin, 1, 3) yc = m_map.Parent.ScaleY(yMin, 1, 3)
p = m_map.ToMapPoint(xc, yc) r.Left = p.x r.Top = p.y
' convert to twips xc = m_map.Parent.ScaleX(xMax, 1, 3) yc = m_map.Parent.ScaleY(yMax, 1, 3) p = m_map.ToMapPoint(xc, yc) r.Right = p.x r.Bottom = p.y End Sub
Private Sub bDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bDel.Click Dim i As Integer dsLayer.Tables("layer").Rows.RemoveAt(slctdIxLyr) dsLayer.WriteXml(Path.GetDirectoryName(Application.ExecutablePath) & "\layer.xml") mMAP.Layers.Remove(slctdIxLyr) mMAP.Refresh() For i = slctdIxLyr To (pLyr.Length - 2)
moveNav(i + 1, i) Next
pLyr(i).Controls.Remove(cLyr(cLyr.Length - 1)) pLyr(i).Controls.Remove(lLbl(lLbl.Length - 1)) pLyr(i).Controls.Remove(pShp(pShp.Length - 1)) pLyr(i).Controls.Remove(lLyr(lLyr.Length - 1)) pCtnrLyr.Controls.Remove(pLyr(pLyr.Length - 1)) cLyr(cLyr.Length - 1).Dispose() lLbl(lLbl.Length - 1).Dispose() pShp(pShp.Length - 1).Dispose() lLyr(lLyr.Length - 1).Dispose() pLyr(pLyr.Length - 1).Dispose()
ReDim Preserve pLyr(pLyr.Length - 2) ReDim Preserve cLyr(cLyr.Length - 2) ReDim Preserve lLbl(lLbl.Length - 2) ReDim Preserve pShp(pShp.Length - 2) ReDim Preserve lLyr(lLyr.Length - 2)
If slctdIxLyr > 0 Then slctdIxLyr = slctdIxLyr - 1
pLyr(slctdIxLyr).BackColor = Color.Gold
End Sub
Private Sub moveNav(ByVal IxFrom As Integer, ByVal IxTo As Integer) Dim tPnlColor As Color Dim tChkLayer As Boolean Dim tLblBack As Color Dim tLblFore As Color Dim tLyrColor As Color Dim tLyrText As String tPnlColor = pLyr(IxTo).BackColor tChkLayer = cLyr(IxTo).Checked tLblBack = lLbl(IxTo).BackColor tLblFore = lLbl(IxTo).ForeColor tLyrColor = pShp(IxTo).BackColor tLyrText = lLyr(IxTo).Text pLyr(IxTo).BackColor = pLyr(IxFrom).BackColor cLyr(IxTo).Checked = cLyr(IxFrom).Checked lLbl(IxTo).BackColor = lLbl(IxFrom).BackColor lLbl(IxTo).ForeColor = lLbl(IxFrom).ForeColor pShp(IxTo).BackColor = pShp(IxFrom).BackColor lLyr(IxTo).Text = lLyr(IxFrom).Text pLyr(IxFrom).BackColor = tPnlColor cLyr(IxFrom).Checked = tChkLayer lLbl(IxFrom).BackColor = tLblBack lLbl(IxFrom).ForeColor = tLblFore pShp(IxFrom).BackColor = tLyrColor lLyr(IxFrom).Text = tLyrText End Sub Private Sub pShp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 'MsgBox(sender.tag) If (opColor.ShowDialog = Windows.Forms.DialogResult.OK) Then pShp(CInt(sender.tag)).BackColor = opColor.Color mMap.Layers.Item(CInt(sender.tag)).Symbol.Color = System.Drawing.ColorTranslator.ToWin32(opColor.Color) mMap.Refresh() dsLayer.Tables("layer").Rows(CInt(sender.tag))("Warna") = System.Drawing.ColorTranslator.ToWin32(opColor.Color) dsLayer.WriteXml(Path.GetDirectoryName(Application.ExecutablePath) & "\layer.xml") End If End Sub
Private Sub lLyr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 'MsgBox("labelll " & (sender.tag)) pLyr(slctdIxLyr).BackColor = Color.LightGray 'System.Drawing.SystemColors.Control slctdIxLyr = CInt(sender.tag) pLyr(slctdIxLyr).BackColor = Color.Gold
End Sub Private Sub pLyr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 'MsgBox(sender.tag) pLyr(slctdIxLyr).BackColor = Color.LightGray 'System.Drawing.SystemColors.Control slctdIxLyr = CInt(sender.tag) pLyr(slctdIxLyr).BackColor = Color.Gold End Sub
Private Sub cLyr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 'MsgBox(sender.tag) mMap.Layers.Item(dsLayer.Tables("layer").Rows(CInt(sender.tag))("nama").ToString).Visible = cLyr(CInt(sender.tag)).Checked mMap.Refresh() dsLayer.Tables("layer").Rows(CInt(sender.tag))("Aktif") = (cLyr(CInt(sender.tag)).Checked).ToString dsLayer.WriteXml(Path.GetDirectoryName(Application.ExecutablePath) & "\layer.xml") End Sub Private Sub lLbl_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim i As Integer
Dim FFMsgBox As FMsgBox FFMsgBox = New FMsgBox FCMain = Me FCMsgBox = FFMsgBox FFMsgBox.bNo.Visible = False FFMsgBox.bYes.Location = New System.Drawing.Point(70, FFMsgBox.bYes.Location.Y) FFMsgBox.bYes.Text = "OK" FFMsgBox.lForm.Text = "Legend" FFMsgBox.lMessage.Visible = False FFMsgBox.cVisible.Visible = True FFMsgBox.cAkhir.Visible = True FFMsgBox.cAkhir.Left = 84 FFMsgBox.cAkhir.Width = 108
Dim tblDesc As TableDesc
tblDesc = mMap.Layers.Item(CInt(sender.tag)).Records.TableDesc
FFMsgBox.cAkhir.Items.Clear() For i = 0 To (tblDesc.FieldCount - 1) FFMsgBox.cAkhir.Items.Add(tblDesc.FieldName(i).ToString) Next If dsLayer.Tables("layer").Rows(CInt(sender.tag))("Legend").ToString <> "" Then FFMsgBox.cAkhir.Text = dsLayer.Tables("layer").Rows(CInt(sender.tag))("Legend").ToString FFMsgBox.cVisible.Checked = True Else If FFMsgBox.cAkhir.Items.Count > 0 Then FFMsgBox.cAkhir.SelectedIndex = 0 End If
FFMsgBox.ShowDialog()
Dim lbrend As New LabelRenderer
mMap.Layers.Item(CInt(sender.tag)).renderer = lbrend
If vLbl = True Then
'lbrend.DrawBackground = False lbrend.Field = sLbl
mMap.Refresh() lLbl(CInt(sender.tag)).BackColor = Color.Gold lLbl(CInt(sender.tag)).ForeColor = Color.Black
dsLayer.Tables("layer").Rows(CInt(sender.tag))("Legend") = sLbl Else 'lbrend.DrawBackground = False lbrend.Field = ""
mMap.Refresh()
lLbl(CInt(sender.tag)).BackColor = Color.Black lLbl(CInt(sender.tag)).ForeColor = Color.Gold
dsLayer.Tables("layer").Rows(CInt(sender.tag))("Legend") = "" End If
dsLayer.WriteXml(Path.GetDirectoryName(Application.ExecutablePath) & "\layer.xml")
End Sub
Private Sub sMap_MouseUpEvent(ByVal sender As System.Object, ByVal e As AxMapObjects2._DMapEvents_MouseUpEvent) Handles sMap.MouseUpEvent Dim MapWidth As Double, MapHeight As Double Dim dragRect As Object MapWidth = mMAP.Extent.Width MapHeight = mMAP.Extent.Height
dragRect = mMAP.Extent dragRect.Left = sMap.Extent.Left + ((lLeft.Left - sMap.Left) / sMap.Width * sMap.Extent.Width) 'mMap.Extent.Left 'MsgBox(dragRect.Left.ToString) dragRect.Right = dragRect.Left + MapWidth
dragRect.Top = sMap.Extent.Bottom + (sMap.Extent.Height - ((lLeft.Top - sMap.Top) / sMap.Height * sMap.Extent.Height)) dragRect.Bottom = dragRect.Top - MapHeight
mMAP.Extent = dragRect
lLeft.Visible = False lRight.Visible = False lTop.Visible = False lBottom.Visible = False
End Sub
Private Sub GambarObjek(ByVal sQuery As String) 'Dim TL As New TrackingLayer Dim dt As New DataTable Dim JumlahTitik, i As Integer mMAP.TrackingLayer.ClearEvents() 'TL = mMAP.TrackingLayer dt = AksesDataBase.Query2Table(sQuery) JumlahTitik = dt.Rows.Count For i = 0 To JumlahTitik - 1 Titik.X = dt.Rows(i).Item("longitude") Titik.Y = dt.Rows(i).Item("latitude") KumpulanTitik.Add(Titik) Next Simbol = mMAP.TrackingLayer.Symbol(0) GarisPerjalanan.Parts.Add(KumpulanTitik) 'Simbol.Font.Name = "ESRI Transportation & Municipal" Simbol.Font.Name = "Times New Roman" Simbol.Font.Charset = 112 Simbol.CharacterIndex = 65
'Simbol.CharacterIndex = 70 'Simbol.CharacterIndex = 112 Simbol.Color = MapObjects2.ColorConstants.moRed Simbol.Size = 10 Kotak = GarisPerjalanan.Extent Kotak.ScaleRectangle(1.1)
mMAP.Extent = Kotak Dim fnt As New stdole.StdFont fnt.Name = "ESRI Transportation & Municipal" fnt.Size = 9
Simbol.Font = fnt Simbol.CharacterIndex = 112
tTunda.Enabled = True End Sub
Private Sub tTunda_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tTunda.Tick tTunda.Enabled = False mMAP.TrackingLayer.AddEvent(KumpulanTitik, 0) mMAP.TrackingLayer.AddEvent(GarisPerjalanan, 0) mMAP.FlashShape(GarisPerjalanan, 3)
End Sub
Private Sub tRuas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tRuas.Click Dim sSQL As String sSQL = "SELECT * FROM Posisi WHERE USERID = '' ORDER BY Waktu" GambarObjek(sSQL)
End Sub
Public Class FormAnggota Private Sub LoadData() With Anggota.DataField txtUserID.Text = .userID txtNama.Text = .nama txtAlamat.Text = .alamat txtTelepon.Text = .telepon End With 'dgvData.DataSource = Anggota.DataAll
End Sub
Private Sub FormAnggota_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'lblJudul.Text = "Data Anggota" lblsubjudul.Text = "Silahkan Isi Data Anggota Secara Lengkap" dtpAkhir.Format = DateTimePickerFormat.Custom LoadData()
End Sub
Private Sub tsbCari_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) LoadData() End Sub
Public Sub settombol() Dim status As Integer With Anggota status = .Status btnTambah.Visible = (status = 0) btnSimpan.Visible = (status <> 0) btnHapus.Visible = (status = 0) btnBatal.Visible = (status <> 0) End With End Sub Private Sub edit(ByVal UserID As String) With Anggota .UserID = UserID .Edit() LoadData() settombol() End With TampilPosisi() End Sub Private Sub TampilPosisi() Dim dt As New DataTable Dim SyaratTanggalAkhir, SyaratTanggalAwal As String
SyaratTanggalAkhir = " CONVERT(datetime," & PetikTunggal(Format(dtpAkhir.Value, "yyyy-MM-dd HH:mm:ss")) & " , 102) "
SyaratTanggalAwal = " CONVERT(datetime," & PetikTunggal(Format(dtpAwal.Value, "yyyy-MM-dd HH:mm:ss")) & " , 102) " PosisiSQL = "SELECT * FROM Posisi WHERE UserID = " & PetikTunggal(Anggota.UserID) & " AND Waktu >= " & SyaratTanggalAwal & " AND Waktu <= " & SyaratTanggalAkhir & " ORDER BY Waktu" dt = AksesDataBase.Query2Table(PosisiSQL) dgvPosisi.DataSource = dt tsLabelJumlah.Text = "Ditemukan : " & dt.Rows.Count.ToString & " Posisi" End Sub Public Sub CariKode(ByVal UserID As String)
Dim sSQL As String sSQL = "SELECT UserID, Nama, Alamat, Telepon FROM Anggota WHERE UserID LIKE " & PetikTunggal("%" & cbUserID.Text & "%")
Anggota.sSQLAll = sSQL dgvData.DataSource = Anggota.DataAll End Sub Public Sub CariNama(ByVal Nama As String)
Dim sSQL As String sSQL = "SELECT UserID, Nama, Alamat, Telepon FROM Anggota WHERE Nama LIKE " & PetikTunggal("%" & cbUserID.Text & "%")
Anggota.sSQLAll = sSQL dgvData.DataSource = Anggota.DataAll End Sub Public Sub Cari()
Dim sSQL As String sSQL = "SELECT UserID, Nama, Alamat, Telepon FROM Anggota WHERE UserID LIKE " & PetikTunggal("%" & cbUserID.Text & "%") & " AND Nama LIKE " & PetikTunggal("%" & cbNama.Text & "%")
Anggota.sSQLAll = sSQL dgvData.DataSource = Anggota.DataAll End Sub Private Sub hapus() If MsgBox("User dengan UserID = " & txtUserID.Text & " akan dihapus", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then Anggota.UserID = txtUserID.Text Anggota.Delete() End If Cari() LoadData() settombol()
End Sub Private Sub batal() Anggota.Cancel() settombol() End Sub Private Sub tambah() Anggota.Add() settombol() End Sub Private Sub simpan() Dim kode As String kode = txtUserID.Text With Anggota.DataField .userID = txtUserID.Text .nama = txtNama.Text .alamat = txtAlamat.Text .telepon = txtTelepon.Text
End With Anggota.Post() Cari() settombol() End Sub
Private Sub btnBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) batal() End Sub
Private Sub FormAnggota_Shown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Shown SplitContainer1.SplitterDistance = 265 Cari() settombol() End Sub Private Sub dgvData_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvData.CellDoubleClick
UserID = Convert.ToString(dgvData.Rows(dgvData.SelectedRows(0).Index).Cells(0).Value) If UserID = "" Then Exit Sub End If edit(UserID)
End Sub
Private Sub FormAnggota_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Leave DialogResult = System.Windows.Forms.DialogResult.OK Me.Close() End Sub
Private Sub EditToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EditToolStripMenuItem.Click UserID = Convert.ToString(dgvData.Rows(dgvData.SelectedRows(0).Index).Cells(0).Value) If UserID = "" Then Exit Sub End If edit(UserID) End Sub
Private Sub HapusToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HapusToolStripMenuItem.Click UserID = Convert.ToString(dgvData.Rows(dgvData.SelectedRows(0).Index).Cells(0).Value) If UserID = "" Then Exit Sub End If edit(UserID) hapus() End Sub
ublic Class FormSetting Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click Dim sPass As String sPass = Me.txtPassword.Text If sPass = "" Then sPass = "" End If
SQLServer.Server = txtServer.Text SQLServer.Password = txtPassword.Text SQLServer.Database = txtDatabase.Text SQLServer.UserName = txtNamaUser.Text SQLServer.SaveConnection()
Me.Close() End Sub
Private Sub formSettingKoneksi_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load With SQLServer .InitConnection()
txtDatabase.Text = .Database txtServer.Text = .Server txtNamaUser.Text = .UserName txtPassword.Text = .Password End With
End Sub
Public Class FormManajemenUser Private Sub btnBuatUserBaru_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuatUserBaru.Click pnlDaftarUser.Visible = False pnlFormUser.Visible = True pnlSetPassword.Visible = False lblJudulFormUser.Text = "Buat User Baru" btnSetPassword.Text = BUTTON_TEXT_FOR_EMPTY_PASSWORD btnSimpanDataUser.Text = BUTTON_TEXT_FOR_NEW_RECORD txtUserID.ReadOnly = False
btnEditUser.Enabled = False btnHapus.Enabled = False txtUserID.Focus() Pengguna.Add() End Sub
Private Sub btnKeluar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnKeluar.Click Me.Dispose() End Sub
Private Sub btnSetPassword_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSetPassword.Click If btnSetPassword.Text = BUTTON_TEXT_FOR_EMPTY_PASSWORD Then txtPassword3.Visible = False lblPassword3.Visible = False lblPassword1.Text = "Password:" lblPassword2.Text = "Konfirmasi Password:" ElseIf btnSetPassword.Text = BUTTON_TEXT_FOR_NON_EMPTY_PASSWORD Then txtPassword3.Visible = True lblPassword3.Visible = True txtPassword1.Text = "" txtPassword2.Text = "" txtPassword3.Text = "" lblPassword1.Text = "Password Lama:" lblPassword2.Text = "Password Baru:" lblPassword3.Text = "Konfirmasi Password:" End If
pnlDaftarUser.Visible = False pnlFormUser.Visible = False pnlSetPassword.Visible = True txtPassword1.Focus()
pnlSetPassword.Left = pnlDaftarUser.Left pnlSetPassword.Top = pnlDaftarUser.Top pnlSetPassword.Width = pnlDaftarUser.Width pnlSetPassword.Height = pnlDaftarUser.Height End Sub
Private Sub btnSimpanPassword_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click If btnSetPassword.Text = BUTTON_TEXT_FOR_NON_EMPTY_PASSWORD Then If txtPassword1.Text <> Pengguna.DataField.password Then MsgBox("Password lama anda tidak cocok", MsgBoxStyle.Information) txtPassword1.Focus() Exit Sub End If
If txtPassword2.Text <> txtPassword3.Text Then
MsgBox("Password Baru dan Konfirmasi Password harus sama", MsgBoxStyle.Information) txtPassword2.Focus() Exit Sub End If
Pengguna.DataField.password = txtPassword2.Text End If
If btnSetPassword.Text = BUTTON_TEXT_FOR_EMPTY_PASSWORD Then If txtPassword1.Text <> txtPassword2.Text Then MsgBox("Password Baru dan Konfirmasi Password harus sama", MsgBoxStyle.Information) txtPassword1.Focus() Exit Sub End If
Pengguna.DataField.password = txtPassword1.Text End If
pnlFormUser.Visible = True pnlSetPassword.Visible = False End Sub
Private Sub frmManajemenUser_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load With Me .Height = 632 .Width = 848
End With IsiDaftarHakAkses() RefreshDaftarPengguna()
pnlDaftarUser.Visible = True pnlFormUser.Visible = False pnlSetPassword.Visible = False pnlDaftarUser.Parent = pnlUtama pnlFormUser.Parent = pnlUtama pnlSetPassword.Parent = pnlUtama End Sub
Private Sub btnSimpanDataUser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSimpanDataUser.Click If btnSimpanDataUser.Text = BUTTON_TEXT_FOR_NEW_RECORD Then SimpanDataUser() End If
If btnSimpanDataUser.Text = BUTTON_TEXT_FOR_UPDATE_RECORD Then With Pengguna.DataField .hak = cbHakAkses.SelectedIndex.ToString .nama = txtNamaUser.Text .telepon = txtTelepon.Text .alamat = txtAlamat.Text .userID = txtUserID.Text If btnSetPassword.Text = BUTTON_TEXT_FOR_EMPTY_PASSWORD Then .password = txtPassword1.Text Else .password = txtPassword2.Text End If End With Pengguna.Post() End If
RefreshDaftarPengguna() pnlFormUser.Visible = False pnlDaftarUser.Visible = True btnEditUser.Enabled = True btnHapus.Enabled = True End Sub
Private Sub btnBatalDataUser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBatalDataUser.Click pnlFormUser.Visible = False pnlDaftarUser.Visible = True btnEditUser.Enabled = True btnHapus.Enabled = True End Sub
Private Sub btnBatalSetPassword_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click pnlFormUser.Visible = True pnlSetPassword.Visible = False End Sub
Private Function SimpanDataUser() As Integer
Pengguna.Add() With Pengguna.DataField .userID = txtUserID.Text .hak = cbHakAkses.SelectedIndex.ToString .nama = txtNamaUser.Text .password = txtPassword2.Text .telepon = txtTelepon.Text .alamat = txtAlamat.Text
End With
Pengguna.Post() RefreshDaftarPengguna()
End Function Private Sub IsiDaftarHakAkses() With cbHakAkses .Items.Clear() .Items.Add("Administrator") .Items.Add("Full User") .Items.Add("Guest") .SelectedIndex = 0 End With End Sub
Public Function RefreshDaftarPengguna() As Integer RefreshDaftarPengguna("SELECT * FROM Pengguna") End Function
Public Function RefreshDaftarPengguna(ByVal SQLQuery As String) As Integer Dim tblPengguna As New DataTable Dim i As Integer Dim T As ListViewItem
Try Pengguna.Nama = "" lvDaftarUser.BeginUpdate() lvDaftarUser.Items.Clear() With Pengguna.Data For i = 0 To .Rows.Count - 1 T = lvDaftarUser.Items.Add( _ .Rows(i).Item("UserID").ToString, _ CInt(.Rows(i).Item("Hak").ToString)) T.SubItems.Add(.Rows(i).Item("Nama").ToString) T.SubItems.Add(Pengguna.GetNamaHakAksesUser(CInt(.Rows(i).Item("Hak").ToString))) Next End With lvDaftarUser.EndUpdate() If lvDaftarUser.Items.Count <> 0 Then btnEditUser.Enabled = True
btnHapus.Enabled = True Else btnEditUser.Enabled = True btnHapus.Enabled = True End If lblInfo.Text = CStr(lvDaftarUser.Items.Count) & " items" Return 1 Catch e As Exception Return 0 End Try End Function
Private Sub btnEditUser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEditUser.Click 'Dim sSQL As String Dim T As ListViewItem Dim tbl As New DataTable
If Pengguna.JumlahData <> 0 Then
With Pengguna.DataField Me.txtUserID.Text = .userID Me.txtNamaUser.Text = .nama Me.txtPassword1.Text = .password Me.txtPassword2.Text = .password Me.txtPassword3.Text = .password Me.txtTelepon.Text = .telepon Me.txtAlamat.Text = .alamat Me.cbHakAkses.SelectedIndex = .hak End With
If Pengguna.DataField.password = "" Then btnSetPassword.Text = BUTTON_TEXT_FOR_EMPTY_PASSWORD Else btnSetPassword.Text = BUTTON_TEXT_FOR_NON_EMPTY_PASSWORD End If
txtUserID.ReadOnly = True btnSimpanDataUser.Text = BUTTON_TEXT_FOR_UPDATE_RECORD lblJudulFormUser.Text = "Edit User " & Pengguna.DataField.nama pnlFormUser.Visible = True pnlDaftarUser.Visible = False End If Pengguna.Edit() End Sub
RefreshDaftarPengguna(sSQL) End Sub
Private Sub btnReset_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Pengguna.Nama = "" RefreshDaftarPengguna() End Sub
Private Sub lvDaftarUser_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lvDaftarUser.DoubleClick btnEditUser_Click(sender, e) End Sub
Private Sub btnHapus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHapus.Click Dim T As ListViewItem If lvDaftarUser.FocusedItem.Index = -1 Then Exit Sub T = lvDaftarUser.FocusedItem
If MsgBox("Anda yakin ingin menghapus user dengan ID = " & T.Text & " ?", MsgBoxStyle.YesNo + MsgBoxStyle.Question) = MsgBoxResult.Yes Then Pengguna.UserID = T.Text Pengguna.Delete() RefreshDaftarPengguna()
End If End Sub
End Class