BAB 3
ANALISIS DAN PERANCANGAN
3.1 Analisis Permasalahan
Titik permasalahan dalam teknologi perikanan Indonesia selama ini adalah kurangnya penginderaan jarak jauh untuk mengetahui lokasi keberadaan ikan (fishing ground) sebelum nelayan melaut, bagi nelayan di pesisir pantai. (Kompas Media, 11
November 2003). Hal ini mengakibatkan operasi penangkapan ikan yang kurang efisien, mengingat semakin naiknya harga bahan bakar untuk menjalankan kapal. Di samping minimnya perangkat yang digunakan untuk mendukung perikanan, sumber daya manusia juga menjadi masalah utama.
Sebuah sistem yang akan dirancang dikehendaki untuk dapat menentukan lokasi keberadaan ikan dalam radius yang relatif sempit. Tidak seperti penginderaan satelit, sistem ini harus dirancang bukan untuk memperkirakan keberadaan ikan di sebuah tempat, tetapi untuk menentukan lokasi yang benar-benar terdapat ikan. FishFinder akan
diperlukan untuk membantu jalannya sistem ini. Sistem juga dirancang untuk dapat menuntun kapal nelayan untuk sampai pada titik ikan (fishingground).
Sistem harus dirancang untuk bekerja dengan intervensi nelayan seminimal mungkin, dan memberikan informasi yang komprehensif kepada nelayan. Dengan demikian, diharapkan nelayan dapat mengoperasikannya.
3.2 Sistem yang Diperlukan
Sistem ini dikehendaki untuk dapat menyelesaikan masalah-masalah yang telah dianalisis tersebut, dengan:
Membangun perangkat bergerak (Mobile Scanner) yang akan digunakan untuk:
mengirimkan lokasi keberadaan ikan ke pusat (Terminal) bila ditekan tombol
fungsinya, proses tracking kapal, dan menuntun nelayan sampai pada titik ikan
dengan memberikan informasi arah yang harus dituju.
Membangun perangkat lunak yang digunakan di pusat (Terminal) yang akan
digunakan untuk: mengumpulkan data keberadaan ikan dan kapal, mengirimkan lokasi ikan terdekat ke kapal yang meminta (untuk proses penuntun nelayan), dan memvisualisasikan secara real-time titik-titik ikan yang ada beserta
keberadaan kapal.
Informasi titik ikan dikumpulkan di Terminal, beserta keberadaan kapal dengan
identitas masing-masing kapal berbeda. Semua informasi itu divisualisasikan ke layar monitor dalam bentuk grafis (peta).
Setiap titik ikan dilengkapi berbagai informasi seperti kedalaman, dan waktu pemindaian. Setiap titik ikan memiliki waktu timeout (dapat diubah di antarmuka Terminal). Waktu ini dihitung mundur, dan bila habis waktunya maka titik ikan
tersebut akan dihapuskan dari Terminal. Tujuan dari adanya waktu timeout
adalah supaya sebuah titik ikan tidak menunggu terlalu lama untuk dikunjungi sehingga ikannya tidak berpindah terlalu jauh.
Perangkat lunak Terminal ditujukan untuk monitoring dan melayani Mobile Scanner bila meminta titik ikan. Satu-satunya nilai yang bisa diatur adalah waktu timeout dari titik ikan. Waktu timeout ini dapat diatur dengan tujuan kemudahan Terminal untuk diadaptasi di berbagai kondisi lapangan.
3.3 Cara Kerja Sistem yang Dirancang
Sistem membutuhkan sebuah speedboat atau kapal cepat yang dipasang Fishfinder untuk bekerja. Fishfinder akan memberikan informasi pencitraan dari dalam
air untuk mengetahui ada atau tidaknya ikan kepada operator. Jika terdapat ikan dan operator tersebut menganggap ikan di tempat tersebut cukup banyak untuk ditangkap, maka operator tersebut dapat menggunakan Mobile Scanner untuk mengirimkan ke
pusat (Terminal) lokasi di mana dia berada. Lokasi ini didapat dari modul GPS yang
terintegrasi dengan Mobile Scanner.
Nelayan yang ingin melaut juga membawa Mobile Scanner sebagai sumber
informasi arah yang harus dituju nelayan. Mobile Scanner akan melakukan komunikasi
dengan Terminal untuk mengetahui koordinat mana yang harus dituju nelayan, di mana
koordinat tersebut telah diketahui mengindikasikan keberadaan ikan dari hasil pemindaian sebelumnya.
Mobile Scanner dan Terminal adalah satu sistem yang tidak dapat dipisah.
Gambar 3.1 Skenario kerja sistem
Cara kerja sistem adalah sebagai berikut:
Sebuah Speedboat dilengkapi dengan Mobile Scanner dalam mode Scanner, dan FishFinder, akan melakukan sweeping di perairan. Jika dari FishFinder
ditemukan adanya indikator ikan, dan operator menganggap ikan tersebut kualitas dan kuantitasnya layak untuk ditangkap, maka operator tersebut dapat mengirimkan titik keberadaan ikan tersebut ke pusat (Terminal) dengan menekan
tombol keterangan kedalaman ikan, kemudian menekan tombol Ya untuk konfirmasi pengiriman ke pusat.
Ketika Terminal mendapatkan kiriman data koordinat keberadaan ikan, maka Terminal akan memprosesnya dan menampilkan titik ikan tersebut ke layar.
Pada saat ini, bila ada kapal yang mau melaut, sudah bisa melaut. Kapal nelayan ini juga akan dilengkapi dengan Mobile Scanner dalam mode Nelayan. Ketika
mode ini dipilih di Mobile Scanner, maka Mobile Scanner tersebut akan meminta
titik ikan kepada Terminal. Terminal akan merespon dengan mengirimkan titik
ikan terdekat ke kapal tersebut. Jika kapal tersebut belum diketahui koordinat keberadaannya, maka titik ikan yang dikirim ke kapal tersebut adalah titik ikan terdekat dari Terminal, mengasumsi semua kapal berangkat dari pusat.
Setiap kapal akan dibedakan dengan identitas empat digit alfanumerik case -insensitive, yaitu karakter A-Z dan 0-9. Empat digit ini akan memberikan
kemungkinan ID kapal berbeda sejumlah 364 = 1.679.616. Identitas ini tidak dapat diubah-ubah dan diprogram langsung ke dalam ROM mikrokontroler
Mobile Scanner. Setiap titik ikan yang didapat di pusat akan di-tag dengan
nomor ID yang dimulai dari 1 dan terus meningkat setiap Terminal mendapat
kiriman informasi titik ikan dari Mobile Scanner.
Ketika Mobile Scanner menerima titik ikan yang dikirim Terminal. Mobile Scanner akan membandingkan koordinat keberadaan dia sekarang dengan
koordinat titik ikan, kemudian menentukan arah yang harus dituju nelayan dan menampilkan informasi arah yang harus dituju tersebut ke nelayan. Informasi arah ini selalu diperbaharui setiap kali update dari GPS diterima
Jika nelayan berada dalam radius 15 meter dari titik ikan yang dituju, maka nelayan tersebut dinyatakan telah sampai, dan dapat memulai penangkapan ikan di sekitar lokasi tersebut. 15 meter adalah toleransi untuk menentukan bahwa nelayan telah sampai. Toleransi terlalu kecil akan menyebabkan kapal harus benar-benar tepat agar bisa dinyatakan sampai. Toleransi terlalu besar akan menyebabkan kapal nelayan belum begitu mendekati tujuan namun sudah dinyatakan sampai. 15 meter dipilih karena toleransi hasil baca GPS bisa mencapai kesalahan 15 meter.
Setelah menyimpulkan bahwa kapal telah sampai pada koordinat yang dituju,
Mobile Scanner akan memberikan pilihan kepada nelayan untuk meminta titik
ikan baru. Jika tombol Tidak ditekan, maka nelayan tersebut diberikan koordinat
Terminal (dianggap akan segera pulang). Jika Ya, titik ikan terdekat dari
keberadaan nelayan tersebut akan dikirimkan kepada nelayan itu, dan titik ikan yang telah dikunjungi tersebut dihapus dari Terminal.
Jika nelayan juga menggunakan FishFinder dan menemukan adanya ikan selama
perjalanannya ke titik ikan yang sudah ditentukan sebelumnya, nelayan tersebut dapat menggunakan Mobile Scanner untuk mengirimkan koordinat ikan yang
baru ditemukan tersebut ke pusat. Cara mengirimkan koordinat titik ikan tersebut sama dengan cara pada mode Scanner.
Mobile Scanner selalu (dalam interval tertentu) memberikan koordinat
keberadaannya ke pusat untuk tujuan tracking.
Titik ikan akan dihapus dari Terminal bila kedua syarat terpenuhi: kapal telah
Mobile Scanner hanya meminta titik ikan pada dua kondisi. Pertama adalah
ketika mode Nelayan dipilih. Kedua, ketika nelayan tersebut diberikan pilihan
untuk meminta titik ikan baru pada saat titik ikan tujuannya dinyatakan telah sampai.
Titik ikan dihapus dari Terminal ketika kapal meminta titik baru dengan asumsi
bahwa nelayan dianggap telah menangkap ikan di koordinat sebelumnya kemudian memilih untuk meminta titik baru, atau nelayan tidak menemukan adanya indikasi ikan di tempat tersebut lagi sehingga nelayan meminta titik ikan baru.
3.4 Perancangan
Pembangunan sistem ini melalui tahap perancangan, dimana diagram blok, diagram alir, dan rancang bangun sistem dibuat terlebih dahulu.
3.4.1 Mobile Scanner
Mobile Scanner adalah perangkat yang akan dibawa oleh pengguna untuk
melakukan pemindaian di perairan sekitar. Perangkat ini berfungsi untuk mengetahui posisi keberadaan pengguna di bumi, dan mengirimkan posisi tersebut beserta informasi lain sesuai dengan perintah dari pengguna tersebut yang dilayani melalui tombol keypad
yang tersedia.
Mobile Scanner akan dirancang untuk memiliki dua mode, yaitu sebagai
pemindai (mode Scanner) dan sebagai alat informasi bagi nelayan (mode Nelayan). Pada
Scanner akan standby sampai operator menekan tombol untuk mengirim titik ikan ke Terminal. Mobile Scanner juga akan mengirimkan titik keberadaannya kepada Terminal
setiap interval waktu 30 detik untuk proses tracking. Mode Nelayan memiliki semua
kemampuan mode Scanner, dan dengan tambahan kemampuan untuk meminta titik ikan
dari Terminal dan menampilkan informasi arah yang harus dituju. 3.4.1.1Diagram Blok
Diagram blok dari Mobile Scanner dapat dilihat sebagai berikut:
Penjelasan untuk setiap blok:
RF modem
RF modem digunakan untuk mengirimkan data ke darat. RF modem merupakan perangkat end-to-end yang memungkinkan komunikasi dari Mobile Scanner ke Terminal di darat.
Modul GPS
Modul GPS berfungsi sebagai penerima GPS dari satelit GPS. Modul GPS EG-T10 akan mengirimkan data waktu, lokasi, ketinggian, dan informasi lainnya keluar dari pin Tx setiap satu detik.
LCD display
LCD display berfungsi menampilkan berbagai informasi, antara lain: waktu pada
saat itu, kuat sinyal RF modem ke Terminal, posisi di bumi (derajat bujur dan
lintang), dan konfirmasi pengiriman informasi dengan kedalaman tertentu (jika tombol ditekan).
Keypad
Keypad terdiri dari beberapa tombol, yaitu 3 tombol pilihan untuk memasukkan
informasi kedalaman ikan, dan 2 tombol konfirmasi (Ya/Tidak).
Keseluruhan
Mobile Scanner adalah perangkat yang mengintegrasikan RF modem, modul
GPS, Push Button, dan LCD display. Perangkat ini mendapat informasi posisi
ke LCD display. Operator dapat menekan tombol pilihan kedalaman kemudian
menekan tombol konfirmasi Ya untuk mengirimkan koordinat lokasi operator tersebut, dan mikrokontroler akan mengirimkan beberapa informasi yang dimasukkan oleh operator ke Terminal di darat.
3.4.1.2Diagram Alir
Program utama:
Pada program utama, mikrokontroler melakukan inisialisasi. Proses-proses yang terjadi dalam tahap inisialisasi ini antara lain:
Pengaturan baud rate dan interrupt untuk UART, sistem menggunakan dua buah
port UART. Dimana UART0 dihubungkan dengan RF modem dan menggunakan
baud rate 9600bps, sedangkan UART1 dihubungkan dengan modul GPS dan
menggunakan baud rate 4800bps. UART0 berfungsi untuk menerima dan
mengirim data dari dan ke RF modem, maka Tx dan Rx beserta interrupt-nya
perlu diaktifkan. UART1 berfungsi untuk menerima data dari modul GPS, maka Rx dan interruptnya perlu diaktifkan.
Pengaturan timer, sistem menggunakan 2 buah timer 8 bit yaitu TIMER0 dan
TIMER2. TIMER0 berfungsi untuk mengatur interval pengiriman informasi lokasi kapal ke Terminal, sedangkan TIMER2 berfungsi untuk mengatur interval
pengiriman ulang bila terjadi kegagalan pengiriman informasi sebelumnya. Secara default, TIMER0 diset 30 detik sedangkan TIMER2 diset 0.5 detik.
Pengaturan external interrupt,interrupt eksternal yang digunakan sistem adalah interrupt jenis Pin Change. Interrupt ini diset pada port C0 hingga C4. Bila
terjadi perubahan logika pada pin-pin ini, maka interrupt akan dipicu. External interrupt ini digunakan untuk mengatur tombol.
Inisialisasi variabel-variabel yang akan digunakan.
Inisialisasi LCD, berupa ukuran huruf yang ditampilkan, jenis pergerakan cursor,
dan jumlah baris tampilan.
start Inisilaisasi* Check data GPS Apakah sudah valid? Kirim posisi pusat dan cetak pilih mode pada LCD Y T Mode Apa? Mode 1 Mode 2 Event Loop Tombol 1 Tombol 2 Input Tombol Dari User F F
Gambar 3.3 Diagram alir utama Mobile Scanner
Setelah proses inisialisasi, mikrokontroler akan memeriksa apakah inputan dari GPS telah valid. Bila inputan telah valid, TPF (Terminal Position Fix) akan segera
dikirimkan ke Terminal. Kemudian mikrokontroler akan menunggu masukan dari
pertama akan membuat Mobile Scanner masuk ke mode Nelayan, dan tombol kedua
akan masuk ke mode Scanner. Ketika mode ini sudah dipilih, mikrokontroler tidak akan
menjalankan program utama lagi, melainkan masuk ke sub-program. Untuk berpindah mode pengguna harus melakukan reset ke Mobile Scanner ataupun mematikan
kemudian menghidupkannya kembali. Rancangan tampilan untuk program utama:
Ga mbar 3.4 Tampilan layar pemilihan mode
Sub-program untuk mode Nelayan:
Setelah memasuki Mode 1 atau Mode Nelayan, Mobile Scanner akan secara
otomatis menjalankan sub-rutin minta titik ikan yang berfungsi untuk mengirimkan permintaan titik ikan ke Terminal. Setelah permintaan titik ikan dikirimkan dan
informasi titik ikan telah diterima dari Terminal maka mikrokontroler akan segera
memeriksa koordinat sekarang dari GPS dan melakukan kalkulasi untuk menentukan arah yang akan dituju dan perkiraan jarak ke titik ikan tersebut. Hasil kalkulasi dan arah yang telah diperoleh akan ditampilkan pada layar LCD untuk menuntun nelayan ke titik ikan tersebut. Selanjutnya mikrokontroler akan memeriksa apakah waktu update telah
G ambar 3.5 Sub-program mode Nelayan
• Bila waktu update telah tiba, sub-rutin Kirim Informasi Lokasi Kapal Ke
Terminal (LLK) akan dijalankan. Setelah itu mikrokontroler akan kembali mengambil lokasi sekarang dari GPS dan melakukan kalkulasi jarak dan arah serta menampilkannya pada layar LCD seperti yang dilakukan sebelumnya.
• Bila waktu update belum tiba, mikrokontroler akan segera melanjutkan alur
program selanjutnya yakni memeriksa apakah ada inputan tombol dari pengguna.
MobileScanner memeriksa apakah terdapat inputan tombol. Jika MobileScanner
memperoleh inputan tombol, maka inputan tombol tersebut akan diperiksa. Adapun diagram alirnya adalah sebagai berikut:
Gambar 3.6 Sub-rutin pilih tombol pada mode Nelayan
Bila tombol satu ditekan maka string kedalaman “01-10m” akan dimasukkan
kedalam paket data informasi titik ikan yang akan dikirimkan, bila tombol dua ditekan maka string kedalaman “11-20m” yang dimasukkan, bila tombol tiga ditekan maka string kedalaman “21-30m” yang dimasukkan. Setelah salah satu dari ketiga tombol ini
ditekan, LCD akan menampilkan informasi titik yang akan dikirimkan (dalam lintang dan bujur) serta pertanyaan konfirmasi pengiriman yang hanya bisa dijawab dengan tombol empat dan lima. Penekanan ketiga tombol ini menggunakan sistem overwrite
dimana satu tombol akan meng-overwrite tombol lainnya. Contohnya bila tombol satu
ditekan dan kemudian pengguna menekan tombol tiga, maka string yang akan
dimasukkan adalah string kedalaman “21-30m” bukan “01-10m”. Tombol empat dan
tombol lima hanya akan berfungsi bila tombol satu hingga tiga telah ditekan sebelumnya. Tombol empat berfungsi untuk memanggil sub-rutin yang akan mengirimkan titik ikan, sedangkan tombol lima berfungsi untuk menghapus string
kedalaman yang telah dimasukkan sebelumnya dan kembali ke layar penuntun kapal. Jika ternyata Mobile Scanner tidak memperoleh input tombol dari pengguna,
maka Mobile Scanner akan memeriksa apakah tujuan telah tercapai dengan
membandingkan titik sekarang dengan titik ikan yang diperoleh dari Terminal. Bila
kapal telah tiba pada lokasi titik ikan yang dituju, pada layar LCD akan ditampilkan pesan bahwa tujuan telah sampai dan pertanyaan apakah ingin meminta titik baru. Bila tombol empat yang ditekan maka Mobile Scanner akan meminta titik ikan baru ke Terminal, namun bila tombol lima yang ditekan maka Mobile Scanner akan meminta
titik koordinat Terminal ke Terminal. Selanjutnya proses penuntunan akan berulang
kembali dengan titik tujuan yang baru. Diagram alir sub-rutin untuk melakukan permintaan titik Terminal dan titik ikan dari Terminal dapat dilihat pada Gambar 3.7.
Gambar 3.7 Sub-rutin minta titik terminal dan titik ikan pada mode Nelayan
Sub-rutin minta titik terminal dan minta titik ikan pada dasarnya hampir mirip satu sama lain, yang membedakannya hanyalah tipe paket yang digunakan, dimana minta titik ikan menggunakan PTI sementara minta titik terminal menggunakan PTT. Pengiriman PTI maupun PTT mempunyai retry yang tak terhingga karena pengiriman
ini bersifat krusial dan sangat penting. Tanpa titik ikan ataupun titik Terminal yang
diterima dari Terminal, Mobile Scanner tidak dapat melakukan penuntunan kapal
nelayan, oleh karena itu maka retry untuk PTT dan PTI diberikan tak terhingga. Interval
akan berhenti bila Terminal telah mengirimkan acknowledgement. Pada kondisi ini Mobile Scanner menunggu titik ikan maupun titik Terminal yang akan dikirimkan oleh Terminal.
Gambar 3.8 Sub-rutin kirim LTI dan kirim LLK pada mode Nelayan
Pengiriman informasi titik ikan (LTI) merupakan pengiriman yang diinput oleh pengguna, sedangkan pengiriman informasi titik kapal (LLK) atau disebut juga dengan
update posisi merupakan pengiriman yang dipicu oleh update timer. Pengiriman LTI
maupun LLK sama-sama mempunyai retry 3 kali. Artinya bila terjadi kegagalan dalam
pengiriman LTI atau LLK maka akan dilakukan pengiriman ulang hingga sebanyak tiga kali. Bila setelah pengiriman ulang ketiga kali pengiriman masih juga gagal dilakukan maka Mobile Scanner akan berhenti mencoba mengirim dan menganggap data gagal
dikirim serta melanjutkan alur jalannya program. Ketika terjadi kegagalan pengiriman pada LTI, Mobile Scanner akan menampilkan pesan gagal mengirim pada layar LCD,
namun pada LLK pesan sejenis tidak akan ditampilkan pada layar LCD. Interval dari masing-masing pengiriman ulang bila terjadi kegagalan pengiriman adalah 0.5 detik.
Sub-program untuk mode Scanner
Ga mbar 3.10 Rancangan layar Mobile Scanner pada mode Nelayan
Mode 2 atau Mode Scanner merupakan mode operasi yang digunakan oleh kapal Scanner untuk mencari titik ikan dan mengirimkan informasinya ke Terminal. Ketika
sekarang berdasarkan posisi lintang dan bujurnya serta waktu sekarang (GMT+7) pada LCD. Mikrokontroler akan memeriksa waktu update, bila waktu update telah tiba, maka
sub-rutin kirim informasi lokasi kapal ke Terminal (LLK) akan dijalankan. Bila waktu update belum tiba maka mikrokontroler akan melanjutkan memeriksa inputan tombol
dari pengguna. Jika terdapat inputan tombol maka jenis tombol akan diperiksa.
• Jika tombol satu ditekan maka string kedalaman “01-10m” akan dirangkai ke
dalam paket data LTI yang akan dikirimkan. Pertanyaan konfirmasi pengiriman akan ditampilkan pada LCD.
• Jika tombol dua ditekan maka string kedalaman “11-20m” akan dirangkai ke
dalam paket data LTI yang akan dikirimkan. Pertanyaan konfirmasi pengiriman akan ditampilkan pada LCD.
• Jika tombol tiga ditekan maka string kedalaman “21-30m” akan dirangkai ke
dalam paket data LTI yang akan dikirimkan. Pertanyaan konfirmasi pengiriman akan ditampilkan pada LCD.
• Jika tombol empat ditekan maka paket data LTI yang telah dirangkai dengan
string kedalaman akan dikirimkan ke Terminal. Tombol empat hanya akan
berfungsi bila tombol satu, dua atau tiga telah ditekan sebelumnya.
• Jika tombol lima ditekan maka string kedalaman yang telah dirangkai kedalam
paket data LTI sebelumnya akan dihapus dan LCD akan kembali ke tampilan sebelumnya yakni tampilan lokasi kapal dan waktu sekarang. Tombol ini hanya berfungsi bila salah satu dari ketiga tombol kedalaman telah ditekan sebelumnya.
Penekanan ketiga tombol ini menggunakan sistem overwrite dimana satu tombol
akan meng-overwrite tombol lainnya. Contohnya bila tombol satu ditekan dan kemudian
pengguna menekan tombol tiga, maka string yang akan dimasukkan adalah string
kedalaman “21-30m” bukan “01-10m”.
Diagram alir sub-rutin pengiriman titik ikan dan update kapal adalah sebagai
berikut:
Gambar 3.11 Sub-rutin mengirim informasi lokasi ikan dan kapal mode Scanner
Pengiriman titik ikan dan update kapal pada mode Scanner ini sebenarnya sama
membedakannya hanyalah tampilan pada LCD Mobile Scanner. Tampilan pada mode Nelayan akan berupa arah dan jarak menuju titik ikan, sedangkan pada mode Scanner
berupa koordinat titik dan waktu sekarang. Pengiriman informasi titik ikan (LTI) merupakan pengiriman yang diinput oleh pengguna, sedangkan pengiriman informasi titik kapal (LLK) atau disebut juga dengan update posisi merupakan pengiriman yang
dipicu oleh update timer. Pengiriman LTI maupun LLK sama-sama mempunyai retry 3
kali. Artinya bila terjadi kegagalan dalam pengiriman LTI atau LLK maka akan dilakukan pengiriman ulang hingga sebanyak tiga kali. Bila setelah pengiriman ulang ketiga kali pengiriman masih juga gagal dilakukan maka Mobile Scanner akan berhenti
mencoba mengirim dan menganggap data gagal dikirim serta melanjutkan alur jalannya program. Ketika terjadi kegagalan pengiriman pada LTI, Mobile Scanner akan
menampilkan pesan gagal mengirim pada layar LCD, namun pada LLK pesan sejenis tidak akan ditampilkan pada layar LCD. Interval dari masing-masing pengiriman ulang bila terjadi kegagalan pengiriman adalah 0.5 detik.
Gambar 3.12 Rancangan layar Mobile Scanner pada mode Scanner
3.4.1.3Rancang Bangun
Keypad
Keypad terdiri dari berbagai tombol, yaitu pilihan kedalaman, dan konfirmasi
untuk pengiriman.
Pengguna dapat memberikan perintah kepada Mobile Scanner lewat
tombol-tombol tersebut.
Rancang Bangun Keseluruhan
Gambar 3.14 Rancang bangun Mobile Scanner
3.4.2 Terminal
Terminal adalah sebuah perangkat lunak yang berjalan pada Personal Computer
(PC) dengan perangkat RF modem terintegrasi untuk berkomunikasi dengan Mobile Scanner. Beberapa fungsinya adalah:
Menerima data yang dikirim oleh Mobile Scanner dan memprosesnya. Hasil
proses ini antara lain untuk menampilkan titik ikan di peta pada layar monitor.
Mengirimkan data koordinat titik ikan tujuan kepada Mobile Scanner bila Mobile Scanner meminta.
3.4.2.1Diagram Blok
Gambar 3.15 Diagram blok Terminal
Pada Terminal, digunakan PC dan RF modem sebagai perangkat komunikasi
dengan Mobile Scanner. Antarmuka PC dengan RF modem menggunakan komunikasi
serial RS-232 pada PC.
3.4.2.2Diagram Alir
Diagram alir untuk program pada PC yang menangani tampilan pada monitor dan melayani Mobile Scanner.
Gambar 3.16 Program utama Terminal
Ketika program dijalankan, maka program tersebut akan memasuki tahap inisialisasi terlebih dahulu. Beberapa hal yang dilakukan dalam proses inisialisasi ini antara lain:
Setup GUI. Menggambar window sesuai dengan yang diinginkan, seperti window
utama, toolbar, dan kotak info. Grid pada peta juga digambar pada tahap ini. Zoom peta diberikan nilai awal 100%.
Setup Timer. Terdapat dua Timer yang digunakan pada program utama, yaitu Timer 1 untuk melakukan rutinitas pengecekan buffer di serial port dan
mengambil data dari sana, dan Timer 2 untuk mengecek antrian string yang perlu
di-ACK oleh penerima.
Setup variabel penting lainnya, dan instantiasi objek yang diperlukan. Contoh
variabel yang diset pada waktu inisialisasi adalah variabel-variabel yang menampung nilai default seperti waktu timeout titik ikan, flag yang menandakan
posisi Terminal sudah diset (dikalibrasi) atau belum, dan lain-lain. Contoh objek
yang diinstantiasi adalah objek untuk melakukan koneksi ke serial port dengan pengaturannya yang disesuaikan dengan kebutuhan, objek yang berhubungan dengan window, dan objek-objek lain yang diperlukan.
Setelah dilakukan inisialisasi program melanjutkan ke setting serial port yang
diperlukan dari input user, yaitu nomor serial port yang akan digunakan. Program akan
memunculkan sebuah dialog box yang berisi daftar nomor serial port yang mungkin
dipilih, dan user cukup memilih dari combo box yang disediakan dan menekan tombol OK. Jika OK ditekan, maka program akan mengecek keberadaan RF modem di nomor
serial port yang dipilih oleh user. Cara untuk mengecek keberadaan RF modem di serial
port tertentu adalah dengan mengirimkan string ‘+++’ ke serial port tersebut dan
mendengarkan balasan dari RF modem berupa string ‘OK’. Jika balasan diterima dalam
waktu 1 detik, maka terdapat RF modem di serial port tersebut. Jika terdapat RF modem pada nomor serial port yang dipilih, maka program akan lanjut ke program utama
Terminal. Jika tombol Cancel ditekan, maka user diasumsikan telah mengetahui bahwa
Setelah proses ini selesai, maka program akan melanjutkan ke program utamanya. Sebelum masuk ke program utamanya, timer 1 dan 2 akan di-start, dimana
akan dimulai pengecekan serial port. Timer 1 (TIMER1) diset untuk firing setiap 1ms,
sedangkan timer 2 (TIMER2) cukup firing setiap 100ms supaya tidak memberatkan
sistem.
Ketika timer 1 melakukan firing, maka program akan mengecek serial port. Pada
inisialisasi program, telah dibuat sebuah variabel boolean lagiAmbil yang bernilai awal False. Variabel ini yang menandakan sebuah paket data sedang diambil atau tidak. Jika mendapat karakter ‘#’ (awal dari sebuah paket data/sentence) dari serial port, maka variabel ini akan diset True. Variabel ini akan diset False jika karakter <LF> atau <CR>
ditemukan. Variabel ini yang menentukan apakah karakter dari serial port tersebut merupakan karakter yang merupakan bagian dari sebuah paket data.
Dari diagram alir (Gambar 3.17) dapat dilihat bahwa bila tidak lagiAmbil, maka akan dicek apakah karakter yang didapat dari serial port tersebut merupakan karakter ‘#’. Jika ya, maka lagiAmbil diset menjadi True, dan variabel string
sentence untuk menampung paket data tersebut akan di-clear untuk bersiap
menampung paket data baru. Kemudian karakter ‘#’ ini dimasukkan ke dalam variabel sentence ini. Ketika lagiAmbil sudah diset menjadi True, maka setiap kali
mengecek serial port dan menemukan adanya karakter yang menunggu, maka karakter tersebut akan diambil dan dimasukkan ke dalam variabel string sentence ini sampai menemukan karakter <LF>. Jika karakter ini ditemukan, maka sebuah paket data telah selesai diambil dan jalan program akan dialihkan ke acknowledgment paket dan parsing
Gambar 3.18 Sub-rutin parsing
Parsing paket data tersebut dimulai dari menentukan jenis paket data tersebut,
kemudian melakukan parsing sesuai dengan paket data tersebut. Jenis-jenis paket data
yang ada, yaitu Informasi lokasi keberadaan kapal (LLK), Informasi koordinat keberadaan titik ikan (KTI), Informasi kalibrasi koordinat titik terminal (TPF), Permintaan titik ikan (PTI), Permintaan titik terminal (PTT), dan paket ACK. Tiga paket data yang identik untuk 5 field pertamanya adalah LLK, KTI, dan TPF. Lima field
utamanya adalah Waktu, Derajat Lintang, Utara/Selatan, Derajat Bujur, Barat/Timur. Ketiga paket ini dibuat identik untuk memudahkan proses parsing dimana cukup dibuat
Gambar 3.19 Sub-rutin yang dipanggil setelah proses parsing selesai
Dalam program Terminal terdapat beberapa container class yang digunakan
untuk menampung berbagai kumpulan objek dengan kelas yang sama. Container class
ini disediakan oleh Qt dengan nama kelas QList. Dari kelas ini dapat dibuat objek
container untuk menampung berbagai objek lain, seperti titik-titik kapal, titik-titik ikan,
dan daftar antrian string yang harus di-ACK. Sebuah objek container digunakan untuk
menampung beberapa objek dari sebuah kelas. Syarat dari kelas objek tersebut agar objek tersebut dapat ditampung dalam container ini adalah kelas tersebut harus
mempunyai copy constructor, default constructor, dan overload operator assignment
(=).
Daftar titik kapal adalah sebuah objek dari container class QList yang
diinstantiasi untuk menampung objek titik kapal. Beberapa daftar lain adalah daftar titik ikan, dimana adalah objek dari QList yang diinstantiasi untuk menampung objek titik ikan, dan daftar antrian string ACK, dimana adalah objek dari QList yang diinstantiasi
untuk menampung objek string dari kelas QString.
Bila mendapat sentence LLK dari Mobile Scanner, maka Terminal akan
melakukan update titik kapal yang ada dalam daftar titik kapal yang dimiliki oleh Terminal. Update ini dilakukan dengan jalan sebagai berikut:
Jika daftar titik kapal kosong (belum ada satupun kapal yang dikandung oleh daftar titik kapal), maka titik kapal tersebut langsung dimasukkan ke dalam daftar titik kapal.
Jika sudah ada titik kapal di dalam daftar titik kapal, maka lakukan pencarian apakah ada kapal dengan ID yang sama dengan kapal yang hendak dimasukkan tersebut. Bila ada, maka kapal yang IDnya sama tersebut dibuang dari daftar dan kapal yang hendak dimasukkan tersebut dimasukkan ke dalam daftar. Bila tidak ada kapal yang IDnya sama, maka masukkan kapal tersebut ke dalam daftar kapal.
Bila mendapat sentence KTI, maka Terminal akan menambahkannya ke dalam
daftar titik ikan. Kemudian setelah itu melakukan update peta untuk menampilkan ikan
Gambar 3.20 Sub-rutin untuk meng-update posisi Terminal
Sentence TPF dikirimkan oleh Mobile Scanner pada saat Mobile Scanner
tersebut selesai melakukan inisialisasi dan hasil baca dari GPS sudah benar. Sentence ini
digunakan untuk kalibrasi pertama kali pada Terminal. Terminal akan mengasumsikan
bahwa posisi dia pada saat menerima sentence TPF merupakan isi dari sentence TPF
tersebut. Sebagai implikasinya, Mobile Scanner pertama yang akan dihidupkan harus
berada di dekat Terminal, sehingga posisi mereka sama. Terminal hanya akan meng-update posisi dan waktunya sekali setelah Terminal dijalankan. Bila menerima sentence
Gambar 3.21 Sub-rutin untuk mengecek antrian string yang perlu di-ACK
Untuk mekanisme Acknowledgment, maka setiap akhir dari sebuah paket data
selalu diberikan sebuah sequence number. Sequence number ini nantinya akan
digunakan oleh penerima untuk membuat sebuah paket ACK untuk memberitahukan kepada pengirim bahwa paket data dengan sequencenumber tersebut berhasil diterima.
Terminal dapat berperan sebagai penerima maupun pengirim. Pada saat Terminal
telah mengirimkan sebuah sentence, Terminal akan memasukkan sentence tersebut ke
dalam antrian sentence yang perlu di-ACK. Antrian sentence ini akan dicek setiap
100ms. Apabila terdapat sebuah sentence yang telah menunggu selama 500ms (0,5s)
dengan waktu kirim terakhir dan jumlah retry. Sebuah sentence dalam daftar sentence
juga dapat dihapus bila Terminal menerima ACK dengan ACK number sesuai dengan
nomor ACK-nya.
3.4.2.3Rancang Bangun
Gambar 3.22 Rancangan Graphical User Interface dari Terminal
Gambar di atas merupakan rancangan tampilan dari program Terminal. Program
3.4.3 Protokol Komunikasi Terminal dengan Mobile Scanner
Untuk memungkinkan Terminal dan Mobile Scanner dapat bertukar data, maka
protokol komunikasi keduanya perlu didefinisikan. Protokol komunikasi ini berada pada
layer Application. Protokol komunikasi layer Physical dan Data Link diatur oleh RF
modem. Untuk memungkinkan komunikasi Terminal dengan banyak Mobile Scanner,
RF modem pada Terminal perlu dikonfigurasi untuk bekerja pada mode point-to-multipoint.
Format data yang dirancang sekarang ini mirip dengan paket data NMEA, namun dengan jumlah karakter tipe paket yang lebih pendek, yaitu 3 karakter. Format umumnya:
Gambar 3.23 Format umum protokol komunikasi Mobile Scanner dan Terminal
Berikut adalah beberapa jenis paket data (sentence) yang diperlukan dalam
komunikasi antara Terminal dan Mobile Scanner.
a. Lokasi Keberadaan Kapal
Sentence yg dikirimkan dari Mobile Scanner ke Terminal untuk memberitahukan Terminal update posisinya.
Gambar 3.24 Format sentence Lokasi Keberadaan Kapal
1) Waktu di Mobile Scanner pada saat data dikirimkan
2) Derajat lintang posisi kapal 3) N atau S (utara atau selatan) 4) Derajat bujur posisi kapal 5) E atau W (timur atau barat) 6) ID kapal yang mengirim 7) ACK Number
Derajat lintang dan bujur dalam format DM.
b. Posisi Terminal
Sentence yg dikirimkan dari Mobile Scanner ke Terminal pada saat inisialisasi.
Berisi posisi Mobile Scanner. Tujuan dari sentence ini adalah untuk memberitahukan Terminal posisinya. Oleh karena itu, Mobile Scanner harus berada tepat di atas Terminal supaya posisi Mobile Scanner juga merupakan posisi Terminal.
Gambar 3.25 Format sentence Posisi Fix Terminal
1 2 3 4 5 6 7 | | | | | | | #TPF,hhmmss.sss,ddmm.mmmm,a,dddmm.mmmm,a,xxxx*xx<CR><LF> 1 2 3 4 5 6 7 | | | | | | | #LLK,hhmmss.sss,ddmm.mmmm,a,dddmm.mmmm,a,xxxx*xx<CR><LF>
1) Waktu di Mobile Scanner pada saat data dikirimkan
2) Derajat lintang posisi terminal 3) N atau S
4) Derajat bujur posisi terminal 5) E atau W
6) ID kapal yang mengirim 7) ACK Number
Derajat lintang dan bujur dalam format DM.
c. Lokasi Titik Ikan
Sentence yg dikirimkan dari Mobile Scanner ke Terminal ketika diminta oleh
operator. Sentence ini memberitahukan kepada Terminal bahwa pada suatu lokasi
terdapat ikan.
Gambar 3.26 Format sentence Lokasi Titik Ikan
1) Waktu di Mobile Scanner pada saat data dikirimkan
2) Derajat lintang posisi ikan 3) N atau S
4) Derajat bujur posisi ikan 5) E atau W
1 2 3 4 5 6 7 8 | | | | | | | |
6) ID kapal yang mengirim 7) Kedalaman ikan
8) ACK Number
Derajat lintang dan bujur dalam format DM.
d. Permintaan Titik Ikan
Sentence yang dikirimkan oleh Mobile Scanner ke Terminal pertama kali
sewaktu Mobile Scanner masuk mode Nelayan dan pada saat tombol “Ya” ditekan
ketika Mobile Scanner menanyakan pengguna apakah ingin meminta titik ikan baru.
Gambar 3.27 Format sentence Permintaan Titik Ikan
1) ID kapal 2) ACK Number
e. Permintaan Titik Terminal
Sentence yang dikirimkan oleh Mobile Scanner ke Terminal ketika user menekan
tombol “Tidak” pada saat mencapai lokasi titik ikan (pada saat tersebut nelayan diberikan pilihan untuk meminta titik ikan yang baru atau tidak). Jika tombol “Ya” ditekan, maka PTI yang dikirimkan Mobile Scanner.
1 2 | |
Gambar 3.28 Format sentence Permintaan Titik Terminal
1) ID kapal 2) ACK Number
f. Koordinat Titik Ikan
Sentence yang dikirimkan oleh Terminal ke Mobile Scanner ketika mendapatkan sentence PTI.
Gambar 3.29 Format sentence Koordinat Titik Ikan
1) Derajat lintang titik ikan 2) N atau S
3) Derajat bujur titik ikan 4) E atau W
5) ID kapal yang meminta 6) Kedalaman ikan 1 2 | | #PTT,xxxx*xx<CR><LF > 1 2 3 4 5 6 7 | | | | | | | #KTI,dd.ddddd,a,ddd.ddddd,a,xxxx,xxxxx*xx<CR><LF>
7) ACK Number
Derajat lintang dan bujur dalam format D.
g. Koordinat Titik Terminal
Sentence yang dikirimkan oleh Terminal ke Mobile Scanner ketika mendapatkan sentence PTT
Gambar 3.30 Format sentence Koordinat Titik Terminal
1) Derajat lintang titik terminal 2) N atau S
3) Derajat bujur titik terminal 4) E atau W
5) ID kapal yang meminta 6) ACK Number
Derajat lintang dan bujur dalam format D.
h. Acknowledgment
Sentence yang dikirimkan baik oleh Terminal maupun Mobile Scanner setelah
selesai menerima sebuah sentence selain sentence ACK.
1 2 3 4 5 6 | | | | | | #KTT,dd.ddddd,a,ddd.ddddd,a,xxxx*xx<CR><LF>
Gambar 3.31 Format sentenceAcknowledgment
1) sequence number (ACK Number) dari sentence yang diterima
3.4.4 Interval Update Lokasi Mobile Scanner ke Terminal
Sistem ini diharapkan untuk dapat melayani 10 hingga 30 Mobile Scanner secara
serentak. Diasumsikan setiap Mobile Scanner cukup diberikan waktu 1 detik untuk
mengirimkan titik keberadaannya, dan informasi lainnya seperti titik ikan bila ada. Dari referensi datasheet 24XStream, untuk mengirimkan data diperlukan beberapa waktu
sebagai berikut:
Keterangan Waktu(ms)
ChannelInitializationTime 35.00 Data In ke modem pengirim
50byte, 9600bps 41.67
Data out dari modem
penerima 50byte, 9600bps 41.67
Latensi pengiriman data
lewat RF 82.77
Total 201.10
Tabel 3.1 Perhitungan lama waktu pengiriman 50 byte data
Untuk data sepanjang 50 byte (panjang paket data update), dibutuhkan sekitar
201.1 ms untuk dikirimkan dari pengirim ke penerima. Kesempatan untuk mengirim dengan waktu 1000ms diberikan kepada setiap Mobile Scanner. Bila dibandingkan
dengan waktu yang dibutuhkan untuk mengirimkan update keberadaannya, maka setiap
1 |
Mobile Scanner masih memiliki banyak waktu untuk mengirimkan data lain jika
diperlukan. Untuk maksimum 30 Mobile Scanner dengan waktu 1 detik untuk setiap Mobile Scanner, maka setiap Mobile Scanner akan diset interval untuk memberikan update setiap 30 detik. Sebelum mengirim data, RF modem memiliki mekanisme sendiri
untuk menghindari tabrakan data yang mengakibatkan interferensi, dan akan menunggu sampai tidak ada yang mengirim baru kemudian melakukan inisialisasi dengan penerima.
3.4.5 Implementasi Koordinat Geografis dalam Program Terminal
Dalam program, nilai koordinat geografis lebih mudah disimpan dalam format D, karena dengan format ini cukup menggunakan sebuah variabel Double untuk
menyimpan masing-masing koordinat lintang dan koordinat bujur. Qt juga menyediakan sebuah kelas QPointF yang dapat menyimpan koordinat dua dimensi dalam variabel
Double. Kelas ini sebenarnya disediakan Qt untuk keperluan painting di widget. Namun
karena sifatnya juga adalah koordinat, maka dapat digunakan untuk menyimpan informasi koordinat geografis sebuah titik. QPointF tidak dirancang untuk menyimpan nilai LU/LS dan BB/BT. Namun karena tipe data Double memungkinkan nilai minus,
maka koordinat geografis dapat disesuaikan dengan mengkonversi lagi format D ini menjadi koordinat dua dimensi Kartesian, dimana bila LS maka nilai derajat lintang menjadi minus begitu juga bila BB maka derajat bujur menjadi minus.
Gambar 3.32 Representasi koordinat geografis ke dalam koordinat Kartesian
Konversi ke dalam derajat Kartesian memberikan beberapa kemudahan dalam proses di dalam komputer. Program Terminal akan menggambarkan setiap titik ikan dan
titik kapal ke peta dengan menggunakan koordinat Terminal sebagai acuan. Setiap titik
ikan dan titik kapal akan digambarkan relatif dengan berapa jauhnya dia dari Terminal,
jarak sebenarnya sebuah titik dengan Terminal kemudian dikonversi ke dalam jarak
dengan satuan pixel. Konversi ini melibatkan perhitungan resolusi peta. Resolusi peta
didefinisikan sebagai satuan jarak sebenarnya yang diwakili oleh setiap pixel di peta
pada PC.
3.4.6 Resolusi Peta
Teknik pemetaan yang digunakan dalam pemetaan berbagai titik ikan/kapal dan peta ini adalah teknik raster. Setiap pixel dari peta ini mengandung berbagai nilai, antara
sebenarnya di permukaan bumi. Pixel-pixel ini mewakili keadaan bumi yang
sebenarnya, seperti warna dan luas. Sebuah area di laut bisa diwakili oleh sebuah pixel
yang berwarna biru, dan pixel tersebut mewakili panjang dan lebar tertentu area laut
yang diwakilinya tersebut. Misalkan sebuah pixel mewakili sebuah area 0,5x0,5 meter2,
maka resolusi peta tersebut dikatakan 0,5 meter/pixel.
Dalam perancangan program Terminal, peta yang ditampilkan juga dibuat untuk
dapat melakukan zooming. Fasilitas zooming akan membuat resolusi peta tidak tetap.
Sebuah rumusan ditetapkan di dalam perancangan, di mana pada zoom 100%, setiap pixel mewakili 1/10000 dari satu derajat.
Bila satu derajat adalah sekitar 111.23 km, maka satu pixel mewakili sekitar
meter 123 , 11 % 100 1 10000 m 111230 =
× . Ini adalah resolusi peta untuk zoom 100%. Bila zoom
peta 25%, maka satu pixel mewakili 44,492meter
% 25 1 10000 m 111230 = × .
3.4.7 Error Konversi Selisih Koordinat ke Satuan Jarak
Satu derajat lintang mewakili 111,1329 km, sedangkan satu derajat bujur di khatuslitiwa mewakili 111,3195 km. Dalam perancangan ini, baik untuk derajat lintang maupun derajat bujur di lintang manapun, akan dianggap setiap derajat mewakili
= + 2 3195 , 111 1329 , 111
111,23 km. Hal demikian dilakukan untuk simplifikasi perhitungan pada sistem, karena beberapa pertimbangan, yaitu:
• Library yang tersedia untuk melakukan perhitungan trigonometri di
mikrokontroler menghasilkan error perhitungan yang cukup tinggi, mengingat
mikrokontroler 8-bit yang digunakan memiliki keterbatasan perhitungan floating point.
• Sistem tidak mengandalkan perhitungan jarak dalam satuan metrik. Mobile Scanner membandingkan jarak dalam selisih derajat koordinat untuk
menyimpulkan sampai tidaknya kapal ke tujuan. Terminal melayani Mobile Scanner dengan menerima dan mengirim berbagai informasi dalam derajat
koordinat.
Namun simplifikasi ini akan mengakibatkan beberapa hal, yaitu:
• Penggambaran peta pada Terminal akan terjadi penyimpangan karena untuk
setiap derajat lintang, satu derajat bujur diwakili panjang dalam metrik yang berbeda-beda.
• Mobile Scanner akan menampilkan hasil perhitungan jarak ke koordinat tujuan
yang kurang tepat.
Akibat-akibat yang ditimbulkan oleh simplifikasi ini dapat ditekan seminimal mungkin dengan mengoperasikan alat di daerah ±15° dari garis khatulistiwa. Pada lintang utara/selatan 15°, satu derajat bujur akan mewakili
111,3195km/drjt x cos(15°) = 107,53 km/drjt. Selisih dari nilai jarak per derajat bujur di ekuator adalah:
Perhitungan menunjukkan bahwa bila simplifikasi memungkinkan kesalahan maksimal yang dapat dibuat oleh sistem sebesar selisih 3,7 km untuk setiap derajat, yang setara dengan selisih 3,7 / 60 = 61,7 meter untuk setiap menit (1 derajat = 60 menit = 3600 detik).
3.4.8 Parsing Paket Data
Parsing, dengan istilah lain berupa syntax analysis, adalah proses menganalisa
serangkaian token dari sebuah teks/data untuk menentukan struktur gramatikalnya
dengan berdasarkan formal grammar tertentu. (Anonim, 2007). Token adalah elemen
terkecil yang tidak dapat dipisah dan memiliki arti tersendiri. Parsing biasanya akan
menghasilkan parse tree berisi hubungan antar token yang akan diproses kemudian
melalui semanticanalysis.
Dalam perancangan ini, parsing akan diterapkan ke paket data/sentence untuk
mengambil token-tokennya. Kemudian ditentukan dengan melihat dari tipe paket data
tersebut, token-token akan diproses lebih lanjut menjadi sebuah objek di dalam program,
atau sebagai perintah bagi program untuk melakukan sesuatu.
Aturan-aturan (rule) untuk melakukan parsing akan didefinisikan sebagai
berikut:
• Sebuah paket diawali dengan tanda pagar “ # “
• Tiga karakter setelah awal paket akan berisi nilai tipe paket.
• Field data terakhir akan diikuti oleh tanda asterisk “ * “
• Dua karakter setelah tanda asterisk adalah ACK number.
• Paket data diakhiri dengan <CR> dan <LF>.
Ketika sebuah paket data telah selesai diterima, yaitu jika ditemukan karakter <CR> dan <LF>, maka penerima akan meng-ACK paket tersebut dan proses parsing
dimulai. Proses ini terlebih dahulu mengambil tiga karakter pertama setelah tanda “#“ untuk melihat tipe data apakah sebuah paket. Setelah tipe data diketahui, maka program akan melakukan percabangan ke kode parser tertentu yang sesuai dengan tipe data.
Untuk tipe data selain ACK, kode parser kemudian melakukan iterasi untuk mengecek
setiap karakter dari paket data tersebut untuk mendapatkan karakter “,“ yang merupakan awal dari sebuah token. Setelah semua token selesai, program akan menentukan
selanjutnya apa yang harus dikerjakan.
Dalam perancangan ini, parsing tidak akan menghasilkan parse tree seperti parsing pada compiler. Parsing dalam perancangan ini akan memberikan output data
maupun perintah yang diperlukan program untuk jalannya sistem ini.
3.4.9 Penggambaran Peta
Pemrograman Qt memungkinkan kelas QWidget untuk digambar oleh
programmer dengan mengimplementasi ulang fungsi:
Fungsi ini merupakan fungsi yang dijalankan oleh Qt setiap event painting di-dispatch. QWidget memiliki sebuah slot yang akan memasukkan event
QpaintEvent ke dalam eventloop, yaitu:
void update()
Untuk menggambar di widget, dibutuhkan sebuah kelas yang bernama QPainter.
QPainter akan menggambarkan berbagai jenis grafik maupun bitmap ke widget.
Terminal merupakan pusat dari sistem ini, sehingga titik Terminal harus
digambarkan pada tengah-tengah peta.
3.4.9.1Penentuan Dimensi Peta
Dimensi peta yang akan digambarkan pada Terminal tergantung pada jangkauan
RF modem. Untuk RF modem 24XStream, jangkauan maksimal adalah 16km. Dengan demikian, apabila Terminal digambarkan di tengah-tengah peta, maka peta tersebut
harus memiliki tinggi 16x2 = 32km dan lebar 16x2 = 32km. Karena terdapat kemungkinan kapal berada di titik terjauh sehingga penampilannya akan menjadi tidak baik, maka tambahan 2 km ditambah ke tinggi dan lebarnya, sehingga menjadi sebuah peta dengan dimensi 34x34 km. Ini adalah dimensi dalam kenyataannya di lapangan. Untuk merepresentasikannya ke dalam peta di komputer, perlu ditentukan berapa pixel yang diperlukan untuk mewakili area tersebut.
Jarak yang diwakili oleh setiap derajat lintang dan derajat bujur di daerah ekuatorial adalah sekitar 111.23km/derajat. Jarak 34km akan diwakili oleh 34/111,23 = 0,30567 ≈ 0,3derajat. Telah disepakati sebelumnya bahwa untuk zoom 100%, maka 1
derajat diwakili oleh 10000 pixel. Dengan demikian 0,3 derajat akan diwakili oleh 3000 pixel. Dengan demikian dimensi peta di program Terminal adalah 3000x3000 pixel.
Gambar 3.33 Dimensi peta dalam pixel, metrik, maupun derajat
3.4.9.2Algoritma Penggambaran Peta
Dimensi peta sebelumnya telah didapat, yaitu 3000x3000 pixel. Terminal akan
dilambangkan dengan icon rumah dan diletakkan di tengah-tengah peta.
Peta ini akan diwakili oleh sebuah widget di program Terminal. Widget ini
diinstantiasi dan dilakukan set ukuran agar 3000x3000 pixel. Setiap pixel dari widget
memiliki nilai koordinat dalam integer 16-bit. Koordinat (0,0) berada di pixel pertama
(kiri-atas) dari widget tersebut, dan koordinat (2999,2999) berada pada kanan bawah dari widget. Karena titik Terminal berada di tengah-tengah peta, maka titik Terminal akan
Semua titik (titik ikan dan kapal) akan digambarkan sesuai dengan jaraknya dengan titik Terminal. Misalkan terdapat sebuah kapal di koordinat (06,1000 LS;
105,9000BT), sedangkan posisi Terminal berada di (06,0000 LS; 106,0000BT). Di
dalam program, koordinat kapal akan direpresentasikan sebagai (y=-6,1; x=105,9), dan
Terminal direpresentasikan sebagai (y=-6,0; x=106,0). Kapal tersebut akan digambarkan
dengan langkah-langkah sebagai berikut:
Hitung jarak lintang kapal dengan Terminal.
JL = ykapal – yTerminal = (-6,1)-(-6,0) = -0,1 derajat
Hitung jarak bujur kapal dengan Terminal.
JB = xkapal – xTerminal = 105,9 – 106.0 = -0,1 derajat
Kalikan JL dengan -1 JL = 0,1 derajat
Kalikan JL dan JB masing-masing dengan 10000 JLpix = 1000
JBpix = -1000
Kalikan JL dan JB dengan faktor (1/zoom peta). Misalkan zoom 100%, maka
faktor skalanya adalah 1.
JLpix = 1000 (jarak translasi koordinat y dalam pixel)
JBpix = -1000 (jarak translasi koordinat x dalam pixel)
Posisi koordinat painting diletakkan di tengah-tengah peta, yaitu posisi Terminal. Misalkan (1500,1500).
Translasi koordinat painting tersebut dengan JLpix dan JBpix, maka koordinat painting tersebut sekarang telah berada di posisi (500,2500). Ikon ikan/kapal
kemudian digambarkan pada koordinat painting tersebut.
3.4.10 Mekanisme Penuntun Kapal Nelayan
Mekanisme untuk mengetahui arah yang harus dituju oleh sebuah kapal nelayan ditentukan dengan algoritma sebagai berikut:
Kode Arah Arah 0 Barat 1 Telah Sampai 2 Timur 3 Barat Laut 4 Utara 5 Timur Laut 6 Barat Daya 7 Selatan 8 Tenggara
Tabel 3.2 Kode Arah
Posisi kapal pada setiap saat diperoleh dari GPS, posisi tersebut akan selalu dibandingkan dengan posisi ikan yang didapat dari Terminal. Pembandingan pertama
dilakukan terhadap polaritas lintang kedua titik. Algoritma yang digunakan adalah sebagai berikut:
• Bila polaritas lintang keduanya sama, maka akan koordinat lintang akan diperiksa. Algoritmanya adalah:
o Jika koordinat titik ikan lebih besar dari posisi kapal, dan sama-sama berada pada lintang selatan, maka arah sementara akan diberi kode 7. o Jika koordinat titik ikan lebih besar dari posisi kapal, dan sama-sama
berada pada lintang utara, maka arah sementara akan diberi kode 4.
o Jika koordinat titik ikan lebih kecil dari posisi kapal, dan sama-sama berada pada lintang selatan, maka arah sementara akan diberi kode 4.
o Jika koordinat titik ikan lebih kecil dari posisi kapal, dan sama-sama berada pada lintang utara, maka arah sementara akan diberi kode 7.
o Jika koordinat titik ikan sama dengan posisi kapal, maka arah sementara diberi kode 1.
• Bila polaritas lintang keduanya tidak sama, maka akan digunakan algoritma: o Jika titik ikan berada pada lintang utara dan posisi kapal berada pada
lintang selatan, maka arah sementara adalah 4.
o Jika titik ikan berada pada lintang selatan dan posisi kapal berada pada lintang utara, maka arah sementara adalah 7.
Setelah pembandingan pertama selesai dilakukan, maka akan dilakukan pembandingan kedua, pembandingan kedua ini menggunakan koordinat bujur. Pembandingannya adalah sebagai berikut:
• Bila titik ikan dan titik kapal berada pada polaritas bujur yang sama, maka algoritma sebagai berikut akan digunakan:
o Jika koordinat titik ikan lebih besar dari posisi kapal, dan sama-sama berada pada bujur timur, maka kode akan ditambah satu.
o Jika koordinat titik ikan lebih besar dari posisi kapal, dan sama-sama berada pada bujur barat, maka kode akan dikurang satu.
o Jika koordinat titik ikan lebih kecil dari posisi kapal, dan sama-sama berada pada bujur timur, maka kode akan dikurang satu.
o Jika koordinat titik ikan lebih kecil dari posisi kapal, dan sama-sama berada pada bujur barat, maka kode akan ditambah satu.
• Bila titik ikan dan titik kapal berada pada polaritas yang berbeda, maka algoritma yang akan digunakan adalah sebagai berikut:
o Jika titik ikan berada pada bujur timur dan posisi kapal berada pada bujur barat, maka kode ditambah satu.
o Jika titik ikan berada pada bujur barat dan posisi kapal berada pada bujur timur, maka kode dikurang satu.
Kode arah yang diperoleh setelah pembandingan kedua akan diterjemahkan kedalam gambar mata angin diatas. Bila kode arah sama dengan satu, maka artinya kapal telah sampai pada titik ikan yang dituju.
3.4.11 Setting Modul RF 24XStream
XStream memerlukan pengaturan-pengaturan awal untuk dapat bekerja sesuai dengan yang diinginkan. Adapun pengaturan-pengaturan yang dilakukan terhadap XStream adalah baud rate, alamat tujuan, alamat asal, dan banyaknya retry count.
Mekanisme retry disini berbeda dengan meknaisme retry yang dibuat pada
pemrograman Mobile Scanner. Retry count ini merupakan low level retry yang lebih
bersifat ke data link layer yang ditangani oleh modul RF XStream.
Baud rate pada XStream dapat diatur dengan perintah ATBD kemudian diikuti
dengan parameter yang menyimbolkan baud rate. Selain baud rate standar, XStream
juga mendukung komunikasi dengan baud rate non-standar. Daftar hubungan antara
Parameter Baud rate 0 1200 1 2400 2 4800 3 9600 4 19200 5 38400 6 57600
Tabel 3.3 Parameter pengaturan baud rate XStream
Pada perancangan ini digunakan baud rate 9600bps, oleh karena itu maka
pengaturan yang dilakukan adalah sebagai berikut: “ATBD 03”. Baud rate yang diatur
disini bukanlah data rate antar RF modem, melainkan baud rate antara XStream dengan
sistem minimum maupun XStream dengan PC.
Perintah ATRR kemudian diikuti oleh parameter digunakan untuk mengatur banyaknya jumlah low level retry. Pada perancangan ini, jumlah retry diatur sebanyak
tiga kali. Pengaturan dapat dilakukan dengan memasukkan perintah sebagai berikut: “ATRR 03”. Setiap modul yang ingin saling berkomunikasi harus mempunyai setting
jumlah retrycount yang sama.
Pengaturan alamat tujuan pengiriman menggunakan perintah ATDT yang diikuti kemudian dengan parameter. Parameter ini berupa alamat tujuan tersebut. Pengaturan alamat tujuan pengiriman ini berkaitan erat dengan model komunikasi yang diinginkan yaitu Mobile Scanner hanya dapat mengirimkan informasi ke Terminal dan Terminal
dapat mengirimkan informasi ke semua Mobile Scanner yang ditanganinya. Pada Mobile Scanner alamat tujuan yang diinginkan adalah alamat Terminal yaitu 0000, maka
penulisan perintahnya adalah sebagai berikut: “ATDT 0000”. Sedangkan pada Terminal
alamat tujuan yang diinginkan adalah semua Mobile Scanner, maka digunakan alamat broadcast yaitu FFFF, maka penulisan perintahnya adalah “ATDT FFFF”. Alamat asal
diatur melalui perintah ATMY. Untuk Terminal alamat asalnya adalah 0000, maka
perintah yang digunakan adalah: “ATMY 0000” dan untuk Mobile Scanner alamat
asalnya menggunakan pengalamatan otomatis dimana alamatnya menggunakan ID modul XStream itu sendiri. Perintah yang digunakan adalah “ATAM”.
Setelah seluruh pengaturan selesai, perintah “ATWR” harus diberikan. Perintah ini berfungsi untuk menulis pengaturan yang telah dibuat sebelumnya ke dalam memory
XStream. Untuk keluar dari mode AT-Command, maka perintah “ATCN” diberikan dan
RF modem siap untuk digunakan berkomunikasi.
AT-Command yang dikirim
Respon Modul
+++ OK<CR> ATBD 03<ENTER> OK<CR>
ATDT FFFF<ENTER> OK<CR> ATMY 0000<ENTER> OK<CR> ATRR 03<ENTER> OK<CR>
ATWR<ENTER> OK<CR> ATCN<ENTER> OK<CR> Tabel 3.4 Pengaturan untuk XStream pada Terminal
AT-Command yang dikirim
Respon Modul
+++ OK<CR> ATBD 03<ENTER> OK<CR>
ATDT 0000<ENTER> OK<CR>
ATAM<ENTER> OK<CR> ATRR 03<ENTER> OK<CR>
ATWR<ENTER> OK<CR> ATCN<ENTER> OK<CR> Tabel 3.5 Pengaturan untuk XStream pada Mobile Scanner
3.4.12 Antarmuka
3.4.12.1 Mikrokontroler
Mikrokontroler yang digunakan adalah Atmega162-16PI. Mendukung hingga dua UART, clock rate hingga 16 MHz, throughput maksimum 16 MIPS (juta instruksi
per detik) pada clock 16MHz, Interrupt eksternal 3 buah. Dalam perancangan ini
menggunakan kristal 14,7456MHz agar menghasilkan baud rate standar yang bulat,
yaitu 9600bps.
Untuk menentukan baud rate, register UBRR dari mikrokontroler harus diisi
dengan nilai: 95 1 9600 16 14745600 1 ) ( 16× − = × − = = baudrate f
3.4.12.2 XStream RF modem
XStream ke mikrokontroler
XStream RF modem yang digunakan memiliki antarmuka dengan level tegangan TTL, sehingga langsung dapat dihubungkan dengan mikrokontroler.
Gambar 3.35 Jalur sinyal antara mikrokontroler dengan XStream
XStream ke PC
XStream dapat dihubungkan ke PC melalui antarmuka serial RS-232 yang umumnya terdapat pada PC. Parameter yang perlu diperhatikan adalah level tegangan RS-232 yang tidak sesuai dengan level tegangan XStream. Untuk mengatasinya, diperlukan IC yang mengubah level tegangan antara TTL dan RS-232. IC yang dapat digunakan untuk tujuan ini adalah MAXRS-232.
Gambar 3.36 Jalur sinyal antara PC dengan XStream
3.4.12.3 Modul GPS
Gambar 3.37 Jalur sinyal antara mikrokontroler dengan modul GPS
Modul GPS yang digunakan tidak memiliki hardware flow control, sehingga
Untuk mengambil data dari SFR SBUF, diperlukan
Daftar Perintah Clock Cycle
jump 3
mov SBUF->REGISTER 2
mov REGISTER-->RAM 2
clear SBUF 1
total 8
Tabel 3.6 Perkiraan Clockcycle pengambilan data dari buffer
Mikrokontroler menggunakan clock 14,7456MHz.
Satu clockcycle menggunakan waktu s MHz 0,0678μ
7456 , 14
1 =
Satu byte time dari transfer data asinkron 4800bps: 8 1,666ms 4800
1 × =
Supaya tidak terjadi bufferoverflow, maka
T(eksekusi perintah) < T(byte UART)
ms s ms s 666 , 1 5424 , 0 666 , 1 8 0678 , 0 < < × μ μ
Setiap selesai mengirimkan sebuah paket data, modul GPS menunggu paket ACK dari mikrokontroler sebelum mengirimkan paket data selanjutnya.
3.4.12.4 LCD display
Gambar 3.38 Jalur sinyal antara mikrokontroler dengan modul LCD
LCD display memiliki pinout seperti gambar di atas. Kombinasi antara RS dan