Transmisi Citra Pada Perangkat Jaringan Sensor Visual Nirkabel Platform Imote2 Berbasis IEEE 802.15.4 ZigBee Embedded Linux

Transmisi Citra Pada Perangkat Jaringan Sensor Visual Nirkabel Platform Imote2 Berbasis IEEE 802.15.4 ZigBee Embedded Linux


Catatan

  • Ini adalah Tugas Akhir saya sebagai syarat untuk kelulusan S1 saya di Jurusan Teknik Elektro, Fakultas Teknik, Universitas Udayana. Namun, Tugas Akhir ini hanya disetor ke perpustakaan Universitas Udayana dan tidak pernah dipublikasi di tempat lain dan hak cipta sepenuhnya saya yang pegang dan sudah 6 tahun sejak Tugas Akhir ini ditulis. Oleh karena itu saya nyatakan Tugas Akhir ini terbuka, boleh disalin, boleh dipublikasi ulang, dan boleh dijual dengan syarat menyebut nama saya sebagai penulis asal dan sebutkan bahwa laporan ini terbuka di tautan ini (customized CC-BY-SA).
  • Tugas akhir ini telah disahkan oleh kedua pembimbing saya yaitu Dr. I Made Oka Widyantara, ST., MT. dan I Gst A. Komang Diafari Djuni H, ST., MT. serta ketiga penguji Dr. Gede Sukadarmika, ST., MSc., Widyadi Setiawan, ST., MT., dan NMAE Dewi Wirastuti, S.T., M.Sc., Ph.D. Tugas Akhir ini juga merupakan topik yang diberikan oleh Dr. Nyoman Putra Sastra yang seharusnya menjadi pembimbing utama namun beliau saat itu sedang lanjut studi dimana Tugas Akhir ini menjadi bagian dari Dissertasi S3 beliau.
  • Slide: Slide Share
  • Source Code: Github

Abstrak

Beberapa 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 Pendahuluan

1.1 Latar Belakang

JSN (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.

Gambaran JSN/WSN Gambar 1.1 Gambaran JSN/WSN

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.

Contoh penerapan JSN pada jalan di alam bebas Gambar 1.2 Contoh penerapan JSN pada jalan di alam bebas (Garcia-Sanches, 2010)

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.

Tabel 1.1 Mote hardware Tabel 1.1 Mote hardware (Akyildiz, 2010)

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).

Imote2 dengan WLAN catu daya WLAN dengan LR-WPAN Gambar 1.3 Konsumsi daya listrik pada transmisi data biner JSVN Imote2 (a) Imote2 dengan WLAN (b) catu daya WLAN (c) dengan LR-WPAN (Natha, 2012, dan Wiasta, 2012)

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. Bagaimana skema transmisi citra dengan media nirkabel berbasis IEEE 802.15.4 ZigBee pada JSVN platform Imote2 di embedded Linux?
  2. Bagaimana kinerja JSVN platform Imote2 berbasis IEEE 802.15.4 Zigbee pada transmisi citra di embedded Linux?

1.3 Tujuan Penelitian

  1. Untuk mendapatkan skema transmisi citra dengan media nirkabel berbasis IEEE 802.15.4 Zigbee pada JSVN platform Imote2 di embedded Linux.
  2. Untuk mendapatkan skema transmisi citra yang kokoh pada JSVN platform Imote2 berbasis IEEE 802.15.4 Zigbee di embedded Linux.

1.4 Manfaat Penelitian

  1. Mendapatkan skema transmisi citra dengan media nirkabel berbasis IEEE 802.15.4 Zigbee pada JSVN platform Imote2 di embedded Linux.
  2. Mendapatkan skema yang optimal untuk mentransmisikan citra pada JSVN platform Imote2 di embedded Linux.
  3. Mendapatkan hasil kinerja JSVN platform Imote2 dalam transmisi citra yang mengimplementasikan IEEE 802.15.4 Zigbee di embedded Linux.

