BAB 3 PERANCANGAN SISTEM
3.1.
Gambaran Umum Sistem Sistem ini akan menampilkan tampilan pada layar client ke proyektor melalui server. Pada client diinstalasi sebuah program yang akan mengambil tampilan dan mengirimkannya ke server secara terus menerus. Tampilan pada client akan disimpan dalam sebuah file gambar dan file tersebut dikirimkan ke server menggunakan layanan FTP melalui koneksi Wifi. Setelah menerima gambar tampilan dari client, server akan menampilkan gambar tersebut melalui keluaran VGA yang terhubung dengan proyektor. Server berfungsi juga untuk mengatur hak presentasi dari pengguna. Pengguna yang terhubung ke server dapat berjumlah lebih dari satu namun tampulan yang ditampilkan ke proyektor hanya tampilan dari satu pengguna. Oleh karena itu, server akan mengatur pengguna yang akan melakukan presentasi dengan sistem antrian atau dengan permintaan pengguna. Pengguna yang sedang melakukan presentasi dapat melihat siapa saja pengguna yang terhubung ke server dan memberikan hak presentasi ke pengguna lainnya. Blok diagram alat pendukung presentasi menggunakan Wifi ditunjukkan pada gambar 3.1
1
2
Gambar 3.1 Diagram Blok Sistem •
Aplikasi Wireless Presentation berfungsi untuk mengambil tampilan dari client dan mengirimkannya ke server.
•
Wifi berfungsi untuk menghubungkan client ke server dan sebaliknya untuk pengiriman data.
•
Modul ARM berfungsi untuk memproses gambar yang dikirimkan oleh client untuk ditampilkan ke proyektor dan juga untuk mengatur urutan presentasi dari pengguna-pengguna yang terhubung.
•
Modul VGA merupakan media keluaran dari modul ARM yang dapat diganti dengan interface lain seperti modul LCD.
3 •
Proyektor merupakan media keluaran yang terhubung ke modul VGA dari modul ARM untuk menampilkan gambar tampilan client yang sudah dikirimkan ke server.
3.2.
Pemilihan Perangkat Keras
3.2.1. Pemilihan Modul Embedded PC Kebanyakan embedded PC yang beredar di pasaran saat ini sudah memiliki media keluaran terintegrasi berupa HDMI ataupun DVI. Untuk keperluan penelitian ini, dibutuhkan embedded PC dengan keluaran VGA terintegrasi untuk menjaga kompabilitas dengan kebanyakan proyektor yang masih menggunakan interface VGA untuk media masukannya. Oleh karena itu digunakan FriendlyARM seri mini 6410 yang media keluarannya dapat menggunakan modul VGA tambahan.
Gambar 3. 2 FriendlyARM mini 6410
4
FriendlyARM mini 6410 merupakan embedded development board berbasis prosesor SAMSUNG SC6410 ARM 11 dimana di board ini disediakan berbagai macam interface yakni: •
4-wire resistor touch screen interface(Sebuah LCD Touch Screen 4.3 Inch built in dalam paket penjualan).
•
100M Ethernet interface,
•
DB9 5-wire serial port
•
Mini USB 2.0-OTG interface
•
USB Host 1.1 interface,
•
Keluaran audio 3.5mm
•
on board microphone interface
•
TV OUT
•
SDCARD
•
IR Receiver
•
4 TTL Serial PORT
•
CMOS camera interface
•
40 pin bus interface
•
30 pin GPIO interface(meliputi I2C, SPI , interrupt ,3 ADC , 1 DAC)
•
SDIO2 Interface(untuk koneksi ke modul SD WI-FI)
•
10 Pin JTAG
•
1 Buzzer PWM
•
8 Push Button
5 •
4 LED
Board ini sendiri mendukung beberapa OS yakni : •
Linux 2.6.38 (dengan add ons Qtopia-2.20 + QtExtended-4.7.0) Æ Default OS di Flash memory.
•
Windows Computer Embedded(mendukung sampai versi Net 6.0 R3).
•
Android (with dukungan Gingerbread).
•
Ubuntu – 9.10
Tabel 3. 1 spesifikasi friendlyARM CPU DDRRAM FLASH
SAMSUNG SC6410A, ARM 11, 533 MHz (Max Clock 667 MHz) On-Board 256 MB RAM (128 MB Optional), 32 Bit Data Bus 256 MB SLC NAND Flash
Memory LCD
Four Wire Touch Screen Interface •
Support black and white, 4 level grayscale, 16 level grayscale, 256-color 4096-color STN LCD, 3.5-inch to 12.1-inch, screen resolution 1024x768;
•
Support black and white, 4 level grayscale, 16 level grayscale, 256-color, 64K-color, true color TFT LCD, 3.5-inch to 12.1-inch, screen resolution 1024x768,
Power PCB
5V Power Supply PCB Layer : 6
6 3.2.2. Pemilihan Perangkat Android Untuk pemilihan perangkat Android, digunakan ODROID - 7 sebagai perangkat yang digunakan dalam pembuatan sistem ini. ODROID - 7 dipilih karena perangkat ini sendiri dirancang untuk kebutuhan developer sehingga tidak ada resiko terjadi brick ataupun error pada sistem operasi saat melakukan percobaan karena dirancang khusus untuk menangani hal tersebut khususnya pada saat bermain dengan file – file Sistem Operasi yang cukup sensitif. Selain itu dari segi perangkat keras, ODROID - 7 memakai GPU prosesor SGX450 yang saat ini umum ditemui di berbagai perangkat Android serta resolusi yang diberikan cukup besar. Kecepatan prosesor sebesar 1 GHz juga dirasa cukup untuk menangani aplikasi yang akan dibuat. Disamping itu sistem operasi yang merupakan sistem operasi Android tanpa banyak modifikasi dari sistem operasi yang dikeluarkan oleh Google juga membuat perangkat ini sangat cocok untuk pengembangan aplikasi Android.
7
Gambar 3. 3 ODROID - 7
Spesifikasi: •
Processor Samsung S5PC110 Cortex-A8 1Ghz with 512KB L2 cache
•
3D Accelerator SGX540 (up to 20M triangles/s and 1000M pixels/s)
•
Memory 512MB Mobile DDR 400Mega data rate
•
Display 7 inch, 800 x 480 RGB interface with capacitive multi-touch screen.
•
OS android 2.3.4 Gingerbread
8 3.3.
Perancangan Piranti Lunak untuk Modul FrienlyARM Mini 6410
3.3.1. Penjelasan Cara Kerja Modul Friendly ARM dalam sistem ini akan bertindak sebagai server .Server ini akan menerima gambar dari
client. Server ini diprogram untuk
menampilkan gambar serta mengatur hak presentasi client. Pada saat pertama kali server dinyalakan, program yang ada pada server langsung dijalankan. Ketika masih belum ada client yang terkoneksi ke server, program akan menunggu sampai ada client yang terkoneksi. Jika client sudah terkoneksi dan memberikan username ke server, maka server akan memasukkan parameter socket ID ke sebuah list yang berupa class “QList” yang telah dibuat di program dengan nama objek “SocketID” dan memasukkan username ke list lainnya yang memiliki tipe class yang sama seperti “SocketID” dengan nama “User”. Lalu server akan melakukan pengecekkan apakah client diijinkan mengirim gambar atau tidak dan memeritahukan hal tersebut ke client. Setelah
client
mendapatkan
pesan
yang
mengizinkannya
untuk
menampilkan gambar ke server maka server akan menunggu pesan berikutnya dari client yang menunjukkan bahwa client sudah selesai mengirimkan gambar melalui FTP. Setelah pesan tersebut diterima oleh server maka server akan langsung menampilkan gambar yang dikirim oleh client. Apabila server sudah selesai menampilkan gambar, maka server akan menigirimkan sebuah pesan yang menandakan bahwa berikutnya ke server.
client sudah diperbolehkan untuk mengirimkan gambar
9 Jika server menerima pesan ‘update’, maka server akan mengirimkan list user yang terkoneksi ke server kecuali user yang me request update itu sendiri. Jika server menerima pesan “pass:<username yang dituju>” maka server akan memberikan hak kepada user yang dituju untuk menampilkan gambar ke server dan memindahkannya ke urutan list user paling atas. Lalu user yang memberikan pesan tersebut langsung dilarang untuk menampilkan gambar. Bila user memutuskan hubungan ke server maka server akan langsung mengizinkan user yang ada pada antrian berikutnya untuk menampilkan gambar.
10 3.3.2. Diagram Alir
Gambar 3. 4 Diagram alir Modul Server 3.4.
Perancangan Piranti Lunak untuk Client Android
3.4.1. Perancangan Aplikasi Aplikasi pada android dirancang untuk memiliki sebuah service agar aplikasi dapat tetap berjalan pada proses background. Service yang dibuat akan ditampilkan pada notification bar dan hanya akan hilang jika service sudah
11 berhenti berjalan. Untuk menjaga kestabilan aplikasi, maka proses penting yang dilakukan aplikasi dijalankan pada sebuah thread. Aplikasi dibangun sedemikian rupa agar selalu berjalan pada mode landscape untuk lebih mendukung keperluan presentasi. Aplikasi dirancang untuk mengambil tampilan dari layar android (screenshot) dan menyimpannya dalam bentuk file JPEG yang kemudian dikirim ke server. Model komunikasi menggunakan protokol TCP untuk melakukan kontrol dan digunakan aplikasi FTP untuk melakukan transaksi data hasil screenshot. Client android harus dapat diidentifikasi oleh server sehingga diperlukan username unik untuk tiap client yang terhubung pada server. Pada saat melakukan insialisasi koneksi dari client ke server, client perlu mengirimkan username kepada server dan client harus menunggu respon dari server apabila username bisa dipakai atau tidak. Aplikasi Android dibuat untuk platform 2.1 (éclair) karena walaupun persentase penggunanya sudah tidak terlalu tinggi namun banyak perangkat yang didukung
hanya
sampai
versi
ini.
Dan
berdasarkan
data
dari
developer.android.com penurunan persentase perangkat dengan versi ini relatif kecil.
12 3.4.2. Diagram Alir Program Utama Android start
Inisialisasi variabel dan layout pada onCreate() serta meminta root permission
Menunggu input user
tidak Apakah ada tombol yang ditekan
set fPass dan mengisi nextUser dengan user yang ditekan Nama user
ya Tombol apakah yang ditekan?
stop
Stop service screenshot yang sedang berjalan
tidak
Panggil activity untuk menyalakan Wi-Fi
Start set fUpdate
Update Client List Apakah Wi-Fi aktif?
aktif Start service untuk screenshot dan mengirim file hasil screenshot
Gambar 3. 5 Diagram alir aplikasi Android Aplikasi android pada saat pertama kali dijalankan akan menjalankan fungsi onCreate() untuk menginisialisasi variabel dan objek objek pada aplikasi. Setelah selesai melakukan inisialisasi maka aplikasi akan meminta hak akses root. Hak akses root kemudian digunakan untuk mengubah akses dari file
13 framebuffer pada /dev/graphics/fb0 untuk dapat dibaca oleh aplikasi biasa (aplikasi non sistem). Setelah itu aplikasi tidak akan melakukan apa-apa sampai ada input dari pengguna. Ketika tombol start ditekan, maka aplikasi akan memeriksa wi-fi apakah sudah aktif. Jika wi-fi belum aktif maka aplikasi akan menjalankan konfigurasi wi-fi agar pengguna dapat melakukan konfigurasi lebih lanjut. Dari konfigurasi wi-fi jika pengguna menekan tombol back pada android maka pengguna akan kembali pada tampilan aplikasi. Aplikasi kemudian akan menunggu inputan kembali. Jika pada saat tombol start ditekan wi-fi sudah aktif, maka aplikasi akan menjalankan service pada background. Ketika tombol stop ditekan, maka aplikasi akan memberhentikan service yang mana service akan lebih lanjut memberhentikan semua aktivitas yang dilakukan aplikasi pada background. Tombol update client list hanya berguna untuk mengubah nilai flag fUpdate menjadi true. Flag ini baru akan diperiksa pada saat thread sudah berjalan. Tombol ini berfungsi untuk meminta list client dari server dan menampilkannya pada tampilan aplikasi jika ada pengguna lain yang sedang terhubung pada server. List client yang ditampilkan pada aplikasi dapat ditekan. Jika ditekan, maka flag fPass akan diubah menjadi true dan nama pengguna yang ditekan akan dimasukkan pada variable nextUser yang sama seperti fUpdate yang baru akan
14 diperiksa pada thread dijalankan. Menekan tombol ini akan memberikan hak presentasi pada user yang ditekan oleh pengguna. Jika tombol menu pada android ditekan, maka akan muncul tampilan menu yang berisikan preference. 3.4.3. Diagram Alir Service Android
Gambar 3. 6 Diagram alir service Android Service pada android berjalan di background. Service akan menampilkan notifikasi pada notification bar untuk menandakan service sedang berjalan. Setelah itu service akan mengecek username yang dimasukkan oleh pengguna
15 apakah “:”, jika iya, maka pengguna akan diberikan pesan untuk mengganti username. Jika username sudah sesuai dengan yang diminta barulah service akan menjalankan thread untuk mengambil dan mengirim gambar. Service dapat berhenti berjalan jika tombol stop pada aplikasi ditekan. Ketika service berhenti, maka service akan menjalankan fungsi onDestroy yang mana dalam fungsi ini, service akan meminta thread untuk menghentikan aktivitasnya.
16 3.4.4. Diagram Alir Thread Android start
Inisialisasi variabel
Melakukan koneksi ke server
Apakah koneksi sukses? sukses
Kirim username ke server
tidak Tunggu pesan “accept” dari server
“reject”
belum
Apakah respon dari server?
“user_exist”
Peringatkan user bahwa user tidak valid
“accept” Apakah pesan “accept” sudah didapat?
sudah
Melakukan login FTP dan Mendaftarkan diri pada pipeline proses android
Melakukan screencapture
Kirim file
end
Gambar 3. 7 Diagram alir thread Android
17 Thread terlebih dahulu akan melakukan koneksi ke server pada IP 192.168.0.103 dan port 1234. Jika koneksi berhasil, maka aplikasi akan mengirimkan pesan “user:<username>” dan menanti kembali respon dari server. Ada 3 kemungkinan respon server yaitu “accept”, “user_exist” dan “reject”. Pesan “accept” menandakan bahwa tidak ada pengguna lain yang terhubung dan aplikasi bisa langsung melakukan presentasi. Pesan “user_exist” menandakan bahwa username yang dikirimkan ke server sudah dipakai oleh pengguna lain. Pesan “reject” menandakan bahwa sedang ada pengguna lain yang dilayani oleh server. Jika aplikasi mendapatkan pesan “accept” maka aplikasi akan melakukan login ke layanan FTP server, mendaftarkan diri pada pipeline proses android dan mulai melakukan screencapture dan pengiriman gambar. Jika aplikasi mendapatkan pesan “user_exist”, maka aplikasi akan menghentikan thread dan memutuskan koneksi dengan server. Jika aplikasi mendapatkan pesan “reject”, maka aplikasi tetap akan terkoneksi dengan server dan menunggu pesan “accept”. Jika pesan “accept” sudah diterima, maka akan dilakukan login ke layanan FTP dari server, mendaftarkan diri pada pipeline proses android dan mulai melakukan proses screencapture yang akan diterangkan lebih detil selanjutnya dan melakukan proes pengiriman gambar yang juga akan diterangkan lebih detil selanjutnya. Setelah gambar selesai dibuat, maka gambar akan dikirim ke server. Pengiriman gambar dilakukan melalui FTP. Pengiriman gambar dilakukan
18 dengan menggunakan library Apache common net. File dikirimkan ke directory /home/plg server. 3.4.5. Diagram Alir Screen Capture Android
Gambar 3. 8 Diagram alir fungsi screencapture Android
19 Screencapture dilakukan dengan memanfaatkan framebuffer dari android yang terletak pada /dev/graphics/fb0. Framebuffer dari android disimpan dalam suatu array byte. Array ini kemudian diseleksi sesuai dengan aspect ratio dari layar (4:3) dan dimasukkan kedalam array gambar 32 bit untuk kemudian diproses menjadi gambar. Array diseleksi sedemikian rupa sehingga yang diambil hanya bagian tengah dari tampilan Android seperti yang diilustrasikan pada gambar 3.7. Array gambar 32 bit berisi informasi warna dalam format RGBA dengan urutan 8 bit pertama (bit 0-7) adalah warna biru (blue), 8 bit selanjutnya (bit 8-15) adalah warna hijau (green), 8 bit selanjutnya (bit 16-23) adalah warna merah (red) dan 8 bit terakhir (bit 24-31) adalah transparansi warna (alpha) seperti ilustrasi pada gambar 3.8. Array gambar ini kemudian diproses dengan fungsi Bitmap.createBitmap dengan memberikan parameter array gambar yang digunakan, resolusi gambar yang dihasilkan dan mode gambar yang digunakan. Setelah gambar terbentuk, gambar diskalakan menjadi 994 x 744 agar sesuai dengan resolusi proyektor dan kemudian gambar disimpan dalam file screen.jpg.
20
Gambar 3. 9 ilustrasi pemotongan gambar
Gambar 3. 10 ilustrasi array warna pada screencapture
21 3.4.6. Diagram Alir Pengiriman File Android
Gambar 3. 11 Diagram alir fungsi pengiriman file Android
22 Fungsi ini pertama-tama akan membuka file yang akan dikirim dengan memasukkannya ke sebuah variabel FileInputStream. Variabel ini kemudian akan dikirim ke server menggunakan aplikasi FTP. Setelah pengiriman file gambar selesai, maka program akan mengecek apakah tombol update client list pada aplikasi ditekan. Jika tombol tersebut tidak ditekan, maka aplikasi akan mengecek apakah pengguna menekan nama pengguna untuk diberikan hak presentasi. Jika tidak ada juga barulah program akan memberikan konfirmasi bahwa file sudah dikirim dan kemudian menunggu pesan “ready” dari server yang menandakan bahwa server sudah siap untuk menerima data kembali. Setelah data tersebut diterima maka thread akan kembali melakukan screencapture dan melakukan siklus yang sama sampai tombol stop pada aplikasi ditekan. Jika tombol update ditekan, maka proses akan menjalankan predefined proses untuk mengupdate client list. Jika nama pengguna pada client list ditekan, maka proses akan menjalankan predefined proses untuk memindahkan hak presentasi kepada username yang ditekan.
23 3.4.7. Diagram Alir Update Client List Android
Gambar 3. 12 Diagram alir fungsi update client list Android Saat tombol update ditekan, maka aplikasi akan mengirimkan pesan “update” ke server dan kemudian menunggu respon dari server. Respon dari
24 server akan berupa “<user1>:<user2>:<user3>:…”. Jika respon dari server berupa “:”, maka hal ini menandakan bahwa tidak ada pengguna lain yang terhubung ke server sehingga aplikasi tidak akan mengupdate list client-nya. Aplikasi kemudian akan menampilkan pengguna yang sudah diterima di tampilan client list pada aplikasi. Setelah itu barulah dikrimkan konfirmasi bahwa file sudah dikirim dan kembali melakukan rutinnya. 3.4.8. Diagram Alir Memindahkan Hak Presentasi
Gambar 3. 13 Diagram alir fungsi memindahkan hak presentasi
25 Saat nama pada list client aplikasi ditekan, maka aplikasi akan mengirimkan pesan “pass:<user>” dengan user merupakan nama dari pengguna yang ditekan. Setelah mengirimkan pesan tersebut, aplikasi akan menunggu konfirmasi “reject” dari server. Setelah konfirmasi didapat, maka aplikasi akan memutuskan komunikasi dengan server dan memberhentikan thread. 3.4.9. Perancangan Antar Muka
Gambar 3. 14 Perancangan antar muka Android Antar muka pada aplikasi Android berisikan tiga tombol yaitu tombol start untuk memulai presentasi, tombol stop untuk menghentikan presentasi dan tombol update client untuk melihat pengguna lain yang terhubung ke server. Pengguna lain yang terhubung ke server akan ditampilkan diatas ketiga tombol tersebut dalam bentuk list.
26 3.5.
Perancangan Piranti Lunak untuk PC
3.5.1. Penjelasan Cara Kerja Secara keseluruhan, perancangan aplikasi untuk PC mengacu kepada perancangan aplikasi untuk android. Yang menjadi perbedaan adalah metode melakukan screencapture yang sudah tersedia dalam library java standar. Screen
capture
dilakukan
dengan
bantuan
method
createScreenCapture() yang tersedia di dalam sebuah class yaitu class java.awt.Robot. Hasil screen capture ini berupa variable BufferedImage yang selanjut nya di resize menjadi ukuran 992 x 744 dengan menggunakan method drawImage() yang ada pada class java.Graphics2D dan disimpan dalam format
.jpg
dengan
bantuan
javax.imageio.ImageIO.
method
write()
dari
class
27 3.5.2. Diagram Alir Program Utama PC
Gambar 3. 15 Diagram alir client PC
28 3.5.3. Diagram Alir Thread Aplikasi PC
Gambar 3. 16 Diagram alir thread aplikasi PC
29 3.5.4. Diagram Alir Pengiriman File PC
Gambar 3. 17 Diagram alir fungsi untuk pengiriman file
30 3.5.5. Diagram Alir Update Client List PC
Gambar 3. 18 Diagram alir fungsi update client list PC
31 3.5.6. Diagram Alir Memindahkan Hak Presentasi PC
Gambar 3. 19 Diagram alir fungsi memindahkan hak presentasi
32 3.5.7. Perancangan Antar Muka
Gambar 3. 20 Perancangan antar muka aplikasi PC Antar muka aplikasi PC kurang lebih sama dengan antar muka pada aplikasi pada perangkat android. Terdiri dari tiga tombol, tombol start untuk memulai presentasi, tombol stop untuk menghentikan presentasi dan tombol update client list untuk melihat pengguna lain yang terhubung ke server. Pada aplikasi untuk PC ini diberikan kolom untuk mengisikan username untuk didaftarkan kepada server saat pertama kali melakukan koneksi. 3.6.
Rancang Bangun
33
Gambar 3. 21 Sketsaa Layer baw wah
34
Gambarr 3. 22 Sketssa Layer ataas
35
Gamb bar 3. 23 Lay ayer Bawah
36
Gambar 3. 224 Layer Ataas Bagian Bawah
37
Gambar 3. 25 Layer Atas Bagian Atas