Catatan
Daftar Isi
AbstrakBeberapa tahun ini jaringan sensor nirkabel (JSN) telah memberikan trobosan dalam bidang monitoring dari monitoring curah hujan di kebun hingga monitoring detak jantung di bidang kesehatan. Teknologi ini dikenal atas konsumsi energi yang sangat rendah dan sederhana, bahkan saat ini sedang dikembangkan agar dapat beroperasi tanpa sumber daya, melainkan menggunakan energi sekitar yang tersedia seperti menggunakan masukkan energi dari gelombang elektromagnetik stasiun TV. JSN awalnya fokus pada data yang dapat dikirim pada kapasitas kanal bit rate rendah. Di penelitian ini lebih kepada JSN dengan kapasitas kanal bit rate yang lebih tinggi agar dapat transmisi data multimedia khusus disini adalah transmisi citra, sehingga istilah JSN dapat diturunkan menjadi jaringan sensor visual nirkabel (JSVN). Platform yang digunakan adalah Imote2 dengan radio berbasis IEEE 802.15.4 ZigBee serta ciri khas utama dari penelitian ini adalah mengimplementasi embedded system Linux, yang belum pernah dilakukan sebelumnya. Selama ini tidak ada publikasi yang mendeskripsikan skema transmisi citra di Imote2 Linux, dengan kata lain belum ada informasi yang berkaitan dengan transmisi citra. Di penelitian ini dibahas secara detil skema transmisi citra antar Imote2 Linux versi penulis serta skema agar dapat difungsikan sebagai testbed, mulai dari aplikasi yang ditulis dalam bahasa C, kompilasi beberapa kebutuhan testbed, hingga implementasi testbed. Selebihnya kinerja dari Imote2 Linux diuji dengan mentransmisikan citra tanpa kompresi dan dengan kompresi standar JPEG2000 dimana kompresi dilakukan di embedded system Imote2 Linux oleh software OpenJPEG. Hasil menunjukkan perbedaan yang signifikan antara transmisi tanpa kompresi dengan transmisi dengan kompresi. BAB 1 Pendahuluan1.1 Latar BelakangJSN (Jaringan sensor nirkabel) atau lebih dikenal dengan WSN (wireless sensor network) merupakan suatu sistem jaringan nirkabel yang menggunakan perangkat sensor untuk mendapatkan informasi. Sensor-sensor ini didistribusikan di suatu wilayah yang saling terhubung secara nirkabel (membentuk jaringan) untuk mengumpulkan informasi yang ada di sekitarnya seperti pada Gambar 1.1. JSN ini telah diterapkan di bidang sipil, medis, dan lain-lain (Shwe dkk, 2013). Terdapat beberapa jenis sensor antara lain sensor suhu, gerak, kadar keasaman, suara, dan kamera. Pada penelitian ini digunakan WVSN (Wireless Visual Sensor Network) atau JSVN (Jaringan Visual Sensor Nirkabel), yaitu JSN yang berbasis sensor kamera. Salah satu contoh penerapan JSN adalah penelitian Garcia-Sanchez (2010) tentang pemantauan hewan liar terhadap infrastruktur transportasi yang berada di alam liar. Hal yang dipantau adalah interaksi hewan seperti frekuensi dan waktu hewan melintasi jalan raya atau underpass, lama hewan berada pada tempat tersebut, dan bagaimana sikap hewan terhadap infrastruktur transportasi tersebut. Dari pemantauan ini dapat dilihat apakah infrastruktur transportasi aman, menarik perhatian hewan, secara keseluruhan bagaimana keadaan infrastruktur transportasi dan keadaan alam disekitarannya. Pemantauan dilakukan dengan memasang sensor kamera dan sensor gerak platform Imote2 di wilayah infrastruktur transportasi seperti gerbang masuk underpass, dalam underpass, tepi jalan raya, diatas pohon, atau jurang seperti Gambar 1.2. Beberapa faktor seperti tidak ada power source (sumber daya), lingkungan yang tidak memungkinkan untuk instalasi perangkat besar seperti jurang, zona berbahaya, dataran yang tidak merata/miring, dan kondisi mahkluk hidup sekitar yang sensitif (cenderung menyerang perangkat atau menghidari perangkat tersebut), ataupun faktor waktu yang membutuhkan pemantauan segera sehingga tidak mungkin untuk menghabiskan waktu untuk instalasi perangkat besar, dan banyak faktor-faktor lainnya, contoh serupa di bidang militer untuk mendeteksi keberadaan musuh harus menggunakan perangkat minimalis dan berukuran kecil agar tidak mudah dideteksi, untuk hal ini JSN merupakan suatu pilihan karena praktis untuk diterapkan. Penelitian JSN saat ini mengarah pada penghematan energi dengan tetap memaksimalkan kinerja dengan kata lain, mendapatkan informasi sebanyak mungkin dengan konsumsi energy seminimal mungkin.Hal ini dikarenakan JSN memiliki sumber daya yang dan kemampuan komputasi yang terbatas. Imote2 sendiri menggunakan 4 batterai AAA sebagai sumber daya, memiliki kemampuan processing 13-416 MHz, program memory 32 MB, RAM (Random Access Memory) 256 kB sebagai tempat penampung sementara pada tahap processing, dan transmission rate maksimum 250 kbps point-to-point. Walaupun spesifikasi Imote2 unggul dibanding dengan platform lainnya seperti terlihat pada Tabel 1.1 tetapi masih jauh dibanding dengan PC (Private Computer) sekarang yang memiliki spesifikasi minimal processor > 1 GHz, RAM > 1 GB, dan kapasitas harddisk > 50 GB. Dari keterbatasan tersebut salah satu upaya penghematan adalah penentuan media transmisi yang tepat. Terdapat banyak jenis standar untuk media transmisi nirkabel seperti WLAN (Wireless Local Area Network), Broadband Wireless, dan WPAN (Wireless Personal Area Network). WLAN distandarkan pada IEEE 802.11 memiliki jakauan yang luas > 1 km dengan max data rate 54 Mbps pada IEEE 802.11g, standar ini lebih cocok untuk komunikasi nirkabel pada komputer. Broadband Wireless memiliki jangkauan yang lebih luas dengan max data rate IEEE 802.16m 100 Mbps lebih dikenal dengan WMAN (Wireless Metropolitan Area Network). Namun dari hasil penelitian sebelumnya yaitu penelitian Wiasta (2012), Natha (2012), dan penulis sendiri Purnama (2013) tidak effisien dalam transmisi data biner menggunakan WLAN. Hasilnya jauh bila dibandingkan dengan menggunakan standar WPAN dapat dilihat pada Gambar 1.3. Untuk perangkat portable disediakan standar IEEE 802.15 WPAN. IEEE 802.15.1 Bluetooth menyediakan maxdata rate 723.2 kbps dengan jangkauan 10 meter biasa digunakan untuk transmisi suara dan data, diaplikasikan pada handphone dan gadget. IEEE 802.15.2 mengatur komunikasi antar WPAN dengan jaringan nirkabel lainnya. IEEE 802.15.3 HR-WPAN (High Data Rate Wireless Personal Area Network) dengan data rate 11-55 Mbps dengan jangkauan > 70 meter biasa digunakan untuk multimedia. Yang cocok untuk digunakan pada JSN adalah standar IEEE 802.15.4 LR-WPAN (Low Data Rate Wireless Personal Area Network) karena bersifat konsumsi daya rendah dan data rate 20, 40, 250 kbps point-to-point dengan jangkauan 10 meter (Ahmad, 2005). IEEE 802.15.4 mengembangkan PHY layer, MAC layer, dan NWK layer, sedangkan Zigbee mengembangkan application layer selengkapnya dapat dilihat di BAB II. Keterbatasan transmisi pada IEEE 802.15.4 Zigbee adalah data rate maksimal 250 Kbps point-to-point dengan PHY layer maksimal besar paket adalah 127 byte dikurangi dengan header 89 byte. Fragmentation dan reassembly tidak dilakukan pada NWK layer oleh karena itu harus dikembangkan aplikasi pada application layer untuk fragmentation dan reassembly serta disesuaikan untuk transmisi citra (Pekhteryev, 2005). Upaya lain adalah menggunakan sistem operasi yang ringan. Sebelumnya Imote2 bekerja pada Intel Platform X. Setelah Imote2 Pindah ke Crossbow, Intel Platform X tidak lagi dikembangkan karena Crossbow mengeluarkan sistem operasinya sendiri. Sistem operasi yang digunakan kebanyakan sistem operasi yang dikembangkan oleh komunitias seperti SOS (Simple Operating System) tetapi SOS berhenti dikembangkan sejak tahun 2008. Sekarang ini yang digunakan adalah TinyOS dan yang terbaru Linux. Kebanyakan publikasi di web menggunakan TinyOS. Sekarang dikembangkan embedded Linux karena ditemukan batasan-batasan pada TinyOS seperti routing yang kompleks. Komunitas embedded Linux memandang sistem operasi Linux pada Imote2 dapat mengatasi keterbatasan tersebut. Namun embedded Linux pada Imote2 masih bersifat baru dan sedang dikembangkan (Kasteleiner, 2010). Alasan utama digunakan Linux karena bersifat opensource yang artinya gratis, terbuka dan boleh dikembangkan oleh siapapun. Penelitian ini mengarah ke emebedded system Imote2 Linux. Sebelum telah berhasil mengembed Linux ke platform Imote2 dan berhasil mengirim data acak maksimal 28 byte, kali ini agar Imote2 Linux dapat mentransmisikan citra dengan radio berbasis IEEE 802.15.4 ZigBee. Setelah dapat melakukan transmisi akan diamati kinerja transmisi Imote2 Linux. 1.2 Rumusan Masalah
1.3 Tujuan Penelitian
1.4 Manfaat Penelitian
1.5 Batasan Masalah
BAB 2 Tinjauan Pustaka2.1 Penelitian SebelumnyaPada penelitian sebelumnya adalah implementasi embedded Linux pada JSVN platform Imote2. Pertama Imote2 menggunakan sistem operasi dari Crossbow. Setelah itu diinstalasi TinyOS, sekarang dicoba digunakan embedded Linux. Ada 3 hal yang dibahas yaitu prosedur instalasi embedded Linux, konfigurasi pasca instalasi, dan diamati kinerja JSVN platform Imote2 dengan mengukur memory yang dikonsumsi dan daya listrik yang dikonsumsi saat mentransmisikan data biner. Prosedur instalasi meliputi cross compile Linux kernel dan driver ke arsitekur ARM yaitu yang digunakan oleh Imote2, penyiapan bootloader dan filesystem, dan pengembedan/pemasukan bootloader, kernel, dan filesystem ke Imote2 menggunakan software OpenOCD chip debugger. Untuk melakukan hal ini diperlukan komputer dengan sistem operasi Linux. Pasca pengembedan/pemasukan diaktifkan jaringan IP (Internet Protocol), SSHD (Secure Shell Daemon), dan radio melalui Telnet. Perintah untuk konfigurasi hal tersebut bersifat umum yang digunakan pada Linux berbasis Debian, Ubuntu, dan sejenisnya. Tahap akhir penelitian adalah mengamati kinerja pentransmisian data biner pada jarak 10m, 20m, dan 30m. Transmisi dicoba pada 2 jenis media transmisi nirkabel yaitu IEEE 802.11 WLAN dan IEEE 802.15.4 Zigbee juga disebut LR-WPAN. Perlu ditambahkan catu daya dan perangkat radio WLAN TP-LINK untuk mengimplementasikan WLAN. Dibuatkan daughter board untuk menghubungkan perangkat, dari segi software dibutuhkan driver.Sedangkan pengimplementasian Zigbee telah tersedia di Imote2, tinggal menjalankan driver dan membuat script untuk mentransmisikan data biner. Pada hasil akhir Zigbee lebih hemat dari segi konsumsi tegangan dan arus listrik dapat dilihat pada Gambar 2.1, Gambar 2.2, dan Gambar 2.3. Nilai konsumsi daya listrik adalah hasil perkalian dari tegangan dan arus listrikpada gambar sebelumnya yaitu gambar 1.2 (Natha, 2012, Wiasta, 2012, Purnama, 2013). 2.2 Tinjauan Mutahir (State of The Art)Penelitian ini adalah lanjutan dari penelitian sebelumnya yang akan meneliti kinerja JSVN platform Imote dengan sistem operasi embedded Linux dalam mentransmisikan citra melalui media transmisi berbasis IEEE 802.15.4 Zigbee. Jika sebelumnya hanya mentransmisikan data biner, kali ini mentransmisikan citra. Diutamakan mengunakan media transmisi berbasis IEEE 802.15.4 Zigbee karena terbukti sebelumnya lebih effisien. Gagasan untuk meneliti pentransmisian citra dengan 4 skalabilitas yang berbeda berdasarkan wavelet (tahap penelitian pada BAB III) didapatkan dari penelitian Nasri (2010). Penelitian Nasri (2010) meneliti penerapan JPEG2000 secara distributif transmisi citra pada JSVN. Secara rinci skema JSVN dibagi atas 7 cluster (7 kelompok perangkat JSVN) dimana masing-masing cluster diberi sebagian tahap standar kompresi JPEG2000 (JPEG200 dapat dilihat pada sub-bab 2.6) dapat dilihat pada Gambar 2.4. Dengan skenario ini muncul gagasan untuk mentransmisikan citra dengan skalabilitas yang berbeda berdasarkan standar JPEG2000 dalam penelitian pada penulisan ini.
Secara ringkas hasil konsumsi energi tertinggi ada pada cluster pertama dan kedua, selanjutnya konsumsi energi bersifat menurun dari cluster kedua hingga ketuju. Hasil didapatkan dengan menggunakan rumus konsumsi energi khusus tahap JPEG2000, dengan kata lain Penelitian Nasri (2010) bersifat simulasi, bukan penelitian yang menggunakan perangkat langsung. Penelitian berkaitan adalah kinerja kompresi dan transmisi menggunakan IJG (Independent JPEG Group) library pada platform Imote2 dengan TinyOS berdasarkan hasil penelitian oleh Mowafi (2010). Skenario berupa koneksi single-hop atau point-point dimana perangkat JSVN melakukan kompresi JPEG terhadap citra terlebih dahulu sebelum melakukan transmisi. Citra dikompresi dengan quality factor lipatan 5 dari 95-5. Diukur waktu dan drop tegangan saat kompresi dan transmisi serta diukur PSNR citra. Hasil pengukuran menunjukan konsumsi waktu dan tegangan terhadap proses kompresi citra relatif sama terhadap nilai quality factor, dengan nilai mendekati 0. Sedangkan hasil pengukuran transmisi menunjukan memerlukan waktu dan tegangan rata-rata 14 detik dan 0.45 mV pada quality factor 95 dan menurun hingga 1 detik dan 0.03 mV pada quality factor 5. Rentang PSNR dari quality factor 95-5 adalah 47-28 dB.Sehingga kompresi citra JPEG membantu untuk menghemat waktu dan energi dalam transmisi citra. Hasil penelitian dapat dilihat dari pada Gambar 2.5. Pada makalah lain Mowafi (2012) mengimplementasikan IJG dan JPEG2000. Dilakukan variasi quality factor pada IJG dan Compression Ratio pada JPEG2000 dengan menemukan besar file yang sama pada kedua teknik kompresi tersebut. Setelah itu dilakukan perbanding terhadap kedua teknik kompresi tersebut dengan mengukur waktu untuk kompresi, waktu transmisi setelah kompressi, dan konsumsi energi terhadap bit rate. Pengukuran PSNR dari kedua teknik kompresi tersebut juga dilakukan berdsarkan besar file. Terakhir dilakukan simulasi dengan multi-hop sensor dimana waktu dan komsumsi energi menjadi tolak ukur terhadap kedua teknik kompresi tersebut.Parameter didapatkan dari penelitian single-hop sebelumnya. Hasilnya JPEG2000 unggul di sisi PSNR, konsumsi daya listrik saat transmisi, dan waktu transmsisi tetapi JPEG unggul di sisi konsumsi daya listrik dan waktu saat kompresi. Konsumsi saat kompresi pada JPEG paling sedikit dibanding dengan askpek lain, sedangkan konsumsi saat kompresi pada JPEG2000 sebaliknya yaitu paling besar, dari proses keseluruhan kompresi dan transmisi. Hasil penelitian dapat dilihat pada Gambar 2.6. Sehingga disimpulkan JPEG lebih efisien pada JSVN dengan hop (lompatan) yang pendek karena hemat di sisi kompresi, tidak membutuhkan jalur transmisi yang panjang. Jika dengan hop yang panjang disarankan menggunakan JPEG2000 karena lebih hemat di sisi transmisi. JSVNakan lebih optimal bila diterapkan teknik kompresi yang bervariasi agar bersifat fleksibel terhadap keadaan. Penelitian Pekhteryev (2005) adalah mentransmisikan citra pada jaringan IEEE 802.15.4 dan Zigbee sangat mirip dengan penelitian ini. Disebabkan oleh kapasitas transmisi yang sangat terbatas dan tidak disediakan fitur fragmentation dan reassembly pada NWK layer diharuskan membuat suatu aplikasi dengan fitur tersebut. Penelitiannya adalah mengamati jumlah pengiriman citra yang error dari pengiriman 100 citra JPEG dan 100 citra JPEG2000 pada jaringan 1-hop dan 2-hop seperti Gambar 2.7, hasil dapat dilihat pada Gambar 2.8 dan 2.9. Penelitian ini mengimplementasikan transmisi citra pada transmisi IEEE 802.15.4 Zigbee seperti penelitian Pekhteryev (2005). Perbedaan dari penelitian ini adalah penelitian Pekhteryev (2005) menggunakan perangkat M16C mikrokontroller dan lebih menganalisis error transmisi sedangkan penelitian ini menggunakna perangkat platform Imote2 dan lebih menganalisis effisiensi energi transmisi. Selanjutnya akan dicoba bila citra dikompresi terlebih dahulu menggunakan standar JPEG2000 sebelum ditransmisikan seperti penelitian Mowafi (2012). Perbedaan dari penelitian ini dengan Mowafi (2010, 2012) adalah sistem operasi yang digunakan, penelitian Mowafi (2010, 2012) menggunakan TinyOS sedangkan penelitian ini menggunakan embedded Linux. Selain itu tidak ada penelitian (dari pengetahuan penulis) yang membahas skema transmisi citra pada JSVN IEEE 802.15.4 Zigbee khususnya di embedded system Imote2 Linux. Inti dan perbedaan mendasar dari penelitian ini terhadap yang lain adalah dibuat program transmisi citra dalam bahasa C dan skema agar dapat berfungsi sebagai testbed di Imote2 Linux. 2.3 Daya ListrikDaya listrik merupakan tenaga listrik, secara matematis didefinisikan sebagai energi listrik yang dihasilkan per waktu. P=dw/dt (2.1) Dimana: p = daya listrik (watt) w = energi listrik (joule) t = waktu (detik) Daya listrik dapat dibentuk dari perkalian tegangan listrik dan arus listrik. Jika tegangan listrik adalah energi listrik rata-rata per muatan listrik, dan arus listrik merupakan muatan listrik yang mengalir tiap detik maka perkalian kedua variabel tersebut menghasilkan daya listrik (Irwin, 1993). V=dw/dq, I=dq/dt, VI=(dw/dq)(dq/dt)=(dw/dt)=P (2.2) Dimana: V = tegangan listrik (volt) q = muatan listrik (coloumb) I = arus listrik (ampere) 2.4 Standar IEEE 802.15.4 ZigbeeStandar ini merupakan kerjasama antar IEEE (Institute of Electronic and Electrical Engineer) dan ZigBee. IEEE fokus mengembangkan standar pada layer dibawahnya yaitu PHY (Physical) layer dan MAC (Media Access Control) atau datalinklayer. Sedangkan ZigBee fokus mengembangkan layer diatasnya, sampai application layer. Standar IEEE 802.15 khusus pada WPAN (Wireless Personal Area Network) dengan tujuan konsumsi daya listrik rendah, jarak pendek, dan ukuran alat kecil. Jika 802.15.1 (bluetooth) merupakan standar menengah, 802.15.3 merupakan HR(high rate)-WPAN dengan data rate tinggi, maka 802.15.4 merupakan LR(low rate)-WPAN dengan data rate rendah namun konsumsi daya listrik rendah. Sedangkan 802.15.2 merupakan standar untuk menghubungkan antar jenis perangkat wireless (Ergen, 2004). 2.4.1 PHY LayerMerupakan layer paling bawah yang mengatur transmisi. Pembentukan symbol menggunakan modulasi O-QPSK (Offset Quadriture Phase Shift Keying) untuk mengurangi konsumsi pada transmisi. Operating frequency bands dibagi atas 27 channel berdasarkan DSSS (Direct Sequence Spread Spectrum) seperti pada gambar 2.11. Channel 0 berada pada frekuensi 868.3 MHz dengan data rate 20 Kbps, channel 1-10 berada pada frekuensi 902 Mhz dengan jarak antar channel 2 MHz dengan data rate 40 Kbps, dan channel 11-26 berada pada frekuensi 2.4 GHz dengan jarak antar channel 5 MHz dengan data rate 250 Kbps. Sensitivitas minimum channel 0-10 -92dBm sedangkan channel 11-26 adalah 85 dBm (Ergen, 2004), selengkapnya dapat dilihat pada tabel 2.1. Fitur dari PHY layer (Ergen, 2004):
2.4.2 MAC LayerMAC layer merupaka layer yang mengatur aliran data dari PHY layer menuju network layer dan sebaliknya. Suatu perangkat dapat berupa FFD (Full Function Device) atau RFD (Reduced Function Device). Suatu FFD dapat berfungsi sebagai PAN (Personal Area Network) coordinator, coordinator, atau member. MAC layer mengatur perangkat sebagai berikut (Ergen, 2004):
2.4.3 Network LayerNetwork layer mengatur jaringan termasuk mekanisme routing. Pada layer ini secara umum menggunakan dua algoritma yaitu AODV (Ad Hoc On Demand Distance Vector) dan Cluster-Tree algorithm milik Motorola (Ergen, 2004).
2.4.4 Application LayerLayer ini terdiri dari application framework dan application support (APS) sublayer. Application framework mengatur komunikasi yang menghubungkan antara end-user dengan layer dibawah application. Sedangkan application support sublayer mengatur hubungan antara application framework dan network layer, secara spesifik mengatur application profile, cluster, dan endpoints. Application profile menggambarkan sekumpulan perangkat yang berkerja pada suatu aplikasi spesifik, contohnya application profile untuk home automation system dan commercial, industry dan institutional. Suatu perangkat pada sebuah application profile berkomunikasi dalam sebuah cluster, contohnya pada home automation profile terdapat cluster yang mengatur subsistem pencahayaan. Sedangkan endpoints merupakan entitas komunikasi, yang telah ditentukan mengenai aplikasi yang dijalankan contohnya tombol pada remote control. Hal yang penting dari application support sublayer adalah binding, dimana disini diartikan sebagai penghubung antar endpoints contohnya untuk menghidupkan lampu dengan tombol pada remote. Binding dapat bersifat direct maupun indirect. Hubungan langsung antara remote dengan lampu merupakan direct binding. Yang bersifat indirect binding terdapat penerus diantara remote dengan lampu, biasanya terdapat cluster library. Perintah pada cluster library ada yang dapat dipakai bersama, hanya perlu ditambahkan cluster ID pada perintah tersebut, contohnya perintah on/off yang perlu ditambahkan cluster ID terhadap perangkat yang dituju (Daintree Network, 2006). Fragmentation dan reassembly tidak dilakukan pada NWK layer oleh karena itu harus dikembangkan aplikasi pada application layer untuk fragmentation dan reassembly serta disesuaikan untuk transmisi citra (Pekhteryev, 2005). 2.5 Intel Mote 2 (Imote2)Imote2 merupakan platform pada perangkat JSN yang dikembangkan oleh Intel Research pada bagian penelitian Platform X. Perangkat ini dibangun dengan konsumsi daya listrik yang rendah, dengan processor PXA271 XScale CPU, dan terintegrasi pada IEEE 802.15.4 ZigBee (Stanford, 2013). Processor ini (Intel Xscale processor PXA271) dapat beroperasi pada tegangan rendah (0.85V) dan frekuensi 13MHz hingga 104MHz. Frekuensi dapat dinaikkan hingga 416MHz dengan mengatur tegangan. Secara umum Imote2 terdiri dari 4 bagian seperti terlihat pada Gambar 2.21. 2.5.1 Radio Processor Board IPR2400Spesifikasi IPR2400 dapat dilihat sebagai berikut (crossbow, 2007):
2.5.2 Interface Board IIB400Spesifikasi IIB400 dapat dilihat sebagai berikut (crossbow, 2007):
2.5.3 Sensor Board IMB400Spesifikasi IMB400 dapat dilihat sebagai berikut (crossbow, 2007):
2.5.4 Power Supply Board IBB2400Spesifikasi IBB2400 dapat dilihat sebagai berikut (crossbow, 2007):
2.6 JPEG2000JPEG2000 merupakan standar kompresi citra yang dikembangkan oleh JPEG (Joint Photographic Expert Group) sekitar tahun 2000 dengan harapan standar kompresi citra ini yang berdasarkan DWT (Discrete Wavelet Transform) memberikan kualitas yang lebih baik dari pada standar kompresi citra sebelum yang dikembangkan pada tahun 1992 yaitu JPEG yang berdasarkan DCT (Discrete Cosine Transform). Adapun keunggulan JPEG2000 dengan JPEG sebagai berikut:
Secara umum teknis dari kompresi citra JPEG2000 dapat dilihat pada gambar 2.22 dan sebaliknya bersifat terbalik. Standar kompresi citra JPEG2000 diatur pada ISO/IEC 15444 yang terdiri dari 14 bagian, karakteristik dasar dari JPEG2000 diatur pada bagian pertama yaitu ISO/IEC 15444-1 core coding system. Pengkodean pada JPEG2000 dapat dilihat pada gambar 2.23. 2.6.1 Codestream syntaxSebelum citra dapat dilakukan DWT, maka citra tersebut harus dikonversi menjadi sinyal. Hal tersebut dilakukan pada bagian codestream syntax. Pada bagian ini terdapat header baik header inti atau header tile. Header terdiri dari beberapa marker segment yang mengandung informasi minimalis mengenai suatu komponen, contohnya besar tile, ROI (Region of Interest), dan kuantisasi, dapat dilihat pada Tabel 2.2 dan Tabel 2.3 (Boliek, 2000). 2.6.2 Data OrderingPada bagian ini dilakukan pembagian suatu citra menjadi beberapa komponen. Pada bagian inilah dilakukan tiling seperti gambar 2.24 yaitu pembagian citra menjadi kotak-kotak, sehingga pengkodean tidak harus dilakukan pada seluruh citra, pengkodean dapat dilakukan pada bagian tertentu, contohnya peningkatan resolusi dapat dilakukan pada bagian tertentu tidak harus seluruh citra. Setelah itu tile-tile tersebut dibagi atas beberapa resolusi dan sub-band antara lain terdapat sub-band LL, LH, HL, dan HH seperti pada Gambar 2.25. Resolusi dibagi menjadi precincts, dan sub-band dibagi menjadi code-blocks. Data tersebut didistribusi pada 1 atau lebih layer dimana informasi kandungan masing-masing layer disimpan dalam paket. Terakhir adalah progression order yang memungkinkan multiresolusi, tingkat resolusi akan meningkat seiring dengan pengiriman data, dengan kata lain tidak perlu mengambil semua data untuk menampilkan citra (Boliek, 2000). 2.6.3 Arithmetic Entropy CodingSetelah mendapatkan koefisien tahap selanjutnya adalah arithmetic entropy coding dimana suatu informasi direpresentasikan dalam bentuk digital. JPEG2000 menggunakan Elias entropy coding dimana suatu integer positif x direpresentasikan sebagai 1 + floor(log(2)x). Karena citra telah dibagi atas beberapa tile maka coding dilakukan pada masing-masing tile (Boliek, 2000). 2.6.4 Coefficient Bit ModelingPada bagian ini informasi yang penting atau langka muncul disaring. Masing-masing koefisien pada sub-band telah dibagi menjadi code blocks seperti gambar 2.26. Setelah itu code block siap untuk memasuki coding passes. Coding passes terdiri dari 3 yaitu (Boliek, 2000):
2.6.5 QuantizationKuantisasi merupakan proses pembulatan koefisien. Pada JPEG2000 digunakan rumus 2.3 untuk mencari stepsize kemudian menggunakan rumus 2.4 kuantisasi (Boliek, 2000). âb=2Rbâεb(1+(μb/2)) (2.3) âb : stepsize Rb : dinamic range sub-band b εb : eksponen μb : mantisa q(u,v)=sign(ab(u,v))(ab(u,v)/âb) 2.4 2.6.6 TransformPada standar JPEG2000 FDWT (Foward Discrete Wavelet Transform) dilakukan pada masing-masing tile. FDWT melewati koefisien tile dengan low pass filter dan high pass filter untuk mendapatkan koefisien low pass dan koefisien high pass. Level pertama FDWT menghasilkan sub-band LL (Low-Low) yang terdiri koefisien low pass vertical dan low pass horizontal, LH (Low-High) yang terdiri koefisien low pass vertical dan high pass horizontal, HL (High-Low) yang terdiri koefisien high pass vertical dan low pass horizontal, dan HH (High-High) yang terdiri koefisien high pass vertical dan high pass horizontal. Level seterusnya dilakukan FDWT pada sub-band LL, dan sub-band LL baru yang dihasilkan tergantung level yang ditentukan seperti gambar 2.27. Koefisien low pass vertical didapatkan dengan mengaplikasikan low pass filter terhadap tile secara vertikal sedangkan koefisien low pass horizontal didapatkan dengan mengaplikasikan low pass filter terhadap tile secara horizontal dan seterusnya. Pada sisi decoder dilakukan proses IDWT (Inverse Discrete Wavelet Transform) yaitu proses kebalikan dari FDWT (Boliek, 2000). 2.6.7 DC Level, Component TransformForward DC level shift dilakukan sebelum melakukan FDWT. Setelah melakukan forward DC level dapat dilakukan forward component transform untuk mengefisienkan kompresi, namun proses ini boleh tidak dilakukan seperti gambar 2.28 (Boliek, 2000). 2.6.8 Region of InterestROI (Region of Interest) merupakan bagian citra yang akan dikodekan pada codestream terlebih dahulu dengan tujuan bagian ini diberikan kualitas yang lebih besar. Metode yang digunakan adalah Maxshift. Secara umum terdiri dari 4 langkah (Boliek, 2000).
2.7 Peak Signal to Noise RatioPSNR (Peak Signal to Noise Ratio) merupakan suatu ukuran umum digunakan untuk mengukur kualitas citra yang telah diolah terhadap aslinya. Pertama dilakukan perhitungan kesalahan terhadap citra yang telah diolah f(x,y) terhadap citra asli g(x,y). Setelah didapatkan nilai MSE (Mean Square Error) yang akan digunakan untuk mencari nilai PSNR (Shi, 2007). e(x,y)=f(x,y)â g(x,y) (2.5) e : error f : citra terolah g : citra asli x : koordinat horisontal y : koordinat vertikal MSE=(1/MN)ΣM-1x=0ΣN-1y=0e(x,y)2 (2.6) MSE : Mean Square Error M : dimensi horisontal citra N : dimensi vertikal citra PSNRdB=10log10(2552/MSE)dB (2.7) PSNR : Peak Signal to Noise Ratio dalam decibel BAB 3 Metode Penelitian3.1 Lokasi dan Waktu PenelitianPengamatan dan pengambilan data dilakukan di Laboratorium Sistem Komunikasi, Jurusan Teknik Elektro, Fakultas, Universitas Udayana, Jimbaran dan di ruang konferensi, GDLN, Kampus Sudirman, Universitas Udayana. Rencana jadwal penelitian dimulai dari akhir bulan Mei 2014 dan harus selesai sebelum akhir Nopember 2014 lebih detail terdapat di bagian Lampiran. 3.2 Sumber dan Jenis Data PenelitianSumber data dapat dikelompokkan 2 jenis:
Jenis data juga dikelompokkan menjadi 2 jenis:
3.3 Instrumen dan Bahan PenelitianInstrumen penelitian dapat dilihat pada Tabel 3.1 â Tabel 3.5. Perangkat JSVN Imote2 dapat dilihat pada Gambar 2.10.
Bahan penelitian merupakan citra yang ditangkap dari sensor kamera perangkat JSVN Imote2 pada tanggal 9 Mei 2014 di Laboratorium Sistem Komunikasi, Jurusan Teknik Elektro, Universitas Udayana dengan format Portable Pixelmap Graphic (.ppm), resolusi 480 x 640 pixel pada Gambar 3.1, dengan besar file 921.6 KB, dan media transmisi berbasis IEEE 802.15.4 Zigbee. 3.4 Tahapan PenelitianSecara keseluruhan tahap penelitian terdiri dari 2 tahap. Tahap pertama adalah tahap prosedur pengimplementasian transmisi citra menggunakan media transmisi IEEE 802.15.4 Zigbee pada JSVN platform Imote2 dengan sistem operasi embedded Linux. Dijelaskan mekanisme agar dapat mentransmisikan citra. Tahap kedua adalah testbed menguji kinerja JSVN dalam transmisi citra. Kinerja ditentukan oleh konsumsi daya listrik, waktu yang dibutuhkan untuk transmisi, dan besar memory yang digunakan. Secara umum gambaran tahapan dapat dilihat pada Gambar 3.2. 3.4.1 Implementasi IEEE 802.15.4 Zigbee untuk transmisi citraRadio di Imote2 dengan OS Linux dijalankan menggunakan driver Tosmac. Disediakan script oleh Tosmac untuk transmit dan receive yang akan disesuaikan untuk transmisi citra, dapat dilihat sebagai berikut: //************************************************************ // // blocking.c // // Gefan Zhang // //************************************************************* #include #include #include #include #include "tosmac.h" void msg_init(TOS_Msg* pMsg) { pMsg->length = 0; pMsg->fcfhi = 0; pMsg->fcflo = 0; pMsg->dsn = 0; pMsg->destpan = 0; pMsg->addr = 0; pMsg->type = 0; pMsg->group = 0; memset(pMsg->data, 0, TOSH_DATA_LENGTH); pMsg->strength = 0; pMsg->lqi = 0; pMsg->crc = 0; pMsg->ack = 0; pMsg->time = 0; } //--------------------- main ------------------------------- int main(int argc, char* argv[]) { int tosmac_dev; TOS_Msg recv_pkt; TOS_Msg send_pkt; // open as blocking mode tosmac_dev = open(TOSMAC_DEVICE, O_RDWR); if (tosmac_dev < 0) { fprintf(stderr, "Open error: %s\n", TOSMAC_DEVICE); return 1; } msg_init(&send_pkt); send_pkt.addr = 99; // memcpy(send_pkt.data, "DATA for test", 14); memcpy(send_pkt.data, "0000000000000", 14); send_pkt.length = 14; printf("User write to driver\n"); write(tosmac_dev, (TOS_Msg*)&send_pkt, sizeof(TOS_Msg)); // close device close (tosmac_dev); return 0; } //************************************************************ // // blocking.c // // Gefan Zhang // //************************************************************* #include #include #include #include #include "tosmac.h" void msg_init(TOS_Msg* pMsg) { pMsg->length = 0; pMsg->fcfhi = 0; pMsg->fcflo = 0; pMsg->dsn = 0; pMsg->destpan = 0; pMsg->addr = 0; pMsg->type = 0; pMsg->group = 0; memset(pMsg->data, 0, TOSH_DATA_LENGTH); pMsg->strength = 0; pMsg->crc = 0; pMsg->lqi = 0; pMsg->ack = 0; pMsg->time = 0; } //--------------------- main ------------------------------- int main(int argc, char* argv[]) { int tosmac_dev; TOS_Msg recv_pkt; TOS_Msg send_pkt; // open as blocking mode tosmac_dev = open(TOSMAC_DEVICE, O_RDWR); if (tosmac_dev < 0) { fprintf(stderr, "Open error: %s\n", TOSMAC_DEVICE); return 1; } printf("User read from driver:\n"); read(tosmac_dev, &recv_pkt, sizeof(TOS_Msg));// != sizeof(TOS_Msg); printf("length is %d\n", recv_pkt.length); printf("data is %s\n", recv_pkt.data); // close device close (tosmac_dev); return 0; } 3.4.2 TestbedTestbed menggunakan 2 perangkat JSVN Imote2 dimana satu berfungsi sebagai transmitter dan satunya lagi berfungsi sebagai receiver. Pada transmitter dilakukan penangkapan citra dengan sensor kamera. Pada transmitter dilakukan transmisi citra ke receiver melalui media nirkabel berbasis IEEE 802.15.4 Zigbee. Penangkap citra telah dilakukan di penelitian sebelumnya, oleh karena itu hanya diamati pada kompresi dan transmisi. Citra yang ditransmisi terdapat 2 jenis yaitu citra raw dari hasil penangkapan sensor IMB400 dan citra raw yang diolah berdasarkan standar JPEG2000 dengan rasio 1, 5, dan 10 dimana rasio adalah pembatas kapasitas saluran. Rasio 5 berarti jumlah bit dari citra terkompresi dibatasi maksimal 1/5 dari jumlah bit aslinya, dan rasio 10 bearti dibatasi maksimal 1/10 dari jumlah bit aslinya. Pada saat transmisi dilakukan pengukuran konsumsi daya listrik, memory, dan waktu pada transmitter. Pengukuran konsumsi daya listrik menggunakan multimeter dengan obyek pengukuran adalah baterai pada power supply board (IBB2400). Pengukuran daya listrik dilakukan dengan mengukur drop tegangan dan drop arus, dengan kata lain adalah selisih nilai daya listrik sebelum penelitian dan sesudah penelitian. Secara khusus mengukur konsumsi daya listrik dimulai dari pemberian perintah untuk transmisi oleh komputer hingga citra selesai ditransmisikan, demikian pula konsumsi waktu. Pengukuran konsumsi dimulai dari pemberian perintah oleh komputer bukan dari dimulainya transmisi citra karena juga melibatkan aspek sistem operasi yang digunakan yaitu embedded Linux. Data hasil pengukuran adalah dari satu kali penelitian. Memory berdasarkan tampilan dari Terminal saat akses transmitter. Citra yang telah ditransmisi dilakukan pengukuran PSNR. Secara umum testbed dapat dilihat pada Gambar 3.3, Skenario akan dijelaskan pada bagian berikut:
3.5 Alur AnalisisPada bagian ini akan digambarkan tahap penelitian secara diagram alur / flowchart pada Gambar 3.10, Gambar 3.11, dan Gambar 3.12. Penelitian keseluruhan sebagai berikut:
BAB 4 PembahasanSecara keseluruhan pada BAB ini dibahas program transmisi citra, Imote2 Linux sebagai testbed dari kompilasi program transmisi dan software kompresi JPEG2000 hingga pemberian perintah secara nirkabel ke Imote2 yang bertugas sebagai pengirim, dan bagian akhir pada BAB ini ditampilkan dan dianalisa kinerja dari perangkat Imote2. Dari hasil penelitian ternyata melakukan kompresi sebelum transmisi sangat membantu untuk meringankan beban transmisi, dan menariknya proses kompresi itu sendiri tidak terlalu membebankan perangkat, sehingga sangat dianjurkan untuk menggunakan kompresi. Inti dari penelitian ini adalah agar Imote2 Linux dapat difungsikan sebagai testbed. Jika diringkas kembali, penelitian sebelumnya telah berhasil mengembed Linux ke JSVN platform Imote2 dan mentransmisi data acak, maka di penelitian ini adalah untuk mentransmisikan data citra. Kode program pada subbab 3.4.1 adalah program untuk mengirim data karakter maksimal 28 byte, kemudian ditampilkan di layar. Untuk mengirim citra yang dalam bentuk file, kode tersebut harus dimodifikasi agar di sisi pengirim dapat membaca dan mengirim file, dan di sisi penerima dapat menerima dan menyimpan file tersebut (tidak sebatas ditampilkan di layar), juga harus dapat mentransmisikan file lebih dari 28 byte. Proses agar Imote2 Linux dapat berfungsi sebagai testbed dapat diringkas pada Gambar 4.1. Pertama membuat kode program, lebih lengkap dibahas di subbab 4.1. Kemudian program dikompilasi di subbab 4.2 dan subbab 4.3, dan diembed ke Imote2, illustrasi dapat dilihat pada Gambar 4.2. Terakhir Imote2 dikonfigurasi agar dapat menerima perintah via radio, dengan kata lain setelah transmitter dihidupkan, siap untuk menerima perintah, dapat diilustrasikan pada Gambar 4.3. Perintah dapat berupa mengkompresi, maupun mentransmisi citra seperti illustrasi pada Gambar 4.4. Hal ini dilakukan karena transmitter ditenagai dengan baterai (tanpa kabel), sehingga komunikasi hanya tersedia lewat radio. 4.1 Program TransmisiTransmisi menggunakan radio pada Imote2. Di penelitian sebelumnya dijelaskan pada subbab 2.1, menggunakan driver dari Tosmac untuk menjalan radio di Imote2 Linux, disini tetap menggunakan driver yang sama. Untuk transmisi diperlukan 2 program yaitu program untuk mengirim dan menerima. Kedua program tersebut ditulis dalam bahasa C. Khusus pada penelitian ini mengikuti ketentuan dari header tosmac yaitu payload data yang dikirim maksimal 28 byte. Secara keseluruhan di sisi pengirim membaca file citra yang akan dikirim, di penerima akan membuat file baru dan menulis data yang diterima ke file tersebut. Pengiriman dilakukan secara bertahap dengan memecah tile masing-masing berukuran 28 byte (tidak sekaligus). 4.2 Program PengirimSintaks berikut ini menunjukkan program pengirim dengan nama file âsend_file_advance.câ yang dilakukan pada penelitian ini dan dijelaskan sebagai berikut: 1 //************************************************************ 2 // 3 // blocking.c 4 // 5 // Gefan Zhang 6 // 7 //************************************************************* 8 // Modified by : Fajar Purnama Baris 1 â 8 merupakan komentar berisi informasi pembuat program dan penulis yang memodifikasi. Komentar dapat ditandai dengan â//â atau dimulai â/*â dan diakhiri dengan â*/â (yang tidak bold). Baris 5 merupakan penulis pertama dari program, sedangkan baris 8 merupakan nama penulis yang memodifikasi program. 9 #include 10 #include 11 #include 12 #include 13 #include Baris 9 â 13 menunjukkan header yang digunakan pada program ini, header berisi definisi kode yang digunakan. Untuk menggunakan header dapat menggunakan karakter â#â, karakter ini menunjukkan script yang dibutuhkan oleh program. Di baris 9 terdapat âstdio.hâ merupakan header dasar untuk semua program bahasa C yang mendefinisikan perintah âprintfâ untuk menampilkan ke layar, âwhileâ untuk looping, serta operasi arithmetic, dan masih banyak lainnya. Baris 10 âFcntl.hâ mendefinisikan perintah âopenâ untuk membuka file serta âcloseâ untuk menutup dan âcreateâ untuk membuat, baris 11 âunistd.hâ mendefinisikan perintah âreadâ untuk membaca file dan âwriteâ untuk menulis data ke file, dan baris 13 âtosmac.hâ mengatur variable pada driver tosmac (radio). 14 void msg_init(TOS_Msg* pMsg) 15 { 16 pMsg->length = 0; 17 pMsg->fcfhi = 0; 18 pMsg->fcflo = 0; 19 pMsg->dsn = 0; 20 pMsg->destpan = 0; 21 pMsg->addr = 0; 22 pMsg->type = 0; 23 pMsg->group = 0; 24 memset(pMsg->data, 0, TOSH_DATA_LENGTH); // 28 bytes usually 25 pMsg->strength = 0; 26 pMsg->lqi = 0; 27 pMsg->crc = 0; 28 pMsg->ack = 0; 29 pMsg->time = 0; 30 } Baris 14 â 30 ditulis dalam bentuk fungsi âmsg_initâ merupakan fungsi untuk menginisialisasikan variable pada paket seperti address, group, dan payload yang terdapat pada header âtosmac.hâ untuk ditransmisikan. Inti program âint mainâ dimulai dari baris 32. 31 //---Main-Program---// 32 int main(int argc, const char *argv[]){ 33 // Check Error 34 if(argv[1]==NULL){ 35 printf("Usage: ./send_file [file], example: ./send_file_advance image.ppm"); 36 return 1; 37 } 38 //sleep(10); //pause for 10 sec (give time for receiver to prepare) cross this out if not needed 39 // Declaration 40 int tosmac_dev, file, file_size, h, i, j, k; 41 //char *packet; 42 TOS_Msg recv_pkt; 43 TOS_Msg send_pkt; 44 // open as blocking mode 45 tosmac_dev = open(TOSMAC_DEVICE, O_RDWR); 46 if (tosmac_dev < 0) 47 { 48 fprintf(stderr, "Open error: %s\n", TOSMAC_DEVICE); 49 50 return 1; 51 } 52 // open file to be send 53 file = open(argv[1], O_RDWR); // open file 54 file_size = lseek(file,0,SEEK_END); // calculate filesize by going to final byte of file using lseek function from fcntl.h 55 lseek(file,0,SEEK_SET); // return to start of file 56 msg_init(&send_pkt); 57 send_pkt.addr = 99; // Address 58 h = file_size/TOSH_DATA_LENGTH; // How much packet or times of transmission should be prepared (using div) 59 i = file_size%TOSH_DATA_LENGTH; // Remainder of "h" (using mod) 60 j = 0; 61 k = 0; Baris 33 â 37 terdapat pemeriksaan error bila perintah yang dimasukkan tidak sesuai, Baris 39 â 43 adalah bagian deklarasi variable, Baris 44 â 51 membuka radio, baris 52 â 55 membuka file, dan baris 56 â 61 menentukan paket. Pada baris 32 âint mainâ terdapat âint argc, int argv[]â agar program dapat dieksekusi dengan memilih file yang diinginkan â./send_file_advance argv[1]â, seperti yang didefinisikan pada baris 53 âfile = open(argv[1], O_RDWR)â. Jika tidak terdapat input maka akan menampilkan cara penggunaan program di baris 35 yaitu â./send_file_advance fileâ yang diatur pada pernyataan âif(argv[1]==NULL)â baris 34, dan baris 36 âreturn 1â untuk memberik kode error pada program jika input sesuai dengan pernyataan baris 34. Baris 45 âtosmac_dev = open(TOSMAC_DEVICE, O_RDWR)â adalah untuk membuka radio dimana âTOSMAC_DEVICEâ merupakan â/dev/tosmacâ seperti didefinisikan pada âtosmac.hâ, âO_RDWRâ agar file dibuka read & write, dapat dilihat pada âfcntl.hâ. Baris 55 âfile_size = lseek(file,0,SEEK_END)â untuk mencari ukuran file dengan menuju ke bit terakhir dari file untuk mengembalikannya ke bit awal dengan kode âlseek(file,0,SEEK_SET)â. Didefinisikan paket yang akan dikirim adalah âTOS_Msg send_pktâ (baris 42) dan yang diterima âTOS_Msg recv_pktâ (baris 43), dimana âTOS_Msgâ adalah struktur paket yang didefinisikan di âtosmac.hâ. Baris 57 âsend_pkt.addr = 99â menentukan agar address pada pengirim adalah 99. Baris 58 âhâ merupakan jumlah paket dengan membagi besar file dengan maksimal data payload âTOSH_DATA_LENGTHâ, disini adalah 28, sedangkan nilai âiâ (baris 59) merupakan sisa pembagian dari âhâ yang merupakan byte terakhir yang akan dikirim. 62 while(j+1>>>> send_pkt.data 75 send_pkt.group = 7; // Group identifier, modify this as wished 76 // writing packet to device 77 printf("User writing %d bytes to driver\n", TOSH_DATA_LENGTH); 78 // verbose 79 write(tosmac_dev, (TOS_Msg*)&send_pkt, sizeof(TOS_Msg)); 80 // writing to device, (TOS_Msg*)&send_pkt >>>>> tosmac_dev, & it's a pointer 81 k += TOSH_DATA_LENGTH; // accumulative payload sent 82 printf("%d bytes written\n", k); // verbose 83 // use this function if for some reason need to slow down 84 // usleep(30000); // in micro seconds 85 } 86 // Sending the last bytes 87 read(tosmac_dev, (TOS_Msg*)&recv_pkt, sizeof(TOS_Msg)); 88 // Waiting for receiver to send a packet (for ACK), it will wait 89 until receiver is ready 90 read(file,send_pkt.data,i); // i = remainder 91 printf("User writing %d bytes to driver\n", i); // verbose 92 write(tosmac_dev, (TOS_Msg*)&send_pkt, i); // final sending 93 k += i; // accumulative payload sent 94 memcpy(send_pkt.data,"0S0T1O1P0",9); 95 write(tosmac_dev, (TOS_Msg*)&send_pkt, 9); 96 printf("%d bytes written, FINISH!!\n", k); // verbose Baris 62 â 85 merupakan proses transmisi dan baris 85 â 96 adalah transmisi yang terakhir. Proses transmisi terdapat dalam baris 62 while loop dimana file dikirim setiap 28 byte. Looping akan berhenti jika âjâ mencapai nilai âhâ (jumlah paket). Sebelum transmisi ditunggu informasi dari penerima yang berisi jumlah paket yang diterima pada baris 68 âread(tosmac_dev, (TOS_Msg*)&recv_pkt, sizeof(TOS_Msg))â (kode ini akan membaca data yang diterima radio âtosmac_devâ sebesar âsizeof(TOS_Msg)â yang kemudian ditulis ke pointer â&recv_pktâ). Nilai yang terkandung dalam ârecv_pktâ akan dimasukkan ke âjâ (baris 70). Operasi arithmetic pada âkâ (baris 72) mengkonversi jumlah paket ke jumlah byte yang diterima. Setelah itu akan menuju ke byte berikutnya yang akan dikirim pada baris 73 âlseek(file,k,SEEK_SET)â. Kemudian Pada baris 75, sizeof(TOS_Msg))â (kode ini akan menulis â&send_pktâ sebesar âsizeof(TOS_Msg)â ke âtosmac_devâ). Setelah while loop adalah pengiriman byte terakhir âiâ yang merupakan sisa pembagian dari âjâ, terakhir akan mengirim kode â0S0T1O1P0â ke receiver untuk memberi tahu bawha transmisi telah berakhir. 97 //close device 98 close(tosmac_dev); 99 close(file); 100 return 0; 101 } Baris 97 â 101 penutupan radio dan file serta akhir program, kode âcloseâ untuk menutup file yang didefinisikan pada âfcntl.hâ. 4.1.2 Program PenerimaSintaks berikut menunjukkan program penerima dengan nama file ârecv_file_advance.câ yang dilakukan pada penelitian dan secara keseluruhan program penerima mirip dengan program pengirim, dengan kata lain hanya sedikit perbedaan dapat dijelaskan sebagai berikut: 1 //************************************************************ 2 // 3 // blocking.c 4 // 5 // Gefan Zhang 6 // 7 //************************************************************* 8 // Modified by : Fajar Purnama Baris 1 â 8 merupakan komentar berisi informasi pembuat program dan penulis yang memodifikasi. 9 #include 10 #include 11 #include 12 #include 13 #include Baris 9 â 13 menunjukkan header yang digunakan pada program ini, header berisi definisi kode yang digunakan. 14 void msg_init(TOS_Msg* pMsg) 15 { 16 pMsg->length = 0; 17 pMsg->fcfhi = 0; 18 pMsg->fcflo = 0; 19 pMsg->dsn = 0; 20 pMsg->destpan = 0; 21 pMsg->addr = 0; 22 pMsg->type = 0; 23 pMsg->group = 0; 24 memset(pMsg->data, 0, TOSH_DATA_LENGTH); // 28 bytes usually 25 pMsg->strength = 0; 26 pMsg->lqi = 0; 27 pMsg->crc = 0; 28 pMsg->ack = 0; 29 pMsg->time = 0; 30 } Baris 14 â 30 merupakan fungsi untuk menginisialisasikan variable pada paket untuk ditransmisikan. Inti program dimulai dari baris 32. 31 //--------------------- main ------------------------------- 32 int main(int argc, const char *argv[]) { 33 // Check Error 34 if(argv[1]==NULL){ 35 printf("Usage: ./recv_file [file], example: ./recv_file_advance image.ppm"); 36 return 1; 37 } Baris 33 â 37 terdapat pemeriksaan error bila perintah yang dimasukkan tidak sesuai. 38 // Declaration 39 int tosmac_dev, file, i; 40 TOS_Msg recv_pkt; 41 TOS_Msg send_pkt; Bari 38 â 41 adalah bagian deklarasi variable. 42 // open as blocking mode 43 tosmac_dev = open(TOSMAC_DEVICE, O_RDWR); // TOSMAC_DEVICE = /dev/tosmac, O_RDWR = Open as Read & Write 44 // Check Error 45 if (tosmac_dev < 0) 46 { 47 fprintf(stderr, "Open error: %s\n", TOSMAC_DEVICE); 48 49 return 1; 50 51 } Baris 42 â 49 membuka radio. 50 // file 51 file = open(argv[1], O_RDWR); 52 // Check Error 53 if(file<0){ 54 creat(argv[1], O_RDWR); // create empty file, argv[1] if no file exist: user input (./recv_file argv[1]) 55 file = open(argv[1], O_RDWR); // Open created file 56 } Baris 50 â 56 membuka file di bagian ini bila file tidak ditemukan maka akan membuat file baru dengan fungsi âcreatâ baris 54. 57 // receving file 58 printf("User read from driver:\n"); 59 // receive 28 bytes of file for infinity 60 while(1){ 61 // Seek to end of file to continue receive (this feature allows continueable download) 62 i = lseek(file,0,SEEK_END); 63 send_pkt.data[1] = (i/TOSH_DATA_LENGTH)-3000; // Since the max value of data type is 3000 we start from -3000, so we could put a number up to 6000, This feature request tells the transmitter how much bytes already received so the transmitter will sinchronize. 64 write(tosmac_dev, (TOS_Msg*)&send_pkt, sizeof(TOS_Msg)); // sending i in send_pkt.data[1] 65 alarm(2); // 2 seconds timeout 66 read(tosmac_dev, (TOS_Msg*)&recv_pkt, sizeof(TOS_Msg)); // Read receive file from Tosmac Device, Pause if device == NULL, !=sizeof(TOS_Msg) 67 // Stop code, break infinite while loop if this code is received, send application should send this string to tell if transmission finish 68 if(strncmp(recv_pkt.data,"0S0T1O1P0",9)==0){ 69 break; 70 } 71 // Use group as identifier, so it will not process packet if it is not on this group 72 if(recv_pkt.group!=7){ 73 continue; // it will ignore next code and restart while loop 74 } 75 // Verbose, shows accumulative received number of bytes 76 printf("Receiving %d bytes of data\n", recv_pkt.length); 77 i += recv_pkt.length; // Equal to i = i + recv_pkt.length 78 printf("Received %d bytes\n", i); 79 // Writing received 28 bytes to file that had just been created 80 write(file, recv_pkt.data, recv_pkt.length); // write will automatically go to last byte order of file 81 } Baris 60 â 81 merupakan proses transmisi. Di proses transmisi didalam while loop yang tidak terbatas, awalnya dibaca banyaknya byte yang telah diterima oleh file (besar file) di baris 62 âlseek(file,0,SEEK_END)â dan sekaligus menuju ke akhir file. Di baris 63 besar file dimasukkan ke âsend_pkt.data[1]â dan di baris 64 dikirim ke transmitter untuk memberi tahu byte yang keberapa yang harus dikirim. Di program ini nilai dimulai dari -3000 agar dapat menentukkan nilai yang lebih besar karena masksimal nilai adalah kurang lebih 3000 sedangkan nilai yang perlu dikirim lebih dari 3000. Untuk melakukan hal ini perlu ada perubahan pada âtosmac.hâ pada bagian definisi paket di bagian. Untuk program ini tipe data âdataâ berubah dari âs8â menjadi âs16â, perubahahan adalah meningkatkan jumlah bit yang digunakan. Jika ditetapkan demikian nilai maksimimal pada âsend_pkt.data[1]â hanya dibawah 1000. Semua hal ini dilakukan agar transmisi dapat dilanjutkan kembali bila putus dan menekan error. Di program ini diisi âalarm(2)â pada baris 65 bearti program akan berhenti (time out) bila 1 while loop melebih waktu 2 detik. Jika ini terjadi transmisi dapat dilanjutkan (resume) dengan menjalankan program ini kembali dengan menunjukkan file yang sama. Perbedaan lainnya terdapat di baris 72 âif(send_pkt.group=!7){continue;}â yang artinya jika paket yang diterima bukan group 7 agar diabaikan (ignore) dan lanjut ke loop berikutnya. Di baris 68 âif(strncmp(recv_pkt.data,"0S0T1O1P0",9)==0){break;}â berarti jika string yang diterima â0S0T1O1P0â dan jumlah karakter adalah â9â maka patahkan while loop, ditentukan bahwa string ini merupakan tanda bahwa transmisi telah berakhir. 82 printf("FINISH!!"); 83 // closing device and file 84 close (tosmac_dev); 85 close(file); 86 return 0; 87 } Baris 82 â 87 penutupan radio dan file serta akhir program. 4.2 Kompilasi OpenjpegSubbab ini berisi cara untuk mengkompilasi software Openjpeg-1.5.1 ke Imote2-Linux, dengan kata agar software untuk kompresi dapat dilakukan di perangkat. Compiler yang digunakan adalah linux-gcc-4.1.2-arm-xscale-linux-gnu-glibc-2.3.3 dengan dependencies lcms2, libpng, dan zlib, untuk disini lcms2-2.6, libpng-1.2.51, dan zlib-1.2.8. Source yang didapatkan dikompresi dalam format tape archive gunzip. Perintah berikut untuk mengekstrak isi file terkompresi: Baris 60 â 81 merupakan proses transmisi. Di proses transmisi didalam while loop yang tidak terbatas, awalnya dibaca banyaknya byte yang telah diterima oleh file (besar file) di baris 62 âlseek(file,0,SEEK_END)â dan sekaligus menuju ke akhir file. Di baris 63 besar file dimasukkan ke âsend_pkt.data[1]â dan di baris 64 dikirim ke transmitter untuk memberi tahu byte yang keberapa yang harus dikirim. Di program ini nilai dimulai dari -3000 agar dapat menentukkan nilai yang lebih besar karena masksimal nilai adalah kurang lebih 3000 sedangkan nilai yang perlu dikirim lebih dari 3000. Untuk melakukan hal ini perlu ada perubahan pada âtosmac.hâ pada bagian definisi paket di bagian. Untuk program ini tipe data âdataâ berubah dari âs8â menjadi âs16â, perubahahan adalah meningkatkan jumlah bit yang digunakan. Jika ditetapkan demikian nilai maksimimal pada âsend_pkt.data[1]â hanya dibawah 1000. Semua hal ini dilakukan agar transmisi dapat dilanjutkan kembali bila putus dan menekan error. Di program ini diisi âalarm(2)â pada baris 65 bearti program akan berhenti (time out) bila 1 while loop melebih waktu 2 detik. Jika ini terjadi transmisi dapat dilanjutkan (resume) dengan menjalankan program ini kembali dengan menunjukkan file yang sama. Perbedaan lainnya terdapat di baris 72 âif(send_pkt.group=!7){continue;}â yang artinya jika paket yang diterima bukan group 7 agar diabaikan (ignore) dan lanjut ke loop berikutnya. Di baris 68 âif(strncmp(recv_pkt.data,"0S0T1O1P0",9)==0){break;}â berarti jika string yang diterima â0S0T1O1P0â dan jumlah karakter adalah â9â maka patahkan while loop, ditentukan bahwa string ini merupakan tanda bahwa transmisi telah berakhir. tar xfv linux-gcc-4.1.2-arm-xscale-linux-gnu-glibc-2.3.3.tgz tar xfv openjpeg-1.5.1.tar.gz tar xfv zlib-1.2.8.tar.gz tar xfv lcms2-2.6.tar.gz tar xfv libpng-1.2.51.tar.gz Perintah berikut untuk menambahkan lokasi file executeable compiler: export PATH=/[lokasi folder]/arm-xscale-Linux-gnu/bin/:$PATH Dependencies tambahan pertama yang diminta adalah lcms2. cd /[lokasi folder]/lcms2-2.6 export CROSS-PREFIX=/[lokasi folder]/arm-xscale-linux-gnu/arm-xscale-linux-gnu/ ./configure --prefix=/[lokasi folder]/arm-xscale-Linux-gnu/arm-xscale-Linux-gnu/ --host=arm-xscale-linux-gnu make && make install Perintah âcdâ untuk masuk ke folder, âexportâ untuk memberi nilai ke suatu variable, disini âCROSS-PREFIXâ didefinisikan di file âconfigureâ pada zlib, jika dikompilasi untuk cross-compiler maka diberi nilai lokasi cross-compiler. Didalam file âconfigureâ terdapat serangkaian configurasi, bila dijalankan akan dibentuk âMakefileâ untuk kompilasi sesuai kebutuhan. Perintah â--prefixâ untuk menambahkan lokasi instalasi. Perintah âmakeâ untuk mengkompilasi berdasarkan file âMakefileâ dan âmake installâ untuk menaruh hasil kompilasi ke tempat berdasarkan â--prefixâ. Selanjutnya mengkompilasi zlib untuk compiler: cd /[lokasi folder]/zlib-1.2.8 CC=arm-xscale-linux-gnu-gcc prefix=/[lokasi folder]/arm-xscale-Linux-gnu/arm-xscale-Linux-gnu/ CFLAGS=â-04â ./configure --shared make && make install Di penelitian diperlukan perintah â--sharedâ agar dapat dideteksi oleh âlibpngâ saat konfigurasi. Setelah itu kompilasi libpng: cd /[lokasi folder]/libpng-1.2.51 ./configure --prefix=/[lokasi folder]/arm-xscale-linux-gnu/arm-xscale-linux-gnu/ --host=arm-xscale-linux-gnu make && make install Perintah âcdâ untuk masuk ke folder, âexportâ untuk memberi nilai ke suatu variable, disini âCROSS-PREFIXâ didefinisikan di file âconfigureâ pada zlib, jika dikompilasi untuk cross-compiler maka diberi nilai lokasi cross-compiler. Didalam file âconfigureâ terdapat serangkaian configurasi, bila dijalankan akan dibentuk âMakefileâ untuk kompilasi sesuai kebutuhan. Perintah â--prefixâ untuk menambahkan lokasi instalasi. Perintah âmakeâ untuk mengkompilasi berdasarkan file âMakefileâ dan âmake installâ untuk menaruh hasil kompilasi ke tempat berdasarkan â--prefixâ. Selanjutnya mengkompilasi zlib untuk compiler: cd /[lokasi folder]/zlib-1.2.8 CC=arm-xscale-linux-gnu-gcc prefix=/[lokasi folder]/arm-xscale-Linux-gnu/arm-xscale-Linux-gnu/ CFLAGS=â-04â ./configure --shared make && make install Di penelitian diperlukan perintah â--sharedâ agar dapat dideteksi oleh âlibpngâ saat konfigurasi. Setelah itu kompilasi libpng: cd /[lokasi folder]/libpng-1.2.51 ./configure --prefix=/[lokasi folder]/arm-xscale-linux-gnu/arm-xscale-linux-gnu/ --host=arm-xscale-linux-gnu make && make install Berdasarkan file âconfigureâ â--hostâ menentukan jenis platform kompilasi, disini adalah âarm-xscale-linux-gnuâ, maka diperlukan âexportâ lokasi executable cross-compiler pada bagian awal subbab ini. Terakhir adalah kompilasi Openjpeg: cd openjpeg-1.5.1 ./configure --prefix=/[lokasi folder]/[lokasi folder bebas]/ --host=arm-xscale-Linux-gnu --enable-jpwl --enable-debug --disable-tiff make && make install 4.3 Implementasi TestbedSecara keseluruhan subbab ini mengandung proses transmisi untuk penelitian ini. Awalnya memasukkan program transmisi dan Openjpeg hingga pada intinya perangkat dapat melakukan transmisi dengan batterai atau tanpa terkoneksi ke komputer. 4.4 Program PerintahDisini terdapat program tambahan, selain menggunakan program ârecvâ diperlukan 2 program tambahan yaitu program untuk mengirim perintah dan program untuk menerima perintah. Program pengirim perintah âsend_command.câ sebagai berikut: 1 //************************************************************ 2 // 3 // blocking.c 4 // 5 // Gefan Zhang 6 // 7 //************************************************************* 8 // Modified by Fajar Purnama 9 /* Only Difference from original send.c is an addition of arguement (argc, argv) we could send any message we want without changing its source code for example sending hello message just type ./send_command hello */ 10 #include 11 #include 12 #include 13 #include 14 #include 15 void msg_init(TOS_Msg* pMsg) { 16 pMsg->length = 0; 17 pMsg->fcfhi = 0; 18 pMsg->fcflo = 0; 19 pMsg->dsn = 0; 20 pMsg->destpan = 0; 21 pMsg->addr = 0; 22 pMsg->type = 0; 23 pMsg->group = 0; 24 memset(pMsg->data, 0, TOSH_DATA_LENGTH); 25 pMsg->strength = 0; 26 pMsg->lqi = 0; 27 pMsg->crc = 0; 28 pMsg->ack = 0; 29 pMsg->time = 0; 30 } 31 //--------------------- main ------------------------------- 32 int main(int argc, const char *argv[]) { 33 if(argv[1]==NULL){ 34 printf("Usage: ./send_command [message], example ./send_command reboot, ./send_command hello\n"); 35 return 1; 36 } 37 int tosmac_dev; 38 TOS_Msg recv_pkt; 39 TOS_Msg send_pkt; 40 // open as blocking mode 41 tosmac_dev = open(TOSMAC_DEVICE, O_RDWR); 42 if (tosmac_dev < 0) 43 { 44 fprintf(stderr, "Open error: %s\n", TOSMAC_DEVICE); 45 return 1; 46 } 47 msg_init(&send_pkt); 48 send_pkt.addr = 99; 49 memcpy(send_pkt.data, argv[1], TOSH_DATA_LENGTH); 50 send_pkt.length = TOSH_DATA_LENGTH; 51 printf("User write to driver\n"); 52 write(tosmac_dev, (TOS_Msg*)&send_pkt, sizeof(TOS_Msg)); 53close(tosmac_dev); 54 return 0; 55 } Keseluruhan penjelasan program pengirim perintah sama seperti penjelasan program transmisi. Secara khusus yang berbeda pada program ini terdapat pada baris 49 dimana karakter yang akan ditulis ke âsend_pkt.dataâ yaitu âargv[1]â akan dikirim. Program ini sebatas mengirim karakter maksimal 28 byte. Berikut adalah program penerima perintah ârecv_command.câ: 1 //************************************************************ 2 // 3 // blocking.c 4 // 5 // Gefan Zhang 6 // 7 //************************************************************* 8 // Modified by Fajar Purnama 9 /* The only difference is system() function is added from stdlib.h so the message received will be proccess as a command with this code still limited to 28 bytes. Example of message receive is recv_pkt.data = "reboot", it will be system("reboot"), and it will reboot the system */ 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 void msg_init(TOS_Msg* pMsg) 17 { 18 pMsg->length = 0; 19 pMsg->fcfhi = 0; 20 pMsg->fcflo = 0; 21 pMsg->dsn = 0; 22 pMsg->destpan = 0; 23 pMsg->addr = 0; 24 pMsg->type = 0; 25 pMsg->group = 0; 26 memset(pMsg->data, 0, TOSH_DATA_LENGTH); 27 pMsg->strength = 0; 28 pMsg->crc = 0; 29 pMsg->lqi = 0; 30 pMsg->ack = 0; 31 pMsg->time = 0; 32 } 33 //--------------------- main ------------------------------- 34 int main(int argc, char* argv[]) 35 { 36 int tosmac_dev; 37 TOS_Msg recv_pkt; 38 TOS_Msg send_pkt; 39 // open as blocking mode 40 tosmac_dev = open(TOSMAC_DEVICE, O_RDWR); 41 if (tosmac_dev < 0) 42 { 43 fprintf(stderr, "Open error: %s\n", TOSMAC_DEVICE); 44 return 1; 45 } 46 printf("User read from driver:\n"); 47 read(tosmac_dev, &recv_pkt, sizeof(TOS_Msg));// != sizeof(TOS_Msg); 48 printf("data is %s\n", recv_pkt.data); 49 system(recv_pkt.data);// Process recv_pkt.data as a command in terminal 50 // close device 51 close (tosmac_dev); 52 return 0; 53 } Keseluruhan penjelasan program penerima perintah sama seperti penjelasan program transmisi. Secara khusus yang berbeda pada program ini terdapat pada baris 49 dimana karakter yang diterima, terkandung dalam ârecv_pkt.dataâ akan diperlakukan sebagai perintah. Hal ini dimungkinkan oleh fungsi âsystemâ yang didefinisikan dalam âstdlib.hâ. 4.3.2 Penempatan ProgramSetelah kode program jadi, kode tersebut dikompilasi menggunakan âarm-xscale-linux-gnu-gccâ. export PATH=/[lokasi folder]/arm-xscale-Linux-gnu/bin/:$PATH (jika belum) cd /[lokasi folder program] arm-xscale-linux-gnu-gcc -Wall send.c -o send arm-xscale-linux-gnu-gcc -Wall recv.c -o recv arm-xscale-linux-gnu-gcc -Wall send_command.c -o send_command arm-xscale-linux-gnu-gcc -Wall recv_command.c -o recv_command arm-xscale-linux-gnu-gcc -Wall send_file_advance.c -o send_file_advance arm-xscale-linux-gnu-gcc -Wall recv_file_advance.c -o recv_file_advance Selanjutnya ditempatkan di Imote2 dalam directory â/root/transmitâ. Receiver terkoneksi di USB0 dengan alamat IP di komputer 192.168.98.100 dan di Imote2 192.168.98.101. Transmitter terkoneksi di USB1 dengan alamat IP di komputer 192.168.99.100 dan di Imote2 192.168.99.102. Koneksi antar Imote2 menggunakan SSH (secure shell) yang telah disiapkan di penelitian sebelumnya seperti dijelaskan pada BAB II subbab 2.1. Sebelum penempatan dibuat directory terlebih dahulu. ssh 192.168.98.101 mkdir /root/transmit && mkdir /root/command && mkdir /root/image quit && exit ssh 192.168.99.102 mkdir /root/transmit && mkdir /root/command && mkdir /root/image quit && exit Perintah âmkdirâ (make directory) untuk membuat folder baru. Untuk penelitian ini citra raw (Gambar 3.1) telah terkandung dalam directory â/root/imageâ dengan nama â1.ppmâ. Jika directory telah siap maka program dimasukkan, sekaligus Openjpeg yang telah dikompilasi. cd /[lokasi program] scp * [email protected]:transmit/ && scp * [email protected]:transmit/ cd /[lokasi folder openjpeg] scp -r [folder openjpeg] [email protected]: scp -r [folder openjpeg] [email protected]: SCP merupakan perintah untuk copy data melalui SSH, â*â mengindikasikan semua file yang ada pada folder tersebut, â-râ untuk mengcopy suatu directory. Berikutnya hasil kompilasi Openjpeg ditempatkan pada directory yang sesuai. ssh 192.168.99.102 cd /[lokasi folder openjpeg] cd bin && mv * /bin cd ../include && mkdir /usr/include && mv * /usr/include cd ../lib && mv * /lib cd ../share && mv man /usr/share && mv /doc/* /usr/share/doc quit && exit ssh 192.168.98.101 cd /[lokasi folder openjpeg] cd bin && mv * /bin cd ../include && mkdir /usr/include && mv * /usr/include cd ../lib && mv * /lib cd ../share && mv man /usr/share && mv /doc/* /usr/share/doc quit && exit Untuk memudahkan transmisi disiapkan beberapa perintah dalam bentuk file sebagai berikut:
File dari tabel diatas akan ditaruh ke directory â/root/commandâ. cd /[lokasi file command] scp * [email protected]:command/ scp * [email protected]:command/ 4.3.3 Konfigurasi StartupLangkah terakhir untuk implementasi testbed adalah agar kedua Imote2 saat dihidupkan menyiapkan driver Tosmac untuk radio dan transmitter saat dihidupkan selalu siap untuk menerima perintah dari receiver. Penelitian ini menggunakan radio yang telah disiapkan pada penelitian sebelumnya. Untuk melakukan hal ini ditaruh 2 file startup di â/etc/rc2.d/â. File âS12loadtosmacâ untuk radio dan file âS14infloopâ untuk menerima perintah secara terus-menerus. Gambar 4.1 adalah contoh bila mengirim perintah âpoweroffâ untuk mematikan perangkat dan Gambar 4.2 merupakan contoh transmisi. #!/bin/sh insmod /lib/modules/2.6.29.1_r1.1/kernel/arch/arm/mach-pxa/ssp.ko insmod /lib/modules/2.6.29.1_r1.1/kernel/drivers/tosmac/tos_mac.ko mknod /dev/tosmac c 240 0 while (true) do /root/transmit/recv_command Done 4.3.4 Penggunaan TestbedUntuk melakukan transmisi citra tanpa kompresi dan terkompresi sebagai berikut: /root/transmit/send_command /root/command/A (transmisi citra raw) /root/transmit/recv_file_advance /root/image/[nama citra output].ppm /root/transmit/send_command /root/command/B (kompresi rasio 1) /root/transmit/recv (tunggu pemberitahuan selesainya kompresi) /root/transmit/send_command /root/command/C (transmisi citra rasio 1) /root/transmit/recv_file_advance /root/image/[nama citra output].j2k /root/transmit/send_command /root/command/D (kompresi rasio 5) /root/transmit/recv (tunggu pemberitahuan selesainya kompresi) /root/transmit/send_command /root/command/E (transmisi citra rasio 5) /root/transmit/recv_file_advance /root/image/[nama citra output].j2k /root/transmit/send_command /root/command/F (kompresi rasio 10) /root/transmit/recv (tunggu pemberitahuan selesainya kompresi) /root/transmit/send_command /root/command/G(transmisi citra rasio 10) /root/transmit/recv_file_advance /root/image/[nama citra output].j2k Pengukuran PSNR menggunakan software ImageMagick. Citra yang dikompresi dengan format .j2k dikembalikan ke format .ppm dengan ukuran file menjadi seperti aslinya. Perintahnya adalah sebagai berikut: j2k_to_image -i [citra .j2k] -o [nama citra .ppm] compare -metric PSNR [citra asli] [citra pembanding] [citra ouput pengukuran] Memory dapat dilihat saat aplikasi sedang berjalan dengan perintah: ps (terlihat nomor proses aplikasi) cat /proc/[nomor proses aplikasi]/status 4.4 Analisis DataDi bagian ini akan di analisa hasil data penelitian yang berupa konsumsi dari daya listrik, memory, dan waktu pada setiap proses transmisi, serta ditampilkan juga nilai PSNR dari citra yang telah dikirim. Jika diringkas kembali proses transmisi meliputi transmisi citra tanpa kompresi dan yang telah dikompresi berdasarkan standar JPEG2000 dengan software OpenJPEG 1.5.2 rasio 1, 5, dan 10, dilakukan pada jarak 5m, 10m, dan 15m. 4.4.1 Konsumsi Daya ListrikSecara keseluruhan hasil dari data penelitian menunjukkan bahwa kompresi sangat berpengaruh terhadap transmisi. Untuk mendapatkan detil konsumsi daya listrik penelitian ini melakukan proses transmisi masing-masing pada jarak 5 meter, 10 meter, dan 15 meter. Gambar 4.7 menunjukkan konsumsi tegangan listrik transmisi pada jarak 5 meter. Konsumsi tegangan menurun secara konstan terhadap rasio kompresi yang diaplikasikan. Selisih konsumsi tegangan listrik hanya ditransmisi citra tanpa kompresi dengan terkompresi lebih hemat 17 mV untuk rasio 1, 37 mV dan 44 mV untuk rasio 5 dan rasio 10. Jika dilibatkan konsumsi saat kompresi tetap lebih hemat. Selisih konsumsi tegangan listrik secara keseluruhan citra tanpa kompresi dengan terkompresi lebih hemat 2 mV untuk rasio 1, 27 mV dan 36 mV untuk rasio 5 dan rasio 10. Gambar 4.8 menunjukkan konsumsi tegangan listrik transmisi pada jarak 10 meter. Konsumsi tegangan menurun secara konstan terhadap rasio kompresi yang diaplikasikan. Selisih konsumsi tegangan listrik hanya ditransmisi citra tanpa kompresi dengan terkompresi lebih hemat 18 mV untuk rasio 1, 36 mV dan 45 mV untuk rasio 5 dan rasio 10. Jika dilibatkan konsumsi saat kompresi tetap lebih hemat. Selisih konsumsi tegangan listrik secara keseluruhan citra tanpa kompresi dengan terkompresi lebih hemat 2 mV untuk rasio 1, 24 mV dan 35 mV untuk rasio 5 dan rasio 10. Gambar 4.9 menunjukkan konsumsi tegangan listrik transmisi pada jarak 15 meter. Konsumsi tegangan menurun secara konstan terhadap rasio kompresi yang diaplikasikan. Selisih konsumsi tegangan listrik hanya ditransmisi citra tanpa kompresi dengan terkompresi lebih hemat 17 mV untuk rasio 1, 35 mV dan 45 mV untuk rasio 5 dan rasio 10. Jika dilibatkan konsumsi saat kompresi tetap lebih hemat. Selisih konsumsi tegangan listrik secara keseluruhan citra tanpa kompresi dengan terkompresi sama untuk rasio 1, 21 mV dan 34 mV untuk rasio 5 dan rasio 10. Gambar 4.10 menunjukkan konsumsi arus listrik transmisi pada jarak 5 meter. Konsumsi arus listrik menurun terhadap rasio kompresi yang diaplikasikan. Selisih konsumsi arus listrik hanya ditransmisi citra tanpa kompresi dengan terkompresi lebih hemat 4.2 mA untuk rasio 1, 4.6 mA dan 5.4 mA untuk rasio 5 dan rasio 10. Jika dilibatkan konsumsi saat kompresi tetap lebih hemat. Selisih konsumsi arus listrik secara keseluruhan citra tanpa kompresi dengan terkompresi lebih hemat 2.8 mA untuk rasio 1, 3.3 mA dan 4.3 mA untuk rasio 5 dan rasio 10. Gambar 4.11 menunjukkan konsumsi arus listrik transmisi pada jarak 10 meter. Konsumsi arus listrik menurun terhadap rasio kompresi yang diaplikasikan. Selisih konsumsi arus listrik hanya ditransmisi citra tanpa kompresi dengan terkompresi lebih hemat 4.7 mA untuk rasio 1, 4.7 mA dan 5.8 mA untuk rasio 5 dan rasio 10. Jika dilibatkan konsumsi saat kompresi tetap lebih hemat. Selisih konsumsi arus listrik secara keseluruhan citra tanpa kompresi dengan terkompresi lebih hemat 3.2 mA untuk rasio 1, 3.3 mA dan 4.6 mA untuk rasio 5 dan rasio 10. Gambar 4.12 menunjukkan konsumsi arus listrik transmisi pada jarak 15 meter. Konsumsi arus listrik menurun terhadap rasio kompresi yang diaplikasikan. Selisih konsumsi arus listrik hanya ditransmisi citra tanpa kompresi dengan terkompresi lebih hemat 4.4 mA untuk rasio 1, 5.2 mA dan 6 mA untuk rasio 5 dan rasio 10. Jika dilibatkan konsumsi saat kompresi tetap lebih hemat. Selisih konsumsi arus listrik secara keseluruhan citra tanpa kompresi dengan terkompresi lebih hemat 2.7 mA untuk rasio 1, 3.7 mA dan 4.6 mA untuk rasio 5 dan rasio 10. Gambar 4.13 menunjukkan konsumsi daya listrik transmisi pada jarak 5 meter. Konsumsi daya menurun secara drastis terhadap rasio kompresi yang diaplikasikan. Selisih konsumsi daya listrik hanya ditransmisi citra tanpa kompresi dengan terkompresi lebih hemat 268.4 mW untuk rasio 1, 319.6 mW dan 341 mW untuk rasio 5 dan rasio 10. Jika dilibatkan konsumsi saat kompresi tetap lebih hemat. Selisih konsumsi arus listrik secara keseluruhan citra tanpa kompresi dengan terkompresi lebih hemat 161.2 mW untuk rasio 1, 265.2 mW dan 312.1 mW untuk rasio 5 dan rasio 10. Gambar 4.14 menunjukkan konsumsi daya listrik transmisi pada jarak 10 meter. Konsumsi daya menurun secara drastis terhadap rasio kompresi yang diaplikasikan. Selisih konsumsi daya listrik hanya ditransmisi citra tanpa kompresi dengan terkompresi lebih hemat 314 mW untuk rasio 1, 355.4 mW dan 390.4 mW untuk rasio 5 dan rasio 10. Jika dilibatkan konsumsi saat kompresi tetap lebih hemat. Selisih konsumsi arus listrik secara keseluruhan citra tanpa kompresi dengan terkompresi lebih hemat 193.2 mW untuk rasio 1, 280.2 mW dan 350.8 mW untuk rasio 5 dan rasio 10. Gambar 4.15 menunjukkan konsumsi daya listrik transmisi pada jarak 15 meter. Konsumsi daya menurun secara drastis terhadap rasio kompresi yang diaplikasikan. Selisih konsumsi daya listrik hanya ditransmisi citra tanpa kompresi dengan terkompresi lebih hemat 318.4 mW untuk rasio 1, 396 mW dan 432 mW untuk rasio 5 dan rasio 10. Jika dilibatkan konsumsi saat kompresi tetap lebih hemat. Selisih konsumsi arus listrik secara keseluruhan citra tanpa kompresi dengan terkompresi lebih hemat 162 mW untuk rasio 1, 303.9 mW dan 378 mW untuk rasio 5 dan rasio 10. Dari Gambar 4.7 â Gambar 4.15 dapat disimpulkan segi konsumsi daya listrik dan waktu proses kompresi sangat rendah tetapi dapat dengan signifikan meringankan beban transmisi sehingga sangat dianjurkan untuk digunakan. Dengan mengaplikasikan rasio kompresi yang lebih besar akan menurunkan konsumsi arus dan tegangan listrik saat transmisi otomatis daya listrik yang dikonsumsi lebih rendah. Juga seiring dengan meningkatnya rasio kompresi konsumsi arus dan tegangan listrik mengecil sehingga dipastikan dengan meningkatkan rasio kompresi akan meringankan beban transmisi. Semakin jauh jarak transmisi semakin besar konsumsi daya listrik, tetapi perbedaan antara jarak 5 meter, 10 meter, dan 15 meter tidak signifikan. 4.4.2 Waktu Proses TransmisiSelain dari konsumsi daya listrik, dari segi waktu juga terlihat drastis pengaruh dari kompresi, tetapi hampir tidak terlihat pengaruh dari segi jarak 5 meter, 10 meter, dan 15 meter. Gambar 4.16 menunjukkan waktu yang dibutuhkan untuk kompresi dan transmisi, sedangkan Gambar 4.17 merupakan waktu yang dibutuhkan secara keseluruhan yang merupakan gabungan dari kompresi dan transmisi. Gambar 4.16 menunjukkan kompresi memerlukan waktu yang singkat dan sangat memperndek waktu yang diperlukan untuk transmisi. Semakin besar rasio kompresi yang diaplikasikan semakin kecil waktu transmisi. Waktu kompresi memerlukan 25 â 30 detik. Waktu transmisi semakin kecil dari citra raw hingga citra yang dikompresi rasio 10 dengan nilai sekitar 10 menit 30 detik, 5 menit, 2 menit, dan 1 menit. Secara keseluruhan dari segi jarak tidak kelihatan berpengaruh akan tetapi kompresi, yang berperan untuk mempersingkat waktu transmisi. Citra yang terkompresi rasio 10 memerlukan waktu keseluruhan 1 menit 30 detik, rasio 5 2 menit 30 detik, rasio 1 4 menit 30 detik, dan 10 menit untuk citra yang tidak dikompresi. 4.4.3 Kualitas CitraSetelah dari segi waktu dilihat juga dari segi kualitas citra dengan menggunakan ukuran PSNR. Gambar 4.18 menunjukkan PSNR citra tanpa kompresi dan dikompresi setelah transmisi pada jarak 5 meter, 10 meter, 15 meter. Rasio 10 baik dari jarak 5 meter, 10 meter, dan 15 meter memiliki PSNR yang sama dengan nilai 40.6536, mirip pula dengan rasio 5 berkisar sekitar nilai 43.8. Pengaruh jarak terlihat di rasio 1 dan tanpa kompresi, untuk rasio 1 nilai PSNR sekitar 35 untuk jarak 5 meter dan 10 meter, dan turun secara signifikan di jarak 15 meter dengan nilai PSNR 24.7041. Pengaruh jarak dapat dilihat di citra tanpa kompresi, untuk rasio 5 dan 10 tidak terlihat pengaruh dari jarak. Pada citra tanpa kompresi nilai PSNR menurun dengan jarak yang semakin jauh, secara berurutan 5 meter, 10 meter, dan 15 meter, adalah 38.8494, 30.4678, 38.3421. Maka dapat disimpulkan rasio 1 memiliki kualitas yang paling buruk setelah citra tanpa kompresi, sedangkan rasio 10 memiliki kualitas yang menjanjikan, dan rasio 5 menunjukkan kualitas yang paling baik. Dari segi penglihatan citra dengan PSNR dibawah 40 dB kelihatan jelas tidak seperti aslinya. Penyebabnya adalah error transmisi. 4.4.4 Besar File dan MemoryGambar 4.19 memperlihatkan maksimal virtual memory yang digunakan, dan paling banyak digunakan pada saat kompresi. Untuk kompresi menggunakan maksimal virtual memory 14548 kB dan pengiriman menggunakan 1256 kB di transmitter, di penerima menggunakan maksimal virtual memory 2336 kB untuk penerimaan. Gambar 4.20 memperlihatkan besar file citra tanpa kompresi dan terkompresi, besar file mengecil dengan mengaplikasikan rasio yang semakin besar. Besar file untuk citra tanpa kompresi adalah 921.6 kB, rasio 1 429.9 kB, rasio 5 184.2 kB, dan rasio 10 91.7 kB. Dari segi kualitas citra, citra asli dan terkompresi rasio 1 memiliki PSNR yang lebih rendah dari citra lainnya, dan kelihatan dari citra tersebut bahwa terjadi error transmisi. Maka semakin besar ukuran file semakin peka terhadap error. BAB 5 Penutup5.1 SimpulanDari keseluruhan penelitian ini dapat disimpulkan sebagai berikut:
5.2 SaranDengan berhasilnya mentransmisikan citra pada Imote2 Linux, alat ini dapat digunakan baik untuk keperluan di lapangan maupun penelitian lebih lanjut. Berikut merupakan saran penelitian lanjutan:
CitraDaftar Pustaka
Mirror
0 Comments
Leave a Reply. |
Archives
August 2022
Categories
All
source code
old source code Get any amount of 0FP0EXP tokens to stop automatic JavaScript Mining or get 10 0FP0EXP tokens to remove this completely. get 30 0FP0EXP Token to remove this paypal donation. Get 40 0FP0EXP Token to remove this donation notification! get 20 0FP0EXP Token to remove my personal ADS. Get 50 0FP0EXP Token to remove my NFTS advertisements! |