1.5 Batasan Masalah

  1. Menggunakan JSVN platform Imote2.
  2. Imote2 menggunakan operating system embedded Linux.
  3. Pengolahan citra menerapkan standar JPEG2000.
  4. Sistem transmisi antar Imote2 Linux.

BAB 2 Tinjauan Pustaka

Karena platform ini tidak dapat menampung tulisan tugas akhir sebanyak ini, maka bagian ini di abaikan. Silahkan cek mirror di paling bawah jika ingin melihat tugas akhir penuh ini.

BAB 3 Metode Penelitian

3.1 Lokasi dan Waktu Penelitian

Pengamatan 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 Penelitian

Sumber data dapat dikelompokkan 2 jenis:

  1. Data Primer: Berupa nilai konsumsi daya listrik, memory, dan waktu dari perangkat JSN Imote2.
  2. Data Sekunder: Berupa skema penelitian, spesifikasi perangkat, dan prosedur implementasi IEEE 802.15.4 Zigbee pada JSVN Imote2 dalam transmisi citra.

Jenis data juga dikelompokkan menjadi 2 jenis:

  1. Data Kuantitatif: Merupakan data yang berbentuk angka, pada penelitian ini adalah nilai daya listrik, memory, dan waktu, ataupun perhitungan suatu nilai yang diturunkan dari data primer.
  2. Data Kualitatif: Merupakan data yang tidak berbentuk angka, pada penelitian ini adalah pernyataan kinerja perangkat JSVN Imote2 dari berbagai kondisi yang diterapkan.Selain itu adalah data berupa grafik, dan pengimplementasian IEEE 802.15.4 Zigbee dalam transmisi citra.

3.3 Instrumen dan Bahan Penelitian

Instrumen penelitian dapat dilihat pada Tabel 3.1 – Tabel 3.5. Perangkat JSVN Imote2 dapat dilihat pada Gambar 2.10.

6c23af51110d5930c8f71f1e4a7e656d5590edb9cb1f05e5776ef6efd136fbf4.png

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.

Bahan penelitian Gambar 3.1 Bahan penelitian

3.4 Tahapan Penelitian

Secara 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.

Skema dasar penelitian Gambar 3.2 Skema dasar penelitian

3.4.1 Implementasi IEEE 802.15.4 Zigbee untuk transmisi citra

Radio 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 Testbed

Testbed 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:

Skema testbed Gambar 3.3 Skema testbed

  1. Skenario 1
    • Disisipkan citra berdasarkan bahan penelitian ke Imote2 (pre-store).
    • Penyiapan Imote2.
    • Pengukuran tegangan dan arus baterai sebelum transmisi.
    • Transmisi citra dari transmitter ke receiver dengan jarak 5 meter dapat dilihat pada Gambar 3.4 dan Gambar 3.5.
    • Pengukuran virtual memory yang digunakan program transmisi.
    • Pengukuran lama waktu dibutuhkan untuk transmisi.
    • Pengukuran tegangan dan arus batterai setelah transmisi.
    • Pengukuran nilai PSNR citra.
    • Penelitian diulang dengan jarak 10, dan 15 meter dapat dilihat pada Gambar 3.6 – Gambar 3.9.
  2. Skenario 2
    • Penyiapan Imote2.
    • Pengukuran tegangan dan arus baterai sebelum kompresi.
    • Dilakukan kompresi citra pada transmitter dengan rasio 1.
    • Pengukuran virtual memory yang digunakan program kompresi.
    • Pengukuran lama waktu dibutuhkan untuk kompresi.
    • Pengukuran tegangan dan arus baterai setelah kompresi.
    • Pengukuran tegangan dan arus baterai sebelum transmisi.
    • Transmisi citra dari transmitter ke receiver dengan jarak 5 meter.
    • Pengukuran virtual memory yang digunakan program transmisi.
    • Pengukuran lama waktu dibutuhkan untuk transmisi.
    • Pengukuran tegangan dan arus baterai setelah transmisi.
    • Pengukuran nilai PSNR.
    • Penelitian diulang dengan rasio kompresi 5, dan 10.
    • Penelitian diulang dengan jarak 10, dan 15 meter.

