Dosen Pembimbing:
Amang Sudarsono, ST
NIP. 132 300 371
Akuwan Shaleh,SST
NIP. 131 831 467
Oleh:
VANDRY BINTORO S.
7203.030.044
Mengetahui:
Ketua Jurusan Telekomunikasi
During this time, we know that alarm utilization just for sending
information like sound without apprise information about availability
thieving so brankasowner don’t know it beside that it can’t call
automatically which can be controlled using telephone without limited by
distance so alarm can be controlled in everywhere. Beside that, we often see
slowness in handling thieving case, it is because of the information that is
receiving by police have slowly process. To solve the problems, it’s needed
expansion application as solution.
This security system of brankas will be active if it get trigger from
sensor limit so alarm automatically will be active and active the program of
calling automatically the security, the manager and the police. In this case
interfacing between hardware with computer using AT89S51,Webcam and
call automatically through PSTN using Dialogic D/41JCT-LS.
Dalam menyelesaikan proyek akhir ini, kami berpegang pada teori yang
pernah kami dapatkan dan bimbingan dari dosen pembimbing proyek akhir.
Dan pihak–pihak lain yang sangat membantu hingga sampai terselesaikannya
proyek akhir ini.
Proyek akhir ini merupakan salah satu syarat akademis untuk
memperoleh gelar Ahli Madya (A.Md.) di Politeknik Elektronika Negeri
Surabaya, Institut Teknologi Sepuluh Nopember Surabaya.
Kami menyadari bahwa masih banyak kekurangan pada perancangan
dan pembuatan buku proyek akhir ini. Oleh karena itu, besar harapan kami
untuk menerima saran dan kritik dari para pembaca. Semoga buku ini dapat
memberikan manfaaat bagi para mahasiswa Politeknik Elektronika Negeri
Surabaya pada umumnya dan dapat memberikan nilai lebih untuk para
pembaca pada khususnya.
Penyusun
UCAPAN TERIMA KASIH
Dalam pelaksanaan dan pembuatan proyek akhir ini kami banyak
menerima dan bantuan dari berbagai pihak. Kami bersyukur sebesar –
besarnya kepada Allah SWT atas semua karunia yang telah diberikan-Nya
kepada kami sehingga kami dapat menyelesaikannya dengan baik. Dan tanpa
menghilangkan rasa hormat kami mengucapkan terima kasih kepada pihak –
pihak yang telah membantu kami antara lain :
1. Ayah, ibu dan keluargaku yang sangat aku sayangi dan cintai, terima
kasih atas dukungan baik spiritual maupun material yang tiada
ternilai harganya sehingga saya dapat menyelesaikan proyek akhir
ini.
2. Bapak Dr. Ir. Titon., M.Eng, selaku Direktur Politeknik Elektronika
Negeri Surabaya sekaligus dosen pembimbing.
3. Bapak Drs. Miftahul Huda,MT selaku Ketua Jurusan Telekomunikasi
Politeknik Elektronika Surabaya.
4. Bapak Amang Sudarsono,ST dan Bapak Akhuwan Saleh,SST selaku
dosen pembimbing dalam pembuatan Tugas Akhir ini. Terima kasih
atas bimbingan, masukan, motivasi dan pengarahannya selama saya
mengerjakan tugas akhir.
5. Bapak Hary Oktavianto,ST selaku Kepala Lab. Digital Signal
Processing yang telah memberikan fasilitas sarana dan prasarana
yang lengkap.
6. Seluruh Dosen-Dosen pengajar kami, terima kasih atas kesabaran
dan sharing ilmunya yang bermanfaat.
7. “The Angel in My Dream” . Makasih atas semua dukungan, cinta,
perhatian, senyum, kritik dan kasih sayangnya.Semua yang kamu
dedikasikan membuatku tetap bertahan dan ingin terus meraih
impian.
8. Untuk teman – teman Lab. Digital Communication, Terimakasih
sekali atas kerjasamanya, kesabaran,dan pengertian baik dalam suka
dan duka dalam pengerjaan proyek akhir ini.
9. Makasih buat keluarga besar Telkom Be Angkatan 2003 yang selama
ini kuanggap sebagai keluargaku sendiri,dimana suka dan duka slalu
terasa bila slalu bersama kalian, makasih atas bantuan doa,
dukungan dan kebersamaan selama ini
10. Semua pihak yang ikut membantu dan merasa direpotkan, baik
secara langsung maupun tidak langsung atas terselesainya tugas
akhir ini. Maaf gak bisa nyebutin kalian satu persatu, [there is not
enough room on this page to thank everyone, but there will always be
enough room in my heart].
DAFTAR ISI
Lembar Judul ..................................................................................... i
Lemb ar Penguji ................................................................................... ii
Abstrak ................................................................................................ iii
Abstrack ............................................................................................... iv
Kata Pengantar ................................................................................... v
Ucapan Terima Kasih ........................................................................ vi
Daftar Isi............................................................................................... viii
Daftar Gambar .................................................................................... xi
Daftar Tabel......................................................................................... xiii
BAB I PENDAHULUAN................................................................ 1
1.1 Latar Belakang ........................................................... 1
1.2 Perumusan Masalah.................................................... 1
1.3 Batasan Masalah………………………………… 2
1.4 Tujuan Dan Manfaat................................................... 2
1.5 Metodologi .................................................................. 3
1.6 Sistematika Pembahasan .......................................... 3
DAFTAR PUSTAKA....................................................................... 75
LAMPIRAN ....................................................................................... 77
DAFTAR GAMBAR
1.5 METODOLOGI
Untuk menyelesaikan proyek akhir ini, dilakukan langkah-langkah
sebagai berikut:
• Perancangan Sistem
Perancangan sistem tersebut berdasarkan pada petunjuk-petunjuk
yang sudah ada.
• Perancangan Perangkat Lunak (Software) dan Perangkat
Keras (Hardware)
Untuk mengaktifkan hubungan antara fungsi-fungsi dari
AT89S51, webcam dan dialogic card tersebut dengan komputer
perlu ditambahkan atau dibuat perangkat keras (hardware) dan
perangkat lunak (software). Perancangan perangkat keras
meliputi: rangkaian mikrokontroler AT89S51, webcam dan
rangkaian dialogic card. Sedangkan untuk perancangan
perangkat lunak meliputi: pembuatan video streaming,
membangun database dengan program SQL, Pemrograman C
atau gcc (linux) untuk mengaktifkan hubungan semua komponen
pada sistem keamanan, Tutorial tentang Motion, dan bahasa
assembly .
• Pembuatan dan Pengujian Perangkat Lunak (Software) dan
Perangkat Keras (Hardware)
Dari hasi perancangan hardware dan software tersebut diadakan
pengujian terhadap kinerja dari masing-masing bagian.
• Pengujian Sistem
Setelah itu maka dapat dilakukan pengujian secara keseluruhan
dari semua sistem yang telah dibuat.
• Analisa Sistem
Kemudian kita dapat menganalisa sistem tersebut dengan mencari
kekurangan-kekurangan yang ada supaya kita bisa memperbaiki
kekurangan-kekurangan tersebut.
BAB 1 PENDAHULUAN
Memberikan latar belakang tentang permasalahan, tujuan,
masalah dan batasan masalah yang dibahas dalam proyek akhir
ini.
BAB 5 PENUTUP
Memberi kesimpulan pembahasan tentang hasil yang telah
diperoleh dan saran - saran yang memungkinkan untuk
pengembangan tugas akhir ini.
DAFTAR PUSTAKA
Pada bagian ini berisi tentang referensi – referensi yang
telah dipakai oleh penulis sebagai acuan dan penunjang serta
parameter yang mendukung penyelesaian proyek akhir ini
baik secara practice maupun sebagai teoritis.
BAB II
TEORI PENUNJANG
Pada bab ini akan diberikan teori dasar yang melandasi permasalahan
dan penyelesaiannya yang diangkat dalam proyek akhir ini. Teori dasar yang
diberikan meliputi: pembuatan video streaming, membangun database
dengan program MySQL, Pemrograman gcc untuk mengaktifkan dialogic
card, Tutorial tentang motion yang berhubungan dengan proses pengambilan
gambar (capture), HTTP dan PHP dalam pembuatan website .
2.1 LINUX
2.3 MOTION
Motion adalah sebuah program yang dapat digunakan untuk
memonitoring ruangan satu atau lebih kamera dan dapat mendeteksi setiap
gerakan yang terjadi. Motion merupakan salah satu program aplikasi yang
cukup lengkap dengan berbagai macam fasilitas yang sangat membantu
untuk sistem pengawasan.
Hasil keluaran dari software motion ini dapat berupa file
jpeg,ppm,ataupun video MPEG. Seluruh fasilitas motion dapat anda lihat di
http://www.laursen.dk/twiki/bin/view/Motion/WebHome.
Namun pada perancangan sistem keamanan brankas ini hanya memanfaatkan
rekaman video dan gambar pada saat terjadi gerakan.Format file video yang
tersimpan pada hardisk dalam bentuk avi, sedangkan format gambar yang
dihasilkan oleh Motion adalah jpeg.
Gambar 2.2
Karakteristik Elektrik RS232
Gambar 2.3
RS232 (Sebagai Komunikasi Serial )
Tabel 2.4
Fungsi masing-masing pin RS232
FF
PROGRAM
SPECIAL ADDRESS
FUNCTION REGISTER
REG.
RAM 80
ADDRESS 7F
REGISTER FLASH
RAM
PEROM
INTERNAL
00
Gambar 2.6
Struktur Memori AT89S51
Keterangan:
• SM0
Serial port mode bit 0, bit pengubah mode serial.
• SM1
Serial port mode bit 1, bit pengatur mode serial.
• SM2
Serial port mode bit 2, bit untuk mengaktifkan komunikasi
multiprosessor pada kondisi set.
• REN
Receive Enable, bit untuk mengaktifkan penerimaan data dari port
serial pada kondisi set.
• TB8
Transmit bit 8, bit ke-9 yang akan dikirim pada mode 2 atau mode
3.
• RB8
Receive bit 8, bit ke -9 yang diterima pada mode 2 atau mode 3.
Pada mode 1 bit ini berfungsi sebagai stop bit.
• TI
Transmit Interupt Flag, bit yang akan di set pada akhir pengiriman
karakter.
• RI
Receive Interupt Flag, bit yang akan diset pada akhir penerimaan
karakter.
Tabel 2.1
Register Kontol Port Serial
• Bit SM0 dan SM1 (bit7 dan 6 pada register SCON) dipakai untuk
menentukan mode kerja port serial. Setelah reset kedua bit ini
bernilai ‘0’ dan penentuan mode kerja port serial mengikuti tabel
dibawah ini .
• Bit REN(bit4) dipakai untuk mengaktifkan kemampuan port serial
untuk menerima data. Pada mode 0 kaki RxD (P3.0) dipakai untuk
mengirim data serial. Dan juga untuk menerima data serial. Sifat ini
terbawa pula pada saat port serial bekerja pada mode 1,2 dan 3,
meskipun pada mode–mode tersebut kaki RxD hanya dipakai untuk
mengirim data, agar kaki RxD bisa dipakai untuk menerima data,
terlebih dulu harus dibuat REN = ‘1’. Setelah reset bit REN bernilai
‘0’.
• Pada mode 2 dan mode 3, port serial bekerja dengan 9 bit data
(dari 11 bit, 1 bit untuk start dan 1 bit untuk stop), SBUF yang
kapasitasnya 8 bit tidak cukup untuk keperluan ini. Bit ke-sembilan
yang akan dikirim terlebih dulu diletakkan di TB8 (bit 3),
sedangkan bit RB8 (bit2) merupakan bit yang dipakai untuk
menampung bit ke -sembilan yang diterima port serial.
• Pada mode 1, RB8 dipakai untuk menampung bit stop yang
diterima, dengan demikian apabila RB8 bernilai ‘1’ maka data
diterima dengan benar, sebaliknya apabila RB8 = ‘0’ berarti terjadi
kesalahan frame (framing error). Kalau bit SM2(bit 5) bernilai ‘1’
pada mode 1, jika terjadi kesalahan frame, RI tidak akan menjadi ‘1’
(aktif ) meskipun SBUF sudah berisi data dari port serial (bit stop
diterima dengan benar).
Bit ke 9 ini bisa dipakai sebagai bit paritas, hanya saja bit paritas
yang dikirim harus ditentukan sendiri dengan program dan
diletakkan pada TB8 dan bit paritas yang diterima pada RB8 dipakai
untuk menentukan integritas data secara program pula. Tidak seperti
dalam UART standart. Semuanya dikerjakan oleh perangakat keras
dalam IC UART.
• Bit T1 (bit 1) merupakan sinyal yang setara dengan sinyal
Transmiter Holding Register Empty (THRE) yang umum dijumpai
pada UART standard. Setelah port seial selesai mengirim data yang
tersimpan dalam SBUF, bit T1 akan bernilai ‘1’ dengan sendirinya,
kemudian bit ini harus di-nol-kan dengan program agar bisa dipakai
untuk memantau keadaan SBUF dalam pengiriman data berikutnya.
• Bit RI (bit0) merupakan sinyal yang setara dengan sinyal RDA
(Receiver Data Available) yang umu m dijumpai pada UART
standart. Setelah SBUF menerima data dari port serial, bit RI akan
bernilai ‘1’ dengan sendirinya, bit ini harus di-nol-kan dengan
program agar bisa dipakai untuk memantau keadaan SBUF dalam
penerimaan data berikutnya.
Gambar 2.8.
Struktur Dasar Program C
2.7 MySQL
SQL (Structured Query Language) adalah bahasa standar yang
digunakan untuk mengakses server basis data . Sejak tahun 70-an bahasa ini
telah dikembangkan oleh IBM, yang kemudian diikuti dengan adanya
Oracle, Informix dan Sybase. Dengan menggunakan SQL, proses akses basis
data menjadi lebih user-friendly dibandingkan dengan misalnya dBase
ataupun Clipper yang masih menggunakan perintah– perintah pemrograman
murni.
Selain MySQL, ada beberapa jenis pemograman yang berorientasi
basis data yang dapat digunakan untuk aplikasi di web seperti Oracle. Oracle
merupakan sebuah perusahaan besar di dunia yang cakupan bisnis salah
satunya adalah penjualan perangkat lunak dan pembuatan perangkat lunak
basis data yang diperuntukkan bagi perusahaan-perusahaan besar di dunia.
Karena softwarenya tidak bebas dipasaran atau tidak free perangkat lunak
maka sebagian besar perusahaan kecil atau menengah atau programmer web
masih menggunakan basis data MySQL sebagai perangkat lunak basis data
perusahaan atau webnya.
MySQL adalah sebuah server basis data SQL multiuser dan multi-
threaded. SQL sendiri adalah salah satu bahasa basis data yang paling
populer di dunia. Imple mentasi program server basis data ini adalah program
daemon mysqld dan beberapa program lain serta beberapa pustaka.
MySQL dibuat oleh TcX dan telah dipercaya mengelola sistem
dengan 40 buah basis data berisi 10,000 tabel dan 500 di antaranya memiliki
7 juta baris (kira -kira 100 gigabyte data). Basis data ini dibuat untuk
keperluan sistem basis data yang cepat, handal dan mudah digunakan.
Walaupun memiliki kemampuan yang cukup baik, MySQL untuk sistem
operasi Unix bersifat freeware, dan terdapat versi shareware untuk sistem
operasi windows.
Sebagaimana basis data sistem yang lain, dalam SQL juga dikenal
hierarki server dengan basis data-basis data. Tiap-tiap basis data memiliki
tabel-tabel. Tiap-tiap tabel memiliki field-field. Umumnya informasi
tersimpan dalam tabel–tabel yang secara logik merupakan struktur 2 dimensi
terdiri atas baris dan kolom. Field-field tersebut dapat berupa data seperti int,
realm char, date, time dan lainnya. SQL tidak memiliki fasilitas
pemrograman yang lengkap, tidak ada looping ataupun percabangan
,misalnya. Sehingga untuk menutupi kelemahan ini perlu digabung dengan
bahasa pemrograman seperti C.
Keunggulan MySQL
1. MySQL merupakan program yang multi-threaded, sehingga dapat
dipasang pada server yang memiliki multi-CPU.
2. Didukung program-program umum seperti C, C++, Java, Perl, PHP,
Python, TCL APIs dls.
3. Bekerja pada berbagai platform. (tersedia berbagai versi untuk berbagai
sistem operasi).
4. Memiliki jenis kolom yang cukup banyak sehingga memudahkan
konfigurasi sistem basis data.
5. Memiliki sistem keamanan yang baik dengan verifikasi host.
6. Mendukung ODBC untuk sistem operasi Microsoft Windows.
7. Mendukung record yang memiliki kolom dengan panjang tetap atau
panjang bervariasi. dan masih banyak keunggulan lainnya (lihat manual
mysql_3.22)
8. MySQL merupakan perangkat lunak yang gratis, dan bisa di download
di www.mysql.com. Sedangkan perangkat lunak basis data lainnya
seperti ORACLE merupakan perangkat lunak yang harus di beli.
9. MySQL dan PHP saling terintegrasi. Maksudnya adalah pemb uatan
basis data dengan menggunakan sintak PHP dapat di buat. Sedangkan
input yang di masukkan melalui aplikasi web yang menggunakan script
server-side seperti PHP dapat langsung dimasukkan ke basis data
MySQL yang ada di server dan tentunya web tersebut berada di sebuah
web server.
PENGGUNAAN PHP
PHP merupakan bahasa pemrograman web, penulisan script PHP
dapat dijadikan satu dengan kode html dan disimpan dalam satu file yang
sama ataupun berdiri sendiri dengan nama file berekstensi *.php. Ciri khas
PHP diawali dengan tanda “ <?php “ dan diakhiri dengan “ ?> ”.PHP
memiliki fasilitas untuk melakukan koneksi ke database. Script program PHP
disimpan dan dijalankan di sisi server sehingga keamanan data lebih
terjamin. Contoh penggunaan script php dapat dilihat pada program 2.1.
<?php
phpinfo();
?>
Program 2.1 akan menampilkan file php info yang berisi berbagai informasi
tentang PHP.
Produk dari Logitech ini memiliki fitur yang jauh lebih lengkap
dibanding Creative Webcam, sehingga membuatnya lebih fleksibel dan
menyenangkan. Tersedianya mikrofon tentu akan lebih memudahkan saat
melakukan webchat.
QuickCam mampu meng-capture video pada resolusi 640x480
pixel, yang lebih baik kualitasnya dibanding produk keluaran Creative, PC-
Cam 300. Resolusi untuk gambar tak bergeraknya 1280x960 pixel – kurang
lebih 1,3 megapixel. QuickCam sangat menarik, tetapi harus selalu
terhubung dengan komputer selama pengambilan gambar. Produk ini mudah
digerakkan dalam berbagai arah. Software ImageStudio yang menyertainya
memiliki fasilitas siaran video, pendeteksi gerakan dan fungsi-fungsi yang
dimiliki webcam lainnya.
Gambar 3.2
Logitech QuickCam Pro 4000
Gambar 3.3
Rangkaian Pengubah Level Tegangan
Ada 4 kapasitor yang digunakan dalam rangkaian ini yaitu pada pin 1
(+) dengan pin 3 (-), pin 4 (+) dengan pin 5 (-), pin 2 (+) dengan pin 16 (-).
Untuk pin 6, karena bertegangan -10 Volt maka terhubung dengan kaki
kapasitor (-) sedangkan Ground (+). Koneksi antara IC MAX232 dengan
RS232 terhubung melalui pin 14 (driver 1 output) yaitu sebagai Tx
(transmitter) dengan DB9 pin2 (received data) dan pin 13 (receiver 1 input)
sebagai Rx (receiver) dengan DB9 pin 3 (transmitted data). Sedangkan pin
12 dan pin 13 menuju ke mikrokontroller.
Gambar 3.4
Sistem Minimum AT89S51
3.2.4 PEMBUATAN PERANGKAT KERAS DOWNLOADER
MIKROKONTROLLER AT89S51
Gambar 3.5
Rangkaian Downloader ISP Flash
3.3 PEMBUATAN DAN PERENCANAAN PERANGKAT LUNAK
file /etc/apt/source.list
motion detect ii merupakan tanda bahwa paket tersebut sudah terinstall pada
komputer. Setelah paket tersebut terinstall maka kita harus mengaktifkannya.
Perintah untuk mengaktifkan adalah sebagai berikut :
# motion
jnb RI,$
mov a,SBUF
9600 =
fosc ………………………………… 1
12 x [ 256 − TH 1] x 32
9600 =
11 ,0592 MHz …………………………………..2
12 x[ 256 − TH 1 ] x 32
Keterangan :
• Port Select digunakan untuk memilih port yang digunakan
• Device Selection digunakan untuk memilih device yang akan
digunakan (misal: AT89S51)
• Auto programming Device digunakan untuk mengisi program pada
microcontroller
2. Restart apache
Agar konfigurasi baru tersebut berimbas maka apache perlu di restart
terlebih dahulu.
# /etc/init.d/apache restart
# vim info.php
<?php
phpinfo();
?>
3. Test PHP4 dengan memanggil file info.php dari browser. Bila php4
berjalan maka, akan keluar tampilan seperti dibawah ini
Gambar 3.8 Tampilan PHP info
http://localhost/phpmyadmin
2. Login pertama kita mesukkan user dan password. Phpmyadmin ini user
“root” dan password “root”.
4. Membuat table dengan mengisi nama tabel yang akan kita buat dan
jumlah field yang kita gunakan. Format tiap filed dapat kita set sesuai
yang kita butuhkan. Type field yang kami gunakan untuk tiap tabel
dapat kita lihat pada gambar dibawah beserta tabel apa saja yang kita
gunakan.
# /etc/init.d/snmpd start
# /etc/init.d/snmpd restart
# mrtg /etc/mrtg
Pada saat pertama kali dijalankan akan muncul pesan error seperti ini:
Error ini tidak masalah karena program rateup mencari file log
lama yang tidak ada. Maka agar dapat dilihat langsung dengan interface
web maka pada address media browsing ketikkan :
# crontab –e
3.4.1.1 Algoritma
1. Kondisi awal mengaktifkan sistem sehingga dapat mendeteksi
inputan dari limit switch
2. Setelah sistem diaktifkan maka program untuk motion pada
webcam dijalankan sehingga walaupun brankas belum terbuka,
webcam akan terus mengambil gambar apabila ada gerakan yang
terjadi dalam ruangan .
3. Apabila brankas terbuka maka limit switch akan memberi input
pada microcontroller AT89S51.
4. Setelah AT89S51 mendapat input dari limited switch, maka Alarm
akan otomatis menyala dan kemudian program call pada dialogic
dijalankan.
5. Selesai
3.4.1.2 Flowchart
Gambar 3.14
Flowchart sistem secara keseluruhan
3.4.2. Program Assembly
3.4.2.1 Algoritma
1. Penentuan alamat awal
2. Inisialisasi fungsi-fungsi program assembly
3. Beri kondisi 1 pada microcontroller yang menunjukkan alarm off
4. Cek apakah ada penekanan switch pada microcontroller
5. Jika tidak maka program akan mengulangi pengecekan kondisi
secara terus-menerus
6. Jika adanya penekanan pada limited switch, maka program akan
memberi kondisi 0 untuk menyalakan alarm
7. Mengirimkan karakter ”A” pada PC secara terus menerus
8. Jika PC mengirim karakter ”S”, maka alarm akan mati
9. Jika PC mengirim karakter ”D”, maka mikrokontroller akan
menyalakan alarm
10. Selesai
3.4.2.2 Flowchart
Gambar 3.15
Flowchart program assembly
3.4.3 Program motion pada webcam
3.4.3.1 Algoritma
1. Program motion dijalankan
2. Motion mendeteksi apakah ada gerakan pada ruangan
3. Ada gerakan, maka motion dan ffmpeg akan aktif
4. Motion akan mengambil gambar, file berekstensi .jpeg
5. Simpan gambar pada database
6. ffmpeg akan mengkonversi gambar-gambar tersebut menjadi file
berekstensi .avi
7. Simpan file dalam database.
8. Selesai
3.4.3.2 Flowchart
Gambar 3.16
Flowchart program motion pada webcam
3.4.4 Program pengecekan kondisi brankas
3.4.4.1 Algoritma
1. Kondisi awal menunggu panggilan dari manager1 atau manager2.
2.Ketika mendapat panggilan dari salah satu manager maka akan
dilakukan pengecekan pada mysql, database untuk dapat
menyimpan dan menulis perubahan dari password yang diberikan.
3. Setelah itu membuka channel pada dialogic
4. Kemudian akan dilakukan autentifikasi atau inisialisasi user agar
bisa mendapat informasi tentang sistem atau merubah password.
5. Selesai
3.4.4.2 Flowchart
Gambar 3.17
Flowchart program pengecekan kondisi brankas
3.5 PERANGKAT KERAS SISTEM KEAMANAN BRANKAS
Gambar 3.18
Tampak samping
Gambar 3.19
Tampak depan
BAB IV
PENGUJIAN PROGRAM, HASIL DAN ANALISA
4.1. PENDAHULUAN
Setelah merencanakan suatu alat dan membuatnya sampai terbentuk
sistem rangkaian lengkap, selanjutnya diadakan pengecekan dan
pengukuraan terhadap alat tersebut. Pengujian alat dilakukan untuk
mengetahui apakah peralatan yang ada pada perangkat keras berjalan sesuai
yang diharapkan atau belum.
Pengujian perangkat keras dan pengujian perangkat lunak bertujuan
untuk mengetahui apakah alat dan program yang telah dibuat menghasilkan
tampilan sesuai yang dimaksudkan atau belum. Dan dengan pengujian ini
diharapkan dapat menjalankan sistem secara menyeluruh.
Setelah dilakukan pengujian maka langkah selanjutnya adalah dilakukan
analisa terhadap sistem yang telah dibuat, sehingga bisa membandingkannya
dengan teori yang sudah ada, apakah ada perbedaan antara praktek dengan
teori, kemudian dicari pemecahan dari masalah tersebut.
Gambar 4.1
Rangkaian led yang terhubung port 2 pada AT89S51
Start:
Mov p2,#11111110b
Acall delay
Mov p2,#11111101b
Acall delay
Mov p2,#11111011b
Acall delay
Mov p2,#11110111b
Acall delay
Mov p2,#11101111b
Acall delay
Mov p2,#11011111b
Acall delay
Mov p2,#10111111b
Acall delay
Mov p2,#01111111b
Acall delay
Sjmp start
delay: mov r7,#255
loop2:
mov r6,#255
loop1: djnz r6,loop1
djnz r7,loop2
ret
end
Gambar 4.2
Led dalam keadaan padam (sebelum running program)
Gambar 4.3
Led pada bit 0 menyala
Gambar 4.4
Led pada bit 1 menyala led pada bit 0 padam
Gambar 4.5
Led pada port 2 dalam keadaan padam (sebelum switch ditekan)
Gambar 4.6
Port 0 bit 0 (saat switch belum tertekan)
Gambar 4.7
Port 0 bit 0 (saat switch sudah tertekan)
Gambar 4.8
Led pada Port 2 bit 0 menyala
Gambar 4.9
Led pada bit 1 menyala led pada bit 0 padam
Dari pengujian ini dapat dilihat bahwa program dan perangkat keras
yang dibuat sesuai dengan perencanaan. Selain itu, dengan pengujian ini
tampak juga bahwa port 0 yang berfungsi sebagai input untuk menyalakan
led yang terhubung pada port 2 juga berjalan sesuai perencanaan.
Gambar 4.11
Hyperterminal sesudah mikrokontroller mengirimkan data
Gambar 4.12
GtkTerm sebelum mikrokontroller mengirimkan data
Gambar 4.13
GtkTerm sesudah mikrokontroller mengirimkan data
DATA PENGAMATAN
THRESHOLD JUMLAH GAMBAR
500 48
600 38
700 35
800 33
900 31
1000 30
1100 28
1200 26
1300 24
1400 23
1500 21
Tabel 4.2
Hasil pengamatan jumlah gambar pada jarak 100cm selama 5 detik
DATA PENGAMATAN
THRESHOLD JUMLAH GAMBAR
500 40
600 36
700 32
800 30
900 28
1000 27
1100 24
1200 23
1300 21
1400 21
1500 19
Tabel 4.3
Hasil pengamatan jumlah gambar pada jarak 200cm selama 5 detik
DATA PENGAMATAN
THRESHOLD JUMLAH GAMBAR
500 35
600 34
700 31
800 28
900 25
1000 24
1100 23
1200 22
1300 21
1400 19
1500 17
Tabel 4.4
Hasil pengamatan jumlah gambar pada jarak 300cm selama 5 detik
DATA PENGAMATAN
THRESHOLD JUMLAH GAMBAR
500 29
600 27
700 26
800 25
900 22
1000 20
1100 18
1200 17
1300 15
1400 14
1500 12
Tabel 4.5
Hasil pengamatan jumlah gambar pada jarak 400cm selama 5 detik
DATA PENGAMATAN
THRESHOLD JUMLAH GAMBAR
500 25
600 24
700 22
800 20
900 19
1000 17
1100 15
1200 14
1300 13
1400 13
1500 12
16
14
12
10 output
(KByte/s)
8
input (KByte/s)
6
2
0
40
0
0
5:3
5:5
6:0
6:1
5:
Gambar. 4.15
Gambar grafik traffic jaringan di sisi server
4.3.2.2 Pengujian pada sisi client
Tabel 4.7
Pengujian traffic bandwidth pada sisi client
14
12
10 input (KByte/s)
8
output
6 (KByte/s)
4
0
00
10
0
0
5:3
5:4
5:5
6:
6:
Gambar 4.17
Gambar grafik traffic di sisi client
5.1. KESIMPULAN
Dari pembuatan alat (hardware) dan penyusunan program (software)
serta pengujian dan analisa yang telah dilakukan dalam proyek akhir ini
dapat disimpulkan sebagai berikut:
LAMPIRAN
1. LISTING PROGRAM BAHASA ASSEMBLY
org 00h
init: mov sp,#010h
mov scon,#0d2h
mov th1,#0fdh ;digunakan untuk baut rate generator 9600
anl pcon,#7fh
mov tmod,#21h ;setting timer 0 mode 16 bit, timer 1 8 bit
auto reload
mov tcon,#40h
y: mov p2,#0AAH ;isi port 2 dengan nilai AAH
clr ri
mov A,sbuf
cjne A,#'Z',x ;cek mikrocontroller menerima karakter ‘Z’, tidak
lompat ke x
jmp start
x: mov A,p0
cjne A,#0FEh,y ;cek switch di P 0.0 tertekan, tidak lompat ke y
jmp start
Start: Mov p2,#01111010b
Acall delay
Mov p2,#01110110b
Acall delay
Mov p2,#01101110b
Acall delay
Mov p2,#01011110b
Acall delay
Mov p2,#00111110b
Acall delay
Mov p2,#11111111b
Acall delay
mov a,#'A'
mov sbuf,a ;mikrokontroller mengirim karakter ‘A’ ke PC
clr ri
mov a,sbuf
cjne A,#'S',start ;chek mikrokontroller menerima karakter
‘S’,tidak lompat ke start
henti: mov p2,#0AAh
clr ri
mov a,sbuf
cjne A,#'D',henti ;chek mikrokontroller menerima karakter
‘S’,tidak lompat ke start
jmp start
delay: mov r7,#255
loop2: mov r6,#255
loop1: djnz r6,loop1
djnz r7,loop2
ret
end
int open_port(void)
{
int fd;
fd = open("/dev/ttyS1", O_RDWR | O_NOCTTY | O_NDELAY);
if (fd == -1)
{ /* Could not open the port */
fprintf(stderr, "open_port: Unable to open /dev/ttyS0 - %s\n",
strerror(errno));
}
return (fd);
}
void main()
{
int mainfd=0; /* File descriptor */
char chout;
struct termios options;
mainfd = open_port( );
fcntl(mainfd, F_SETFL, FNDELAY); /* Configure port reading */
/* Get the current options for the port */
tcgetattr(mainfd, &options);
cfsetispeed(&options, B9600); /* Set the baud rates to 9600 */
cfsetospeed(&options, B9600);
/* Enable the receiver and set local mode */
options.c_cflag |= (CLOCAL | CREAD);
options.c_cflag &= ~PARENB; /* Mask the character size to 8 bits, no
options.c_cflag &= ~CSTOPB;
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8; /* Select 8 data bits */
options.c_cflag &= ~CRTSCTS; /* Disable hardware flow control */
options.c_lflag &= ~(ICANON | ECHO | ISIG); /* Enable data to be
processed as raw input */
tcsetattr(mainfd, TCSANOW, &options);
chout=0;
while (1)
{
read(mainfd, &chout, sizeof(chout)); // Read character from ABU
printf("Hasil Baca %c.\n", chout);
if (chout == ‘A’){
break;
}
chout=0;
usleep(20000);
}
/* Close the serial port */
close(mainfd);
}
int main()
{
system("motion ");
sleep(3);
system("./check1 ");
sleep(3);
return 0;
}
int open_port(void)
{
int fd; /* File descriptor for the port */
if (fd == -1)
{ /* Could not open the port */
fprintf(stderr, "open_port: Unable to open /dev/ttyS1 - %s\n",
strerror(errno));
}
return (fd);
}
int main()
{
int mainfd=0;
char chout;
struct termios options;
mainfd = open_port();
int main()
{
system("./webcam1");
system("./webcam2 ");
return 0;
}
int main()
{
int i;
int cares, hk_state, ndigit, cnt;
char *chdev,*number;
char hasilKonversi[MAXDIGIT];
int input;
chdev = "dxxxB1C1";
number = "2501";
printf("Open Device\n");
if ((hk_state = dx_open(chdev,0)) == -1 ) {
printf("device %s error\n", chdev);
exit(0);
}
status(hk_state, 1);
printf("Dial to %s \n", number);
dx_clrcap(&capp);
capp.ca_nbrdna=2;
if ((cares=dx_dial(hk_state, number,
&capp,DX_CALLP|EV_SYNC)) == -1 )
{
printf("Error dial");
exit(0);
}
switch(cares) {
case CR_CNCT:
printf("\nanswer - %s \n",number);
break;
case CR_BUSY:
printf("busy\n");
goto jump;
case CR_CEPT:
printf("intercept\n");
return 1;
case CR_NOANS:
printf("noanswer\n");
goto jump;
case CR_NODIALTONE:
printf("no dialtone\n");
goto jump;
case CR_NORB:
printf("no ringback\n");
goto jump;
default :
printf("else");
goto jump;
}
printf("..............dialing success\n");
for(;;) {
printf("..........WAV state\n");
tpt.tp_type = IO_EOT;
tpt.tp_termno = DX_MAXDTMF;
tpt.tp_length = 1;
tpt.tp_flags = TF_MAXDTMF;
DX_CAP capp;
DV_TPT tpt, getdigit[3];
DV_DIGIT digitp;
int main()
{
MYSQL mysql;
MYSQL_RES *result;
MYSQL_ROW row;
int chdev;
char *ch;
char digit[128];
ch = "dxxxB1C1";
for(;;){
printf("mulai\n");
mysql_init(&mysql);
if
(!mysql_connect(&mysql,MYSQL_HOST,MYSQL_LOGIN,MYSQL_PASSW
D)) {
printf("connect error");
}
if (mysql_select_db(&mysql,MYSQL_DB)) {
mysql_close(&mysql);
printf("select db error");
}
printf("Open Device state -----------\n");
if ((chdev = dx_open(ch,0)) == -1 ) {
printf("Cannot open device");
exit(0);
}
printf("Open device success\n");
printf("Inisilization TPT state----\n");
tpt.tp_type = IO_EOT;
tpt.tp_termno = DX_MAXDTMF;
tpt.tp_length = 1;
tpt.tp_flags = TF_MAXDTMF;
printf("Wait for phone to ring and go offhook ----\n");
if (dx_wtring(chdev,1,DX_OFFHOOK,-1) == -1) {
printf("Error waiting for ring - %s\n",
ATDV_LASTERR(chdev));
exit(3);
}
dx_playwav(chdev,"user.WAV",&tpt,EV_SYNC);
char user[128];
printf("siapakah anda 1.manager1 2.manager2 \n");
dx_clrdigbuf(chdev);
if(tekanDigit(chdev)=='1'){
printf("manager1\n");
strcpy(user,"manager1");
}
else if(tekanDigit(chdev)=='2'){
printf("manager2\n");
strcpy(user,"manager2");
}
else{
printf("Anda Siapa?????\n");
goto akhir;
}
printf("Aku adalah = %s\n",user);
char user1[128];
int nomor;
sprintf(user1,"SELECT * FROM autentifikasi WHERE
user='%s'",user);
mysql_query(&mysql,user1);
printf("---------------------%s\n",user1);
result = mysql_use_result(&mysql);
while((row = mysql_fetch_row(result))) {
printf("%s\t%s\n",row[0],row[1]);
nomor=atoi(row[1]);
printf("............dial dx nomor %d\n ", nomor);
fflush(stdout);
}
int kondisiPasword;
int hasilPasword2;
char paswordBaru[128];
char mboh[128];
char digitYangDimasukkan;
kondisiPasword=pasword(chdev,nomor);
if(kondisiPasword==1){
jump: printf("pasword anda benar======>\n");
dx_playwav(chdev,"menu_kondisi.WAV",&tpt,EV_SYNC);
printf("apakah yang ingin anda lakukan 1.Melihat
kondisi ruangan\n 2.Mengubah password 3.Mematikan Webcam\n");
if(tekanDigit(chdev)=='1'){
printf("anda melihat kondisi ruangan\n");
int mainfd=0;
char chout;
struct termios options;
mainfd = open_port();
fcntl(mainfd, F_SETFL, FNDELAY);
tcgetattr(mainfd, &options);
cfsetispeed(&options, B9600);
cfsetospeed(&options, B9600);
options.c_cflag |= (CLOCAL | CREAD);
options.c_cflag &= ~PARENB;
options.c_cflag &= ~CSTOPB;
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8; options.c_cflag &=
~CRTSCTS;
options.c_lflag &= ~(ICANON | ECHO | ISIG);
tcsetattr(mainfd, TCSANOW, &options);
chout=0;
while (1)
{
read(mainfd,&chout, sizeof(chout));
printf("Terbaca = %c\n", chout);
if(chout=='A'){
dx_playwav(chdev, "brankas_open.WAV", &tpt,
EV_SYNC);
break;
}
chout=0;
usleep(200000);
printf("terbaca jika diluar chout : %c\n", chout);
printf("=================================%s\n",paswor
dBaru);
mysql_query(&mysql,paswordBaru);
dx_playwav(chdev, "passwrd_ubah.WAV", &tpt,EV_SYNC);
goto akhir;
}
else if(tekanDigit(chdev)=='3'){
printf("Anda sedang mematikan webcam\n");
system("killall -9 motion");
dx_playwav(chdev, "motion_stop.WAV", &tpt, EV_SYNC);
printf("Alarm mati\n");
goto akhir;
}
else{
printf("Anda salah menekan nomor\n");
dx_playwav(chdev, "digit_salah.WAV", &tpt, EV_SYNC);
goto jump;
}
}
else{
printf("Password anda salah\n");
dx_playwav(chdev, "paswrd_false.WAV", &tpt,EV_SYNC);
}
akhir:
printf("terima kasih ===================>\n");
if (dx_playwav(chdev, "thanks.WAV", &tpt,EV_SYNC) == -1) {
printf("Error WAV %s\n", ATDV_ERRMSGP(chdev));
exit(4);
}
mysql_close(&mysql);
dx_sethook(chdev,DX_ONHOOK,EV_SYNC);
dx_close(chdev);
}
return 0;
}
char tekanDigit(int chdev){
int cnt,ndigit;
char *pasword[128],digit[128];
printf("Get digit---------state ");
dx_clrtpt(getdigit,3);
getdigit[0].tp_type = IO_CONT;
getdigit[0].tp_termno = DX_MAXDTMF;
getdigit[0].tp_length = 1;
getdigit[0].tp_flags = TF_MAXDTMF;
getdigit[1].tp_type = IO_CONT;
getdigit[1].tp_termno = DX_LCOFF;
getdigit[1].tp_length = 3;
getdigit[1].tp_flags = TF_LCOFF|TF_10MS;
getdigit[2].tp_type = IO_CONT;
getdigit[2].tp_termno = DX_MAXTIME;
getdigit[2].tp_length = 100;
getdigit[2].tp_flags = TF_MAXTIME;
// char bagus;
int putar;
int pasword,pengali=10000,hasilPasword;
int loop=0;
for(loop=0;loop<3;loop++){
hasilPasword=hasilPasword1(chdev);
printf("hasil pasword %d\n",hasilPasword);
if(hasilPasword==paswordAsli)
return 1;
}
return 0;
}
int hasilPasword1(int chdev){
char i;
int putar;
int pasword,pengali=10000,hasilPasword=0;
printf("masukkan
pasword=============================>\n");
for(putar=0;putar<=4;putar++){
i=tekanDigit(chdev);
pasword=cekNumber(i);
printf("yang anda masukkan %d\n",pasword);
hasilPasword=hasilPasword+(pasword*pengali);
pengali=pengali/10;
}
printf("hasil pasword %d\n",hasilPasword);
return(hasilPasword);
}
int open_port(void)
{
int fd; /* File descriptor for the port */
fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);
if (fd == -1)
{
fprintf(stderr, "open_port: Unable to open /dev/ttyS1 -
%s\n",strerror(errno));
}
return (fd);
}
int open_port(void)
{
int fd;
fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);
if (fd == -1)
{ fprintf(stderr, "open_port: Unable to open
/dev/ttyS1 - %s\n",
strerror(errno));
}
return (fd);
}
int main()
{
int mainfd=0;
char chout;
struct termios options;
mainfd = open_port();
#include<stdio.h>
#include<stdlib.h>
#include<srllib.h>
#include<dxxxlib.h>
#include<time.h>
#include<string.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <termios.h>
#define BELUM_DIHUBUNGI 0
#define SUDAH_DIHUBUNGI 1
#define TRUE 1
#define FALSE 0
#define BERHASIL 1
#define TIDAK_BERHASIL 0
#define MAXDIGIT 128
DX_CAP capp;
DV_TPT tpt, getdigit[3];
DV_DIGIT digitp;
int main()
{
int i;
int cares, hk_state, ndigit, cnt;
char *chdev;
char hasilKonversi[MAXDIGIT];
int input;
int clientNumber = 1;
int kondisi[4],kondisi_1;
char nomorTelepon[4][5];
chdev = "dxxxB1C1";
kondisi[0] = BELUM_DIHUBUNGI;
kondisi[1] = BELUM_DIHUBUNGI;
kondisi[2] = BELUM_DIHUBUNGI;
kondisi[3] = BELUM_DIHUBUNGI;
strcpy(nomorTelepon[0],"2501");
strcpy(nomorTelepon[1],"2501");
strcpy(nomorTelepon[2],"2501");
strcpy(nomorTelepon[3],"2501");
}
int semuaSudahDihubungi(int kondisi[],int size){
int i;
int state = TRUE;
for( i = 0; i < size; i++){
if( kondisi[i] == BELUM_DIHUBUNGI){
state = FALSE;
}
}
return state;
}
int telepon(char *nomorTelepon,int cares,int hk_state) {
DX_CAP capp;
int apa ;
switch(cares){
case CR_CNCT:
printf("\nanswer - %s \n", nomorTelepon);
apa = 1;
printf("true\n");
break;
case CR_BUSY:
printf("busy\n");
apa = 0;
break;
case CR_CEPT:
printf("intercept\n");
apa = 0;
break;
case CR_NOANS:
printf("noanswer\n");
apa = 0;
break;
case CR_NODIALTONE:
printf("no dialtone\n");
apa = 0;
break;
case CR_NORB:
printf("no ringback \n");
apa = 0;
break;
default :
printf("else\n");
apa = 0;
break;
}
return apa;
}
void status(int dev, int state)
{
if (state == 1) {
printf("Offhook state\n");
if (dx_sethook(dev,DX_OFFHOOK,EV_SYNC) == -1 ) {
printf("error offhook");
exit(1);
}
} else {
printf("Onhook state\n");
if (dx_sethook(dev,DX_ONHOOK,EV_SYNC) == -1 ) {
printf("error onhook");
exit(1);
}
}
}
void swap(char *x,char *y){
char temp;
temp = *x;
*x = *y;
*y = temp;
}
char* integerToString(int value,char *valueStr,int size){
int i;
int len = 0;
memset(valueStr,'\0',size);
i = 0;
while( value > 0){
valueStr[i] = value%10 + '0';
value /= 10;
i++;
}
len = strlen(valueStr);
for(i = 0; i < len/2; i++){
swap( &valueStr[i], &valueStr[len-i-1]);
}
return valueStr;
}
char tekanDigit(int chdev){
int cnt,ndigit;
char digit[128];
printf("Get digit---------state ");
dx_clrtpt(getdigit,3);
getdigit[0].tp_type = IO_CONT;
getdigit[0].tp_termno = DX_MAXDTMF;
getdigit[0].tp_length = 1;
getdigit[0].tp_flags = TF_MAXDTMF;
getdigit[1].tp_type = IO_CONT;
getdigit[1].tp_termno = DX_LCOFF;
getdigit[1].tp_length = 3;
getdigit[1].tp_flags = TF_LCOFF|TF_10MS;
getdigit[2].tp_type = IO_CONT;
getdigit[2].tp_termno = DX_MAXTIME;
getdigit[2].tp_length = 100;
getdigit[2].tp_flags = TF_MAXTIME;
if ((ndigit = dx_getdig(chdev, getdigit, &digitp, EV_SYNC))==-1) {
perror("Get digit\n");
}
for(cnt=0; cnt<ndigit;cnt++) {
printf("Dial digit: %c\n", digitp.dg_value[cnt]);
sprintf(digit,"%d",digitp.dg_value[cnt]);
}
return(digitp.dg_value[0]);
}
int open_port(void)
{
int fd; // File descriptor for the port //
fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);
if (fd == -1)
{ // Could not open the port //
fprintf(stderr, "open_port: Unable to open /dev/ttyS1 -
%s\n",strerror(errno));
}
return (fd);
}
BIODATA PENULIS
RIWAYAT PENDIDIKAN
Tahun Pendidikan