55
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 (fishing ground). Sistem harus dirancang untuk bekerja dengan intervensi nelayan seminimal mungkin, dan memberikan informasi yang komprehensif kepada nelayan. Dengan demikian, diharapkan nelayan dapat mengoperasikannya.
56
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.
57
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. Masing-masing harus berjalan agar sistem ini berjalan.
58
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
59 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 caseinsensitive, 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
60
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 mengunjunginya, atau titik ikan tidak diminta hingga waktu timeout habis.
61
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 mode Scanner, Mobile Scanner tidak akan meminta titik ikan kepada Terminal. Mobile
62 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.1 Diagram Blok Diagram blok dari Mobile Scanner dapat dilihat sebagai berikut:
Gambar 3.2 Diagram blok Mobile Scanner
63 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 EGT10 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 keberadaan dalam derajat lintang dan bujur dari modul GPS, dan menampilkan
64 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.2 Diagram 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
65 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.
F
start
Input Tombol Dari User
Inisilaisasi*
Check data GPS
T
Mode Apa?
Apakah sudah valid?
Tombol 1 Y Kirim posisi pusat dan cetak pilih mode pada LCD
Mode 1
Tombol 2 Mode 2
Event Loop
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 pengguna. Pengguna dapat menekan tombol pertama atau kedua untuk memilih. Tombol
66 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 tiba (30 detik sekali).
67
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.
68 •
Bila waktu update belum tiba, mikrokontroler akan segera melanjutkan alur program selanjutnya yakni memeriksa apakah ada inputan tombol dari pengguna. Mobile Scanner memeriksa apakah terdapat inputan tombol. Jika Mobile Scanner
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
69 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.
70
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 dari masing-masing pengiriman adalah 0,5 detik. Pengiriman PTT maupun PTI hanya
71 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
72 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
Gambar 3.9 Sub-program mode 2 (mode Scanner)
73
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 Mode 2 dimasuki, Mobile Scanner akan secara otomatis menampilkan posisi kapal
74 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.
75 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 saja dengan pengiriman titik ikan dan update kapal pada mode Nelayan, yang
76 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.
77
Gambar 3.12 Rancangan layar Mobile Scanner pada mode Scanner
3.4.1.3 Rancang Bangun
Keypad Keypad terdiri dari berbagai tombol, yaitu pilihan kedalaman, dan konfirmasi
untuk pengiriman.
Gambar 3.13 Tombol keypad Mobile Scanner
78
Pengguna dapat memberikan perintah kepada Mobile Scanner lewat tomboltombol 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:
79
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.1 Diagram 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.2 Diagram Alir Diagram alir untuk program pada PC yang menangani tampilan pada monitor dan melayani Mobile Scanner.
80
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%.
81
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 nomor serial port yang akan digunakan adalah COM1.
82 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 atau 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 . Jika karakter ini ditemukan, maka sebuah paket data telah selesai diambil dan jalan program akan dialihkan ke acknowledgment paket dan parsing paket data yang didapat tersebut.
83
Gambar 3.17 Sub-rutin untuk mengecek serial port
84
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 sebuah sub-rutin.
85
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
86 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 yang baru saja didapat tersebut.
87
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 mengupdate posisi dan waktunya sekali setelah Terminal dijalankan. Bila menerima sentence TPF ini setelah Terminal telah mendapat update, maka sentence TPF ini akan diabaikan.
88
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 sequence number 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) maka sentence tersebut akan dikirim ulang. Setiap sentence yang ada di antrian ini di-tag
89 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.3 Rancang Bangun
Gambar 3.22 Rancangan Graphical User Interface dari Terminal
Gambar di atas merupakan rancangan tampilan dari program Terminal. Program ini menampilkan titik-titik ikan yang dikirimkan oleh Mobile Scanner.
90 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-tomultipoint. 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.
91 1 2 3 4 5 6 7 | | | | | | | #LLK,hhmmss.sss,ddmm.mmmm,a,dddmm.mmmm,a,xxxx*xx
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.
1 2 3 4 5 6 7 | | | | | | | #TPF,hhmmss.sss,ddmm.mmmm,a,dddmm.mmmm,a,xxxx*xx
Gambar 3.25 Format sentence Posisi Fix Terminal
92 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.
1 2 3 4 5 6 7 8 | | | | | | | | #LTI,hhmmss.sss,ddmm.mmmm,a,dddmm.mmmm,a,xxxx,xxxxx*xx
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
93 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. 1 2 | | #PTI,xxxx*xx
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.
94 1 2 | | #PTT,xxxx*xx
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.
1 2 3 4 5 6 7 | | | | | | | #KTI,dd.ddddd,a,ddd.ddddd,a,xxxx,xxxxx*xx
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
95 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
1 2 3 4 5 6 | | | | | | #KTT,dd.ddddd,a,ddd.ddddd,a,xxxx*xx
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.
96 1 | #ACK*xx
Gambar 3.31 Format sentence Acknowledgment
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 Channel Initialization Time Data In ke modem pengirim 50byte, 9600bps Data out dari modem penerima 50byte, 9600bps Latensi pengiriman data lewat RF Total
Waktu(ms) 35.00 41.67 41.67 82.77 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
97 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.
98
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 lain nilai warna dan nilai resolusi. Setiap pixel dari peta ini menggambarkan keadaan
99 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
111230m 1 × = 11,123meter . Ini adalah resolusi peta untuk zoom 100%. Bila zoom 10000 100% peta 25%, maka satu pixel mewakili
3.4.7
111230m 1 × = 44,492meter . 10000 25%
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 111,1329 + 111,3195 = 111,23 km. Hal demikian dilakukan untuk simplifikasi 2 perhitungan pada sistem, karena beberapa pertimbangan, yaitu:
100 •
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: (111,23 – 107,53) = 3,7 km/drjt.
101 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 semantic analysis. 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.
•
Setiap token selanjutnya (field data) akan diawali dengan tanda koma “ , ”
102 •
Field data terakhir akan diikuti oleh tanda asterisk “ * “
•
Dua karakter setelah tanda asterisk adalah ACK number.
•
Paket data diakhiri dengan dan . Ketika sebuah paket data telah selesai diterima, yaitu jika ditemukan karakter
dan , 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: void paintEvent(QpaintEvent *event)
103 Fungsi ini merupakan fungsi yang dijalankan oleh Qt setiap event painting didispatch. QWidget memiliki sebuah slot yang akan memasukkan event QpaintEvent ke dalam event loop, 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.1 Penentuan 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
104 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.2 Algoritma 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
digambar di koordinat (1500,1500).
105 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).
106
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:
Gambar 3.34 Arah mata angin dan pengkodeannya
107 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.
108 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. o Jika koordinat titik ikan sama dengan posisi kapal, maka diberi kode 1.
109 •
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 dengan baud rate standar adalah sebagai berikut:
110 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 retry count 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
111 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
ATBD 03<ENTER>
OK
ATDT FFFF<ENTER>
OK
ATMY 0000<ENTER>
OK
ATRR 03<ENTER>
OK
ATWR<ENTER>
OK
ATCN<ENTER>
OK
Tabel 3.4 Pengaturan untuk XStream pada Terminal
112
AT-Command yang dikirim
Respon Modul
+++
OK
ATBD 03<ENTER>
OK
ATDT 0000<ENTER>
OK
ATAM<ENTER>
OK
ATRR 03<ENTER>
OK
ATWR<ENTER>
OK
ATCN<ENTER>
OK
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: UBRR =
f OSC 14745600 −1 = − 1 = 95 desimal 16 × 9600 16 × (baudrate )
113 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 RS232. IC yang dapat digunakan untuk tujuan ini adalah MAX232.
114
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 mikrokontroler harus memiliki kecepatan yang cukup untuk melayani transfer data.
115
Untuk mengambil data dari SFR SBUF, diperlukan Daftar Perintah jump mov SBUF->REGISTER mov REGISTER-->RAM clear SBUF total
Clock Cycle 3 2 2 1 8
Tabel 3.6 Perkiraan Clock cycle pengambilan data dari buffer Mikrokontroler menggunakan clock 14,7456MHz. Satu clock cycle menggunakan waktu
1 = 0,0678μs 14,7456MHz
Satu byte time dari transfer data asinkron 4800bps:
1 × 8 = 1,666 ms 4800
Supaya tidak terjadi buffer overflow, maka T(eksekusi perintah) < T(byte UART) 0,0678 × 8μs < 1,666 ms 0,5424 μs < 1,666 ms
Setiap selesai mengirimkan sebuah paket data, modul GPS menunggu paket ACK dari mikrokontroler sebelum mengirimkan paket data selanjutnya.
116
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 R/W digunakan untuk memasukkan atau membaca perintah/data.