Peta lab sistem komunikasi penelitian jarak 5 meter Gambar 3.4 Peta lab sistem komunikasi penelitian jarak 5 meter Gambar 3.5 Lab sistem komunikasi penelitian jarak 5 meter Gambar 3.5 Lab sistem komunikasi penelitian jarak 5 meter Peta lab sistem komunikasi penelitian jarak 10 meter Gambar 3.6 Peta lab sistem komunikasi penelitian jarak 10 meter Lab sistem komunikasi penelitian jarak 10 meter Gambar 3.7 Lab sistem komunikasi penelitian jarak 10 meter Peta ruang konferensi penelitian jarak 15 meter Gambar 3.8 Peta ruang konferensi penelitian jarak 15 meter Ruang konferensi penelitian jarak 15 meter Gambar 3.9 Ruang konferensi penelitian jarak 15 meter

3.5 Alur Analisis

Pada 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:

  1. Menentukan prosedur transmisi citra.
  2. Menyiapkan citra raw ke Imote2 yang bersifat sebagai transmitter untuk ditransmisikan, kompresi akan dilakukan di Imote2.
  3. Melakukan penelitian dengan jarak antar Imote2 5, 10, dan 15 meter untuk masing-masing transmisi citra raw dan yang telah diolah berdasarkan JPEG2000.
  4. Mencari konsumsi daya listrik setiap tahap transmisi citra.
  5. Mendapatkan waktu yang dibutuhkan setiap tahap dan memory yang digunakan.
  6. Dari semua data yang didapatkan ditentukan skema yang optimal.

Alur penelitian 1 Gambar 3.10 Alur penelitian 1 Alur Penelitian 2 Gambar 3.11 Alur Penelitian 2 Alur Penelitian 2

Gambar 3.12 Alur Penelitian 2

BAB 4 Pembahasan

Secara 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.

Alur diagram implementasi testbed Gambar 4.1 Alur diagram implementasi testbed Illustrasi kompilasi dan embed program Gambar 4.2 Illustrasi kompilasi dan embed program Illustrasi ketika startup 1 Illustrasi ketika startup 2 Gambar 4.3 Illustrasi ketika startup Illustrasi testbed 1 Illustrasi testbed 2 Illustrasi testbed 3 Illustrasi testbed 4 Gambar 4.4 Illustrasi testbed

4.1 Program Transmisi

Transmisi 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 Pengirim

Sintaks 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<h){ because="" j="" (requested="" file="" order)="" starts="" at="" zero="" 63="" so="" it's="" j+1="" 64="" use="" this="" if="" need="" resting="" time="" for="" when="" k="" reach="" certain="" accumulative="" bytes="" 65="" *if(k%1400="=0){" 66="" sleep(1);="" 67="" }*="" 68="" read(tosmac_dev,="" (tos_msg*)&recv_pkt,="" sizeof(tos_msg));="" 69="" waiting="" receiver="" to="" send="" a="" packet="" (for="" ack),="" it="" will="" wait="" until="" is="" ready="" 70="" requested="" order="" of="" in="" packet,="" 3000="" -3000,="" the="" data="" type="" doesn't="" allow="" over="" while="" 3300="" needed,="" we="" start="" from="" below="" 0.="" 71="" printf("packet="" %d="" %d\n",j,h);="" verbose="" 72="" converted="" into="" byte="" 73="" lseek(file,k,seek_set);="" seek="" 74="" read(file,send_pkt.data,tosh_data_length);="" reading="" 28="" file,="" then="" read="" next="" due="" while()="" loop,="">>>>> 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 
</h){>

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 Penerima

Sintaks 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 Openjpeg

Subbab 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 Testbed

Secara 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 Perintah

Disini 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 Program

Setelah 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 * root@192.168.98.101:transmit/ && scp *  
root@192.168.99.102:transmit/ 
cd /[lokasi folder openjpeg] 
scp -r [folder openjpeg] root@192.168.98.101: 
scp -r [folder openjpeg] root@192.168.99.102: 

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:

  1. Berikut mengandung perintah untuk mengirim citra raw dengan nama file “A”:
    #!/bin/bash 
    /root/transmit/send_file_advance /root/image/1.ppm
    
  2. Berikut mengandung perintah untuk mengkompresi citra raw ke format JPEG2000 dengan rasio 1 dengan nama file “B”:
    #!/bin/bash 
    image_to_j2k -i /root/image/1.ppm -r 1 -o /root/image/1r1.j2k 
    /root/transmit/send_command Finish!! 
    
  3. Berikut mengandung perintah untuk mengirim citra JPEG2000 rasio 1 dengan nama file “C”:
    #!/bin/bash 
    /root/transmit/send_file_advance /root/image/1r1.j2k 
    
  4. Berikut mengandung perintah untuk mengkompresi citra raw ke format JPEG2000 dengan rasio 5 dengan nama file “D”:
    #!/bin/bash 
    image_to_j2k -i /root/image/1.ppm -r 5 -o /root/image/1r5.j2k 
    /root/transmit/send_command Finish!! 
    
  5. Berikut mengandung perintah untuk mengirim citra JPEG2000 rasio 5 dengan nama file “E”:
    #!/bin/bash 
    /root/transmit/send_file_advance /root/image/1r5.j2k 
    
  6. Berikut mengandung perintah untuk mengkompresi citra raw ke format JPEG2000 dengan rasio 10 dengan nama file “F”:
    #!/bin/bash 
    image_to_j2k -i /root/image/1.ppm -r 1 -o /root/image/1r10.j2k 
    /root/transmit/send_command Finish!! 
    
  7. Berikut mengandung perintah untuk mengirim citra JPEG2000 rasio 10 dengan nama file “G”:
    #!/bin/bash 
    /root/transmit/send_file_advance /root/image/1r10.j2k 
    
  8. Untuk file “B”, “D”, “F”, setelah kompresi akan mengirim karakter “Finish!!” untuk memberi tahu receiver bahwa kompresi telah selesai.

File dari tabel diatas akan ditaruh ke directory “/root/command”.

cd /[lokasi file command] 
scp * root@192.168.98.101:command/  
scp * root@192.168.99.102:command/ 

4.3.3 Konfigurasi Startup

Langkah 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 

Contoh pemberian perintah poweroff Gambar 4.5 Contoh pemberian perintah poweroff Contoh transmisi Gambar 4.6 Contoh transmisi

4.3.4 Penggunaan Testbed

Untuk 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 Data

Di 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 Listrik

Secara 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.

Konsumsi tegangan listrik 5 meter Gambar 4.7 Konsumsi tegangan listrik 5 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.

Konsumsi tegangan listrik 10 meter Gambar 4.8 Konsumsi tegangan listrik 10 meter

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.

Konsumsi tegangan listrik 15 meter Gambar 4.9 Konsumsi tegangan listrik 15 meter

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.

Konsumsi arus listrik 5 meter Gambar 4.10 Konsumsi arus listrik 5 meter

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.

Konsumsi arus listrik 10 meter Gambar 4.11 Konsumsi arus listrik 10 meter

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.

Konsumsi arus listrik 15 meter Gambar 4.12 Konsumsi arus listrik 15 meter

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.

Konsumsi daya listrik 5 meter Gambar 4.13 Konsumsi daya listrik 5 meter

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.

Konsumsi daya listrik 10 meter Gambar 4.14 Konsumsi daya listrik 10 meter

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.

Konsumsi daya listrik 15 meter Gambar 4.15 Konsumsi daya listrik 15 meter

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 Transmisi

Selain 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.

Konsumsi waktu kompresi dan transmisi Gambar 4.16 Konsumsi waktu 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.

Konsumsi waktu keseluruhan Gambar 4.17 Konsumsi waktu keseluruhan

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 Citra

Setelah dari segi waktu dilihat juga dari segi kualitas citra dengan menggunakan ukuran PSNR.

PSNR citra setelah proses transmisi Gambar 4.18 PSNR citra setelah proses transmisi

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 Memory

Perbandingan penggunaan maksimal virtual memory Gambar 4.19 Perbandingan penggunaan maksimal virtual memory

Gambar 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.

Besar file citra Gambar 4.20 Besar file citra

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 Penutup

5.1 Simpulan

Dari keseluruhan penelitian ini dapat disimpulkan sebagai berikut:

  1. Implementasi codec OpenJPEG pada embedded system Imote2 Linux dilakukan kompilasi dengan arm-xscale-linux-gnu, jpwl diaktifkan dan tiff dinonaktifkan, dan diperlukan dependencies tambahan yaitu lcms2, zlib, dan libpng.
  2. Mekanisme implementasi transmisi citra embedded system Imote2 Linux dibutuhkan program ditulis dalam bahasa C dengan fitur pengiriman file fungsi yang diperlukan antara lain “creat”, “open”, “close”, “read”, dan “write”. Solusi untuk buffer yang terbatas maksimal adalah 28 byte, maka pengiriman bertahap sehingga fungsi looping diimplementasikan. Untuk keperluan testbed dibuat program pengirim perintah dan penerima perintah, dengan program pengirim sebagai pengirim karakter, dan program penerima sebagai penerima karakter ditambahkan fungsi “system” agar karakter tersebut diperlakukan sebagai perintah, kemudian diaktifkan saat startup.
  3. Penelitian ini telah berhasil untuk mentransmisikan citra, transmisi citra emebedded system Imote2 Linux dimana citra dicapture tanpa kompresi menghasilkan ukuran file citra 921,615 kB, pada jarak 5 meter sampai 15 meter mengkonsumsi daya listrik antara 350 mW – 450 mW, memerlukan waktu antara 10 menit – 15 menit, dengan memory untuk setiap transmisi 2000 kB.
  4. Penerapan skema JPEG2000 terhadap citra dalam proses transmisi sangat meringankan beban transmisi dari segi daya listrik, dan waktu transmisi. Transmisi citra dengan jarak 5 meter sampai 15 meter menghasilkan, untuk rasio 1 mengkonsumsi daya listrik 191 mW – 294 mW dengan waktu transmisi sekitar 5 menit, rasio 5 mengkonsumsi daya listrik 87 mW – 152 mW dengan waktu transmisi sekitar 2 menit, dan rasio 10 mengkonsumsi daya listrik 40 mW – 78 mW dengan waktu transmisi 1 menit 30 detik.
  5. Dari segi kualitas citra menunjukkan kinerja baik pada rasio 5 dan rasio 10. Penyebab utama adalah ukuran file, dimana semakin besar ukuran file semakin besar waktu transmisi sehingga memperbesar peluang untuk terjadi bit error transmisi.

5.2 Saran

Dengan berhasilnya mentransmisikan citra pada Imote2 Linux, alat ini dapat digunakan baik untuk keperluan di lapangan maupun penelitian lebih lanjut. Berikut merupakan saran penelitian lanjutan:

  1. Di penelitian ini pengendalian transmisi masih minimal, maka selanjutnya agar dapat dikembangkan sistem transmisi yang menerapkan error dan flow control dari bidang komunikasi data.
  2. Transmisi yang dilakukan sebatas point-to-point (antar perangkat), berikutnya agar diterapkan multi-hop transmission.
  3. Teknis penelitian untuk mengoperasikan Imote2 Linux masih via command-line, dianjurkan untuk dibikinkan pengoperasi versi graphical user interface (GUI) untuk memudahkan penggunaan dan penelitian.
  4. Jarak transmisi di penelitian ini adalah 5 meter, 10 meter, dan 15 meter, jarak masih dapat divariasikan menurut datasheet hingga maksimal 100 meter.
  5. Kompresi citra dapat divariasikan dari fitur-fitur JPEG2000 hingga menerapkan standar kompresi citra lainnya, lebih lanjut ke video.
  6. Multimedia Sensor Board IMB400 juga terdapat sensor suara yang belum disentuh di penelitian ini, jika digabung dengan video maka dapat dikembangkan ke environment monitoring dengan audio-video.
  7. Jika multi-hop dan audio-video dapat diterapkan maka dapat dilanjutkan dengan penelitian berikutnya yaitu distributed audio-video streaming pada embedded system.

Citra

Citra asli Gambar 1. Citra asli Citra tanpa kompresi setelah transmisi 5 meter Gambar 2. Citra tanpa kompresi setelah transmisi 5 meter Citra tanpa kompresi setelah transmisi 10 meter Gambar 3. Citra tanpa kompresi setelah transmisi 10 meter Citra tanpa kompresi setelah transmisi 15 meter Gambar 4. Citra tanpa kompresi setelah transmisi 15 meter Citra terkompresi rasio 1 setelah transmisi 5 meter Gambar 5. Citra terkompresi rasio 1 setelah transmisi 5 meter Citra terkompresi rasio 1 setelah transmisi 10 meter Gambar 6. Citra terkompresi rasio 1 setelah transmisi 10 meter Citra terkompresi rasio 1 setelah transmisi 15 meter Gambar 7. Citra terkompresi rasio 1 setelah transmisi 15 meter Citra terkompresi rasio 5 setelah transmisi 5 meter Gambar 8. Citra terkompresi rasio 5 setelah transmisi 5 meter Citra terkompresi rasio 5 setelah transmisi 10 meter Gambar 9. Citra terkompresi rasio 5 setelah transmisi 10 meter Citra terkompresi rasio 5 setelah transmisi 15 meter Gambar 10. Citra terkompresi rasio 5 setelah transmisi 15 meter Citra terkompresi rasio 10 setelah transmisi 5 meter Gambar 11. Citra terkompresi rasio 10 setelah transmisi 5 meter Gambar 12. Citra terkompresi rasio 10 setelah transmisi 10 meter Gambar 12. Citra terkompresi rasio 10 setelah transmisi 10 meter Citra terkompresi rasio 10 setelah transmisi 15 meter Gambar 13. Citra terkompresi rasio 10 setelah transmisi 15 meter

Daftar Pustaka

  • Ahmad, A. 2005. Wireless and Mobile Data Networks. New Jersey : John Wiley & Sons Ltd.
  • Akyildiz, I, F. Vuran, M, C. 2010. Wireless Sensor Networks. Chichester : John Wiley & Sons Ltd.
  • Boliek, M. Christopoulos, C. Majani, Eric. 16 Maret 2000. JPEG 2000 Part I Final Committee Draft Version 1.0. ISO/IEC FCD15444-1 : 2000.
  • Daintree Network, Inc. 2006. Understanding the ZigBee Application Framework. Daintree Networks Inc. http://www.daintree.net/downloads/whitepapers/understanding_application_framework_whitepaper.pdf. Diakses: 27 Januari 2014.
  • Ergen, S, C. 10 September 2004. ZigBee/IEEE 802.15.4 Summary. http://staff.ustc.edu.cn/~ustcsse/papers/SR10.ZigBee.pdf. Diakses: 27 Januari 2014.
  • Garcia-Sanchez, A. Garcia-Sanches, F. Losilla, F. Kulakowski, P. Garcia-Haro, J. Rodriguez, A. Lopez-Bao, J. Palomares, F. 3 Agustus 2010. Wireless Sensor Network Deployment for Monitoring Wildlife Passage. mdpi.com., hal. 7236-7262.
  • Irwin, J, D. 1993. Basic Engineering Circuit Analysis Fourth Edition. New York : Macmillan Publishing Company.
  • Karthikeyan, A. Shankar, T. Srividhya, V. Sarkar, S. Gupte, A. 20 Januari 2013. Energi Efficient Distributed Image Compression Using JPEG2000 in Wireless Sensor Networks (WSNs). Journal of Theorical and Applied Information Technology, vol. 47, no. 2, hal.860-869. http://www.jatit.org. Diakses: 14 Oktober 2013.
  • Kasteleiner, J. 2010. “Principles of applying Embedded Linux on Imote2” (Diploma Thesis). Faculty of Computer Science and Engineering, University of Applied Sciences Frankfurt am Main.
  • Mowafi, M. Awad, F. Taqieddin, E. Banimelhem, O. 25-27 April 2011. Experimental Evaluation of Image Compression and Transmission for TinyOS-Based Imote2 Platform. International Conference on Innovations in Information Technology, Abu Dhabi, hal.173-178. http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=5893811&url=http%3A%2F%2Fieeexplore.ieee.org%2Fstamp%2Fstamp.jsp%3Ftp%3D%26arnumber%3D5893811. Diakses: 25 September 2013.
  • Mowafi, M. Awad, F. Taqieddin, E. Banimelhem, O. 4 April 2012. A Practical Study of Jointly Exploiting Multiple Image Compression Technique for Wireless Multimedia Sensor Networks. Journal of Communication, vol. 7, no. 4, hal. 309-320. http://www.jocm.us. Diakses: 25 September 2013.
  • Nasri, M. Helali, A. Sghaier, H. Maaref, H. 23-25 Maret 2010. Adaptive image transfer for wireless sensor networks (WSNs). 2010 International Conference on Design & Technology of Integrated Systems in Nanoscale Era, Hammamet, hal. 1-7. http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=5487597&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D5487597. Diakses: 14 Oktober 2013.
  • Natha, F, S. 2012. "Performasi Platform Imote2 Menggunakan Standar 802.11 pada Jaringan Sensor Nirkabel" (Tugas Akhir), Denpasar : Jurusan Teknik Elektro., Universitas Udayana.
  • Pekhteryev, G. Sahinoglu, Z. Orlik, P. Bhati, G. Mei 2005. Image Transmission over IEEE 802.15.4 and ZigBee Networks. IEEE ISCAS, Kobe. http://www.merl.com/publications/docs/TR2005-030.pdf. Diakses: 27 Maret 2014.
  • Purnama, F. Widyantara, I, M, O. Sastar, N, P. 14-15 November 2013. Implementasi Embedded Linux pada Jaringan Sensor Nirkabel Platform Imote2. Prosiding Conference on Smart-Green Technology in Electrical dan Information Systems, Bali, hal. 91-96. http://ojs.unud.ac.id/index.php/prosidingcsgteis2013/article/download/7259/5508.Diakses: 27 Maret 2014.
  • Shi, Y. Sun, H. 2007. Image and Video Compression for Multimedia Engineering Second Edition. Broken Sound Parkway NW : Taylor & Francis Group, LLC.
  • Shwe, H, Y. Wang, C. Chong, P, H, J. Kumar, A. September 2013. Robust Cubic-Based 3-D Localization for Wireless Sensor Networks. wireless sensor network, vol. 5, no. 9, hal. 169-179. www.scirp.org. Diakses: 12 Oktober 2013
  • Wiasta, I, M. 2012. “Performasi Platform Imote2 pada Jaringan Sensor Nirkabel” (Laporan Tugas Akhir). Denpasar : Jurusan Teknik Elektro, Universitas Udayana.

Resources

  1. https://0fajarpurnama0.github.io/bachelor/2020/11/06/tugas-akhir-fajar-purnama
  2. https://0fajarpurnama0.medium.com/transmisi-citra-pada-perangkat-jaringan-sensor-visual-nirkabel-platform-imote2-berbasis-ieee-802-15-7f1718fcc84f
  3. https://hicc.cs.kumamoto-u.ac.jp/~fajar/bachelor/tugas-akhir-fajar-purnama
  4. https://blurt.world/blurtindonesia/@fajar.purnama/transmisi-citra-pada-perangkat-jaringan-sensor-visual-nirkabel-platform-imote2-berbasis-ieee-802-15-4-zigbee-embedded-linux-1
  5. https://blurt.world/blurtindonesia/@fajar.purnama/transmisi-citra-pada-perangkat-jaringan-sensor-visual-nirkabel-platform-imote2-berbasis-ieee-802-15-4-zigbee-embedded-linux-2
  6. https://blurt.world/blurtindonesia/@fajar.purnama/transmisi-citra-pada-perangkat-jaringan-sensor-visual-nirkabel-platform-imote2-berbasis-ieee-802-15-4-zigbee-embedded-linux-3
  7. https://0darkking0.blogspot.com/2020/11/simulasi-konfigurasi-jaringan-ict.html
  8. https://hive.blog/indonesian/@fajar.purnama/transmisi-citra-pada-perangkat-jaringan-sensor-visual-nirkabel-platform-imote2-berbasis-ieee-802-15-4-zigbee-embedded-linux-1
  9. https://hive.blog/indonesian/@fajar.purnama/transmisi-citra-pada-perangkat-jaringan-sensor-visual-nirkabel-platform-imote2-berbasis-ieee-802-15-4-zigbee-embedded-linux-2
  10. https://hive.blog/indonesian/@fajar.purnama/transmisi-citra-pada-perangkat-jaringan-sensor-visual-nirkabel-platform-imote2-berbasis-ieee-802-15-4-zigbee-embedded-linux-3
  11. https://0fajarpurnama0.cloudaccess.host/index.php/9-fajar-purnama-academics/91-transmisi-citra-pada-perangkat-jaringan-sensor-visual-nirkabel-platform-imote2-berbasis-ieee-802-15-4-zigbee-embedded-linux
  12. https://steemit.com/indonesian/@fajar.purnama/transmisi-citra-pada-perangkat-jaringan-sensor-visual-nirkabel-platform-imote2-berbasis-ieee-802-15-4-zigbee-embedded-linux-1
  13. https://steemit.com/indonesian/@fajar.purnama/transmisi-citra-pada-perangkat-jaringan-sensor-visual-nirkabel-platform-imote2-berbasis-ieee-802-15-4-zigbee-embedded-linux-2
  14. https://steemit.com/indonesian/@fajar.purnama/transmisi-citra-pada-perangkat-jaringan-sensor-visual-nirkabel-platform-imote2-berbasis-ieee-802-15-4-zigbee-embedded-linux-3
  15. http://0fajarpurnama0.weebly.com/blog/transmisi-citra-pada-perangkat-jaringan-sensor-visual-nirkabel-platform-imote2-berbasis-ieee-802154-zigbee-embedded-linux
  16. https://0fajarpurnama0.wixsite.com/0fajarpurnama0/post/transmisi-citra-pada-perangkat-jaringan-sensor-visual-nirkabel-platform-imote2-berbasis-ieee-802-15
  17. https://read.cash/@FajarPurnama/transmisi-citra-jaringan-sensor-visual-nirkabel-platform-imote2-ieee-802154-zigbee-embedded-linux-5faee071

How do you rate this article?


2

0

0fajarpurnama0
0fajarpurnama0

I'm a content creator who is interested in financial freedom, decentralization, internet, computer, censorship resistance, unconfiscateable, cryptocurrency, monetization, passive income, and referrals.


Fajar Purnama Academics
Fajar Purnama Academics

This blog contains anything that I wrote in academic sectors which includes essays, homeworks, publications, and reports. The contents unless copyrights are specified are licensed under creative commons attribution customized sharealike (cc-by-sa) where I Fajar Purnama as the creator customized the ShareAlike (sa) license here where you are also allowed to sell my contents but with a condition that you must mention that the free and open version is available here.

Send a $0.01 microtip in crypto to the author, and earn yourself as you read!

20% to author / 80% to me.
We pay the tips from our rewards pool.