Vous êtes sur la page 1sur 113

PROYEK AKHIR

RANCANG BANGUN SISTEM KEAMANAN


BRANKAS DENGAN MENGGUNAKAN WEBCAM
DAN VOICE PROCESSING BOARD
--WEBCAM DAN AT89S51--

Vandry Bintoro Saputro


NRP. 7203030044

Dosen Pembimbing:
Amang Sudarsono, ST
NIP. 132 300 371

Akuwan Shaleh,SST
NIP. 131 831 467

JURUSAN TEKNIK TELEKOMUNIKASI


POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
SURABAYA 2006
RANCANG BANGUN SISTIM KEAMANAN BRANKAS
DENGAN MENGGUNAKAN
WEBCAM DAN VOICE PROCESSING BOARD

Oleh:
VANDRY BINTORO S.
7203.030.044

Proyek Akhir ini Diajukan Sebagai Salah Satu Syarat Untuk


Memperoleh Gelar Ahli Madya (A.Md.)
di
Politeknik Elektronika Negeri Surabaya
Institut Teknologi Sepuluh Nopember Surabaya

Surabaya, Agustus 2006


Disetujui oleh

Tim Penguji Proyek Akhir: Dosen Pembimbing:

1. Ir. Prima Kristalina, MT 1.Amang Sudarsono,ST


NIP. 131.916.852 NIP. 132.300.371

2. I Gede Puja Astawa, ST 2. Akuwan Shaleh, SST


NIP. 132.102.837 NIP. 131.831.467

3. Ir. Budi Aswoyo, MT


NIP. 131.843.379

Mengetahui:
Ketua Jurusan Telekomunikasi

Drs. Miftahul Huda, MT


NIP. 132.055.257
ABSTRAK
Selama ini kita ketahui, penggunaan alarm hanya sekedar mengirimkan
informasi berupa bunyi saja tanpa memberitahukan informasi tentang adanya
pencurian sehingga pemilik brankas tidak mengetahuinya serta belum dapat
mengirimkan informasi kondisi ruangan secara real time dan pemanggilan
otomatis yang dapat dikontrol menggunakan telepon tanpa dibatasi oleh jarak
sehingga darimanapun sistem tersebut dapat dikontrol. Selain itu sering kali
kita jumpai keterlambatan penanganan kasus pencurian dikarenakan
informasi yang diterima oleh polisi prosesnya mengalami keterlambatan.
Untuk mengatasi kedua permasalahan diatas maka perlu dilakukan
pengembangan aplikasi sebagai solusi dari permasalahan itu.
Sistem pengamanan brankas ini bekerja apabila terdapat gerakan pada
ruangan yang nantinya akan di –capture oleh webcam dan mendapat trigger
dari sensor limit sehingga alarm secara otomatis akan aktif dan secara
otomatis pula akan mengaktifkan program panggilan ke satpam, manager dan
polisi. Dalam hal ini interface antara hardware dengan komputer (PC)
menggunakan AT89S51, Webcam dan pemanggilan otomatis melalui PSTN
menggunakan Dialogic D/41JCT -LS.

Kata Kunci – AT89S51, PSTN, Dialogic D/41JCT-LS, Webcam.


ABSTRACT

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.

Keyword – AT89S51, PSTN, Dialogic D/41JCT-LS,Webcam


KATA PENGANTAR

Syukur Alhamdulillah kami panjatkan kepada Allah SWT karena hanya


dengan rahmat, hidayah dan inayah-Nya kami dapat menyelesaikan proyek
akhir ini dengan judul :

“Rancang Bangun Sistem Keamanan Brankas Dengan Menggunakan


Webcam Dan Voice Processing Board”
--Webcam dan AT89S51--

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.

Surabaya, Agustus 2006

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

BAB II TEORI DASAR.................................................................. 5


2.1 Linux ........................................................................ 5
2.1.1 Pengenalan Linux…………………………. 5
2.1.2 Perbedaan mendasar Linux.......................... 5
2.1.3 Perbandingan Linux terhadap sistem
operasi lainnya................................................. 6
2.1.4 Bagian Sistem Operasi Linux......................... 8
2.1.5 Bagian Penting Kernel Linux.......................... 8
2.2 Video Streaming.................................................. .. 8
2.3 Motion........................................................................... 9
2.4 Rangkaian Pengubah Level Tegangan.................... 9
2.5 Mikrokontroller AT89S51 sebagai antarmuka....... 11
2.5.1. Deskripsi Mikrokontroller AT89S51……… 12
2.5.2. Struktur memori............................................ 14
2.5.3. Register kontrol port serial............................ 15
2.5.4. antarmuka Serial...................................... ..... 17
2.5.5. Pengaturan Baud Rate Port Serial................. 19
2.6. Pemrograman C di Linux....................................... 19
2.7. MySql..................................................................... 21
2.8. World Wide Web.................................................... 23
2.9. Bahasa Pemrograman PHP..................................... 24
2.10. Webserver Apache................................................ 25
BAB III PERENCANAAN DAN PEMBUATAN
PERANGKAT LUNAK................................................... 27
3.1 Perencanaan Sistem .................................................. 27
3.2 Perencanaan dan Pembuatan Perangkat Keras ..... 27
3.2.1 perangkat keras webcam................................... 28
3.2.2 Perencanaan dan pembuatan pengubah level
Tegangan.............................................................. 29
3.2.3 Perencanaan dan pembuatan antar muka
dengan mikro kontroler AT89S51................. 31
3.2.4 Pembuatan perangkat keras downloader
mikrokontroller AT89S51............................ 32
3.3 Pembuatan dan Perencanaan Perangkat Lunak.... 33
3.3.1 Instalasi Linux Debian....................................... 33
3.3.2 Instalasi GCC ...................................................... 34
3.3.3 Pembuatan Camera Server............... ............... 35
3.3.4 Port Serial pada Mikrokontroller.................... 37
3.3.4.1 Inisialisasi Port Serial Pada
Mikrokontroller................................ .. 37
3.3.4.2 Pengaturan Baud Rate pada komunikasi
Serial......... ......................................... 38
3.3.4.3 Perangkat Lunak Downloader pada
Mikrokontroller AT89S51.................... 38
3.3.5. Installasi Webserver....................................... 39
3.3.6 Instalasi PHP................................................... 40
3.3.7 Instalasi MySql................................................ 41
3.3.8 Pembuatan Database Sql................................. 42
3.3.9 Installasi SNMP............................................... 44
3.3.10 Installasi MRTG............................................. 45
3.4. Flowchart dan Algoritma Program........................... 47
3.4.1. Keseluruhan Sistem........................... ........... 47
3.4.2. Program Assembly......................................... 49
3.4.3. Program motion pada Webcam. ..................... 51
3.4.4. Program pengecekan kondisi brankas............ 52
3.5. Perangkat keras sistem keamanan brankas............... 54

BAB IV PENGUJIAN PROGRAM, HASIL


DAN ANALISA ................................................................ 55
4.1 Pendahuluan .................................................................. 55
4.2 Pengujian Hardware ..................................................... 55
4.2.1 Pengujian Minimum Sistem AT89S51.......... 55
4.2.1.1 Port 2 sebagai output........................... 56
4.2.1.2 Port 0 sebagai input dan port 2
sebagai output.................................... 58
4.2.2 Pengujian Komunikasi Serial........................... 59
4.3 Pengujian Software………………………………. 62
4.3.1 Pengujian proses capture pada program
Motion……………………………………… 62
4.3.2 Pengujian Traffic Jaringan menggunakan
MRTG……………………………………... 65
4.5 Pengujian Website................................................. 69

BAB V PENUTUP ............................................................................ 73


5.1 Kesimpulan ................................................................... 73
5.2 Saran .............................................................................. 73

DAFTAR PUSTAKA....................................................................... 75
LAMPIRAN ....................................................................................... 77
DAFTAR GAMBAR

Gambar 2.1 IC MAX232 sebagai pengubah level tegangan ....... 10


Gambar 2.2 Karakteristik Elektrik RS232...................................... 10
Gambar 2.3 RS232 (Sebagai Komunikasi Serial) ......................... 11
Gambar 2.4 Fungsi masing-masing pin RS232............................. 11
Gambar 2.5 Gambar konfigurasi AT89S51................................ 12
Gambar 2.6 Gambar Struktur Memori AT89S51........................ 14
Gambar 2.7 Register kontrol port serial..................................... 15
Gambar 2.8 Struktur Dasar program C....................................... 20
Gambar 2.9 Konsep dasar browser dan webserver...................... 24
Gambar 3.1 Blok Diagram Sistem................................................... 27
Gambar 3.2 Logitech Quickcam Pro 4000.................................. 29
Gambar 3.3 Rangkaian Pengubah Level Tegangan.................... 30
Gambar 3.4 Sistem minimum AT89S51..................................... 31
Gambar 3.5 Rangkaian Downloader ISP-Flash.......................... 32
Gambar 3.6 Tampilan pada web browser................................... 37
Gambar 3.7 Tampilan dari mikrokontroller ATMEL_ISP......... 39
Gambar 3.8 Tampilan PHP info.................................................. 41
Gambar 3.9 Tampilan PHPmyadmin.......................................... 42
Gambar 3.10 Login PHPmyadmin.............................................. 43
Gambar 3.11 Form create database............................................. 43
Gambar 3.12 Tabel security……………………………………. 43
Gambar 3.13 Tabel users............................................................. 44
Gambar 3.14 Flowchart sistem secara keseluruhan..................... 48
Gambar 3.15 Flowchart program assembly................................. 50
Gambar 3.16 Flowchart program motion pada webcam............. 51
Gambar 3.17 Flowchart program pengecekan kondisi brankas... 53
Gambar 3.18 Tampak samping................................................... 54
Gambar 3.19 Tampak depan........................................................ 54
Gambar 4.1 Rangkaian Led yang terhubung Port 2................... 56
Gambar 4.2 Led dalam keadaan padam
(sebelum running program)..................................... 57
Gambar 4.3 Led pada bit 0 menyala............................................ 57
Gambar 4.4 Led pada bit 1 menyala led pada bit 0 padam.......... 57
Gambar 4.5 Led pada port 2 dalam keadaan padam
(switch pada port0 bit 0 belum tertekan).................. 59
Gambar 4.6 Port 0 bit 0 (saat switch belum tertekan)................... 59
Gambar 4.7 Port 0 bit 0 (saat switch sudah tertekan).................... 59
Gambar 4.8 Led pada port 2 bit 0 menyala................................. 59
Gambar 4.9 Led pada bit 1 menyala led pada bit 0 padam.......... 59
Gambar 4.2 Hyperterminal sebelum mikrokontroller mengirim
Data......................................................................... 60
Gambar 4.3 Hyperterminal sesudah mikrokontroller menerima
Data .......................................................................... 60
Gambar 4.4 GTKterm sebelum mikrokontroller mengirim data... 61
Ga mbar 4.5 GTKterm sesudah mikrokontroller mengirim data... 61
Gambar 4.6 Gambar trafik jaringan di sisi server.......................... 66
Gambar 4.7 Gambar traffic di sisi server.................................... 67
Gambar 4.8 Gambar trafik jaringan di sisi client........................ 67
Gambar 4.7 Gambar traffic di sisi client..................................... 68
Gambar 4.7 Tampilan login......................................................... 70
Gambar 4.8 Tampilan home......................................................... 70
Gambar 4.9 Tampilan hasil pengambilan gambar........................ 71
Gambar 4.10 Tampilan pengiriman video streaming..................... 71
Gambar 4.11 Tampilan website pada menu add_user.................... 72
DAFTAR TABEL

Tabel 2.1 Register kontrol port serial.............................................. 16


Tabel 2.2 Rumus perhitungan baud rate...................................... 19
Tabel 2.3 Tabel Keyword bahasa C............................................. 19
Tabel 3.1 Konfigurasi pin ICMAX232........................................... 30
Tabel 4.1 Hasil pengamatan jumlah gambar pada jarak 50cm .. 62
Tabel 4.2 Hasil pengamatan jumlah gambar pada jarak 100cm.. 63
Tabel 4.3 Hasil pengamatan jumlah gambar pada jarak 200cm.. 63
Tabel 4.4 Hasil pengamatan jumlah gambar pada jarak 300cm.. 64
Tabel 4.5 Hasil pengamatan jumlah gambar pada jarak 400cm.. 64
Tabel 4.6 Pengujian bandwitdh di sisi server.............................. 66
Tabel 4.7 Pengujian bandwidth di sisi client............................... 68
BAB I
PENDAHULUAN

1.1 LATAR BELAKANG

Salah satu keinginan setiap orang adalah ingin merasakan keamanan


baik keamanan diri maupun lingkungan sekitarnya, sehingga orang
berpikiran untuk membuat suatu alat yang bisa memberi keamanan pada
dokumen-dokumen penting maupun surat-surat berharga lain yang tersimpan
dalam brankas tanpa harus ada penjagaan ketat dari pemilik brankas.
Hal tersebut yang mendasari dari pembuatan suatu sistim keamanan
ruangan khususnya brankas pada tugas akhir ini. Seperti diketahui, banyak
sekali sistem keamanan ruangan yang sudah dipakai oleh masyarakat kita.
Tetapi , sistem keamanan yang bisa memonitoring ruangan secara real time
pada saat brankas pemilik belum atau berhasil dibuka oleh pencuri mungkin
sangat sedikit. Dalam sistem ini gambar akan dimunculkan dalam kondisi
real time dan bisa dilihat pada website yang dimiliki oleh pemilik brankas
yang tersimpan pada database. Data yang dihasilkan berupa gambar dan
video selama adanya pergerakan pada ruangan tersebut. Selain itu, sistem ini
mampu untuk menghubungi nomor telepon pemilik brankas secara otomatis.
Oleh karena itu sistem pengamanan brankas ini dibuat secara otomatis yang
dapat dikontrol dengan jarak jauh agar pemilik brankas yang sedang tidak
ada dirumah akan selalu merasa aman dan dapat mengontrol brankasnya
secara praktis. Sistim ini diharapkan mampu untuk melengkapi sistim
keamanan brankas yang pada saat ini masih dirasa kurang efektif dan
diharapkan dapat membantu pihak kepolisian dalam memberantas tindak
kriminalitas seperti pencurian.

1.2 PERUMUSAHAN MASALAH

Sistim keamanan ini merupakan satu realisasi dari perkembangan


teknologi, dan merupakan salah satu alternatif yang tidak dapat dielakkan
lagi untuk memperolah sistem kerja keamanan yang sederhana, praktis, dan
efisien sehingga memperoleh hasil dengan tingkat keakuratan yang tinggi..
Masalah yang ditangani dari penelitan ini adalah sistem keamanan
brankas pada saat pemilik brankas keluar rumah, dengan cara memasang
modul AT89S51,Webcam dan dialogic card yang terhubung pada sebuah
komputer dan brankas.
1.3 BATASAN MASALAH

Dengan adanya permasalahan yang harus diselesaiakan pada sistim


keamanan brankas menggunakan webcam dan dialogic card ini, maka dalam
proyek akhir ini dibatasi pada hal-hal sebagai berikut:
Ø Pembuatan camera server yang menangani gambar bergerak
maupun pengambilan gambar secara otomatis pada saat adanya
pergerakan dalam ruangan
Ø Pembuatan modul AT89S51 yang digunakan sebagai penghubung
antara server dengan limit switch
Ø Sensor limit switch yang digunakan dalam sistem pengamanan
terpasang pada brankas sebagai pendeteksian adanya pencurian dan
memicu nyala alarm pada modul AT89S51
Ø Pembuatan website yang nantinya dapat diakses oleh pemilik
brankas

1.4 TUJUAN DAN MANFAAT


Tujuan dari proyek akhir ini adalah untuk menciptakan suatu sistim
keamanan pada brankas yang diharapkan mampu untuk memenuhi
kebutuhan pasar akan sistim keamanan yang efektif dan efisien. Penggunaan
webcam disini difungsikan untuk merekam segala aktivitas pada ruangan ini
dan dapat untuk mengambil gambar (capture) setiap kali adanya pergerakan.
Selain webcam juga digunakan dialogic card yang difungsikan untuk
menghubungi nomor telepon pemilik brankas secara otomatis.
Hasil dari proyek akhir ini diharapkan adanya proses perubahan
teknologi serta penguasaan dan pengalaman yang telah diperoleh di bangku
pendidikan serta aplikasinya dalam kehidupan di masyarakat, yang mana
pada akhirnya alat ini berguna untuk kemajuan dibidang keamanan
khususnya keamanan ruangan .

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.

1.6 SISTEMATIKA PEMBAHASAN


Buku laporan proyek akhir ini terdiri dari 5 (lima) bab, dimana masing-
masing bab mempunyai kaitan satu sama lain, yaitu:

BAB 1 PENDAHULUAN
Memberikan latar belakang tentang permasalahan, tujuan,
masalah dan batasan masalah yang dibahas dalam proyek akhir
ini.

BAB 2 TEORI PENUNJANG


Memberikan dasar teori untuk menunjang penyelesaian
masalah dalam proyek akhir ini. Teori dasar yang diberikan
meliputi: sistem mikrokontroller, komunikasi serial, video
streaming ,Bahasa Pemrogaman GCC, SQL,PHP dan HTML.
BAB 3 PERENCANAAN DAN PEMBUATAN PERANGKAT
KERAS DAN LUNAK
Membahas tahap – tahap perencanaan dan pembuatan
perangkat keras pada peralatan sistim keamanan pada brankas
dengan menggunakan webcam dan dialogic card.

BAB 4 ANALISA DAN PENGUJIAN


Menguraikan kinerja dari masing – masing blok yang disertai
dengan pengujian yang berhubungan secara langsung terhadap
parameter sesungguhnya, apakah rangkaian yang diuji sudah
sesuai dengan yang diharapkan.

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.1.1 Pengenalan Linux


Kata "Linux" untuk saat ini sudah tidak asing lagi bagi para
pengguna internet dan komunitas mahasiswa yang memiliki hobi untuk
mencoba software-software baru. Secara teknis dan singkat dapat
dikatakan, Linux adalah suatu system operasi yang bersifat multi user dan
multi tasking, yang dapat berjalan di berbagai platform termasuk prosesor
Intel 386 maupun yang lebih tinggi. Linux dapat berinteroperasi secara
baik dengan sistem operasi yang lain, termasuk Apple, Microsoft dan
Novell. Nama Linux sendiri diturunkan dari pencipta awalnya, Linus
Torvalds, yang sebetulnya mengacu pada suatu kumpulan software
lengkap yang bersama -sama dengan kernel menyusun suatu sistem operasi
yang lengkap. Lingkungan sistem operasi ini mencakup ratusan program,
termasuk kompiler, interpreter, editor dan utilitas. Perangkat bantu yang
mendukung konektifitas, ethernet, SLIP dan PPP dan interoperabilitas.
Produk perangkat lunak yang handal (reliable), termasuk versi
pengembangan terakhir. Kelompok pengembang yang tersebar di seluruh
dunia yang telah bekerja dan menjadikan Linux portabel ke suatu platform
baru, begitu juga mendukung komunitas pengguna yang memiliki beragam
kebutuhan dan juga pengguna dapat turut serta bertindak sebagai tim
pengembang sendiri.

2.1.2 Perbedaan mendasar Linux


Satu hal yang membedakan Linux terhadap sistem operasi lainnya
adalah harga. Linux ini lebih murah dan dapat diperbanyak serta
didistribusikan kembali tanpa harus membayar fee atau royalti kepada
seseorang. Tetapi ada hal lain yang lebih utama selain pertimbangan harga
yaitu mengenai source code. Source code Linux tersedia bagi semua orang
sehingga setiap orang dapat terlibat langsung dalam pengembangannya.
Kebebasan ini telah memungkinkan para vendor perangkat keras membuat
driver untuk device tertentu tanpa harus mendapatkan lisensi source code
yang mahal atau menandatangani Non Disclosure Agreement (NDA). Dan
itu juga telah menyediakan kemungkinan bagi setiap orang untuk melihat
ke dalam suatu sistem operasi yang nyata dan berkualitas komersial.
Karena Linux itu tersedia secara bebas di internet, berbagai vendor telah
membuat suatu paket distrbusi yang dapat dianggap sebagai versi kemasan
Linux. Paket ini termasuk lingkungan Linux lengkap, penagkat lunak
untuk instalasi dan mungkin termasuk perangkat lunak khusus dan
dukungan khusus.

2.1.3 Perbandingan Linux terhadap sistem operasi lainnya


Linux disusun berdasarkan standar sistem operasi POSIX yang
sebenarnya diturunkan berdasarkan fungsi kerja UNIX.UNIX kompatibel
dengan Linux pada level system call, ini berarti sebagian besar program
yang ditulis untuk UNIX atau Linux dapat direkompilasi dan dijalankan
pada sistem lain dengan perubahan yang minimal. Secara umum
dapatdikatakan Linux berjalan lebih cepat dibanding UNIX lain pada
hardware yang sama. Dan lagi UNIX memiliki kelemahan yaitu tidak
bersifat free. MS-DOS memiliki kemiripan dengan Linux yaitu file sistem
yang bersifat hira rkis. Tetapi MS-DOS hanya dapat dijalankan pada
prosesor x86 dan tidak mendukung multi user dan multi tasking, serta tidak
bersifat free. Juga MSDOS tidak memiliki dukungan yang baik agar dapat
berinteroperasi dengan sistem operasi lainnya, termasuk tidak tersedianya
perangkat lunak network, program pengembang dan program utilitas yang
ada dalam Linux.
MSWindows menawarkan kemampuan grafis yang ada pada Linux
termasuk kemampuan networking tetapi tetap memiliki kekurangan yang
ada pada MS-DOS. Windows NT yang juga tersedia untuk Digital Alpha
selain prosesor x86. Namun Windows NT ini masih juga memiliki
beberapa kekurangan yang telah ada pada MS-DOS. Waktu untuk
menemukan suatu bug dalam suatu sistem operasi ini tak sebanding
dengan harga yang harus dibayar. Sistem operasi Apple untuk Macintosh
hanya dapat berjalan di sistem Mac. Juga memiliki kekurangan dari sisi
ketersediaan perangkat bantu pengembang (development tool) dan
juga kurang dapat secara mudah untuk berintoperasi dengan sistem operasi
lainnya. Apple juga telah memungkinkan Linux dapat dijalankan pada
Power.
? Kelebihan Linux
Di sini akan dijelaskan beberapa kelebihan dari sistem operasi
Linux/UNIX dibandingkan dengan dengan sistem operasi yang lain.
Dan berikut ini adalah beberapa fakta dari hal-hal yang
menguntungkan dengan menggunakan program dan file-file
Linux/UNIX :
1. Pada dasarnya semua data tersimpan di dalam harddisk
walau ada beberapa kondisi dimana data tersimpan di
disket. Linux/UNIX memberikan beberapa proses spesial
dimana terminal, printer dan device hardware lainnya dapat
diakses seperti kita mengakses file yang tersimpan dalam
harddisk atau disket.
2. Ketika program dijalankan, program tersebut dijalankan
dari harddisk ke dalam RAM dan setelah dijalankan akan
dinamakan sebagai proses.
3. Linux/UNIX menyediakan servis untuk membuat,
memodifikasi program, proses dan file.
4. Linux/UNIX mendukung struktur file yang bersifat hirarki.
5. Linux/UNIX adalah salah satu sistem operasi yang
termasuk ke dalam kelas sistem operasi yang dapat
melakukan multitasking. Multitasking sendiri adalah
keadaan dimana suatu sistem operasi dapat melakukan
banyak kerjaan pada saat yang bersamaan.
6. Selain multitasking, Linux/UNIX juga dapat mendukung
multiuser. Yaitu sistem operasi yang pada saat bersamaan
dapat digunakan oleh lebih dari satu user yang masuk ke
dalam sistem. Bahkan untuk Linux juga mendukung untuk
multiconsole dimana pada saat bersamaan di depan
komputer langsung tanpa harus melalui jaringan dan
memungkinkan lebih dari satu user masuk ke dakam
sistem.

2.1.4 Bagian sistem operasi Linux


Sistem Operasi Linux/UNIX terdiri dari kernel, program sistem dan
beberapa program aplikasi. Kernel merupakan inti dari sistem operasi yang
mengatur penggunaan memori, piranti masukan keluaran, proses-proses,
pemakaian file pada file system dan lain-lain. Kernel juga menyediakan
sekumpulan layanan yang digunakan untuk mengakses kernel yang disebut
system call. System call ini digunakan untuk mengimplementasikan
berbagai layanan yang dibutuhkan oleh sistem operasi. Program sistem dan
semua program-program lainnya yang berjalan diatas kernel disebut user
mode. Perbedaan mendasar antara program sistem dan program aplikasi
adalah program sistem dibutuhkan agar suatu sistem operasi dapat berjalan
sedangkan program aplikasi adalah program yang dibutuhkan untuk
menjalankan suatu aplikasi tertentu. Contoh : daemon merupakan program
sistem dan pengolah kata (word processor) merupakan program aplikasi.

2.1.5 Bagian penting kernel Linux


Kernel Linux terdiri dari beberapa bagian penting, seperti :
manajemen proses, manajemen memori, hardware device drivers,
filesystem drivers, manajemen jaringan dan lain-lain. Namun bagian yang
terpenting ialah manajemen proses dan manajemen memori. Manajemen
memori menangani daerah pemakaian memori, daerah swap, bagian-bagian
kernel dan untuk buffer cache. Manajemen proses menangani pembuatan
proses -proses dan penjadwalan.

2.2 VIDEO STREAMING


Video streaming merupakan bidang yang menarik untuk dijelajahi
karena relatif baru dengan biaya yang cukup murah dengan semakin
murahnya peralatan elektronik. Aplikasi dari Video Streaming salah satunya
untuk memonitoring atau pemantauan kondisi ruangan, informasi videoakan
dikirmkan melalui saluran komunikasi, termasuk jaringan, kabel telepon,
saluran ISDN atau radio. Informasi video mempunyai bandwidth yang lebar
(sangat banyak byte per detik yang dikirimkan), yang oleh karenanya sangat
membutuhkan teknologi kompresi video untuk mengurangi kebutuhan
bandwidth sebelum dikirimkan melalui saluran ko munikasi. Peralatan yang
perlu ditambahkan hanya kamera video sederhana. Sekedar gambaran
singkat, sebuah kanal video yang baik tanpa dikompresi akan mengambil
bandwidth sekitar 9 Mbps. Dengan teknik kompresi yang sudah ada pada
hari ini, kita dapat menghemat sebuah kanal video sekitar 30 Kbps. Itu
berarti sebuah saluran Internet yang tidak terlalu cepat sebetulnya dapat
digunakan untuk menyalurkan video.
Beberapa hal yang perlu diperhatikan dalam pengiriman video
streaming adalah:
- Jika kita menggunakan video hitam-putih akan memakan bandwidth
lebih kecil daripada jika kita melakukan konferensi menggunakan
video berwarna.
- Jika kita menggunakan kecepatan pengiriman kecepatan pengiriman
frame per second (fps) video yang rendah, akan memakan
bandwidth yang lebih rendah dibandingkan frame per second (fps)
yang tinggi.
Video yang cukup baik biasanya dikirim dengan kecepatan frame per
second (fps) sekitar 30 fps. Jika dikirimkan tanpa kompresi, sebuah video
dengan 30 fps akan mengambil bandwidth kira -kira 9Mbps, amat sangat
besar untuk ukuran kanal komunikasi data.

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.

2.4 RANGKAIAN PENGUBAH LEVEL TEGANGAN

Kita menggunakan RS232 untuk komunikasi dengan komputer


server secara serial, untuk itu mikrokontroller memerlukan sebuah piranti
yang berfungsi sebagai pengubah level tegangan. RS232 menggunakan
level/karakteristik elektrik yang berbeda dengan level TTL. RS232 bekerja
pada level tegangan +3 s/d +25 Volt untuk space (logic 0) dan -3 s/d -25 Volt
untuk mark (logic 1). Sedangkan TTL bekerja pada level tegangan -5 s/d +5
Volt. Piranti tambahan yang kita butuhkan adalah IC MAX232. Pada
dasarnya IC ini hanya digunakan sebagai pengubah level tegangan ke level
Transistor Transistor Logic (TTL), tidak berfungsi sebagai pengkodean
sinyal yang melewati RS232, dan juga tidak mengkonversikan data serial ke
paralel.
Gambar 2.1
IC MAX232 sebagai pengubah level tegangan

RS232 sebagai komunikasi serial mempunyai 9 pin yang memiliki


fungsi masing-masing. Pin yang biasa digunakan adalah pin 2 sebagai
received data, pin 3 sebagai transmited data, dan pin 5 sebagai ground signal.
Karakteristik elektrik dari RS232 adalah sebagi berikut :
• Space (logic 0) mempunyai level tegangan sebesar +3 s/d +25 Volt.
• Mark (logic 1) mempunyai level tegangan sebesar -3 s/d -25 Volt.
• Level tegangan antara +3 s/d -3 Volt tidak terdefinisikan.
• Arus yang melalui rangkaian tidak boleh melebihi dari 500 mA., ini
dibutuhlan agar sistem yang dibangun bekerja dengan akurat.

Gambar 2.2
Karakteristik Elektrik RS232

Gambar 2.3
RS232 (Sebagai Komunikasi Serial )
Tabel 2.4
Fungsi masing-masing pin RS232

RS232 Pin Assignments (DB9


PC signal set)
Received Line Signal
Pin 1 Detector
(Data Carrier Detect)
Pin 2 Received Data
Pin 3 Transmit Data
Pin 4 Data Terminal Ready
Pin 5 Signal Ground
Pin 6 Data Set Ready
Pin 7 Request To Send
Pin 8 Clear To Send
Pin 9 Ring Indicator

2.5 MIKROKONTROLLER AT89S51 SEBAGAI ANTARMUKA


(INTERFACE).

AT89S51 adalah mikrokontroller keluaran Atmel dengan 4K byte


Flash PEROM (Programmable and Erasable Read Only Memory), AT89S51
merupakan memori dengan teknologi nonvolatile memory, isi memori
tersebut dapat diisi ulang ataupun dihapus berkali-kali.
Memori ini biasa digunakan untuk menyimpan instruksi (perintah)
berstandar MCS-51 code sehingga memungkinkan mikrokontroller ini untuk
bekerja dalam mode single chip operation (mode operasi keping tunggal)
yang tidak memerlukan external memory (memori luar) untuk menyimpan
source code tersebut.
Gambar 2.5
Konfigurasi Pin Mikrokontroller AT89S51

2.5.1 DESKRIPSI MIKROKONTROLLER AT89S51


• VCC (power supply)
• GND (ground)
• Port 0, yaitu pin p0.7..p0.0
Port 0 dapat berfungsi sebagai I/O biasa, low order multiplex
addres/data ataupun menerima kode bye pada saat Flash
Programming. Pada saat sebagai I/O biasa port ini dapat
memberikan output sink ke delapan buah Transistor Transistor
Logic (TTL) input atau dapat diubah sebagai input dengan
memberikan logika 1 pada port tersebut.
• Port 1, yaitu pin p1.0...p1.7
Port 1 berfungsi sebagai I/O biasa atau menerima low order address
bytes selama pada saat Flash Programming. Port ini mempunyai
internal pull updan berfungsi sebagai input dengan memberikan
logika 1. Sebagai output port ini dapat memberikan output sink
keempat buah input TTL. Fasilitas khusus dari port 1 ini adalah
adanya In-System Programming, yaitu port 1.5 sebagai MOSI, port
1.6 sebagai MISO, port 1.7 sebagai SCK.
• Port 2, yaitu mulai pin p2.0...p2.7
Port 2 berfungsi sebagai I\O biasa atau high order address, pada saat
mengakses memori secara 16 bit (Movx @DPTR). Pada saat
mengakses memori secara 8 bit (Mov @Rn), port ini akan
mengeluarkan sisi dari Special Function Register. Port ini
mempunyai pull up dan berfungsi sebagai input dengan memberikan
logika 1. Sebagai output, port ini dapat memberikan output sink
keempat buah input TTL.
• Pin 3.0, sebagai RXD (Port Serial Input).
• Pin 3.1, sebagai TXD (Port Seial Output).
• Pin 3.2, sebagai INT0 (Port External Interupt 0).
• Pin 3.3, sebagai INT1 (Port External Interupt 1).
• Pin 3.4, sebagai T0 (Port External Timer 0).
• Pin 3.5, sebagai T1 (Port External Timer 1).
• Pin 3.6, sebagai WR (External Data Memory Write Strobe).
• Pin 3.7, sebagai RD (External Data Memory Read Strobe).
• Pin 9, sebagai RST
Reset akan aktif dengan memberikan input high selama 2 cycle.
• Pin 30, sebagai ALE/PROG
Pin ini dapat berfungsi sebagai Address Latch Enable (ALE) yang
me-latch low byte address pada saat mengakses memori external.
Sedangkan pada saat Flash Programming (PROG) berfungsi sebagai
pulse input. Pada operasi normal ALE akan mengeluarkan sinyal
clock sebesar 1/16 frekwensi oscillator, kecuali pada saat
mengakses memori external. Sinyal clock pada saat ini dapat pula di
disable dengan men-set bit 0 Special Function Register.
• Pin 29, sebagai PSEN
Pin ini berfungsi pada saat mengeksekusi program yang terletak
pada memori eksteranal. PSEN akan aktif dua kali setiap cycle.
• Pin 31, Sebagai EA/VPP
Pada kondisi low, pin ini akan berfungsi sebagai EA yaitu
mikrokontroller akan menjalankan program yang ada pada memori
eksternal setelah sistem di reset. Jika berkondisi high, pin ini akan
berfungsi untuk menjalankan program yang ada pada memori
internal. Pada saat Flash Programming pin ini akan mendapat
tegangan 12 Volt (VPP).
• Pin 19, sebagai XTALL1 (Input Oscillator).
• Pin 18, sebagai XTALL2 (Output Oscillator).

2.5.2 STRUKTUR MEMORI


AT89S51 mempunyai stuktur memori yang terdiri atas :
• RAM Internal, memori sebesar 128 byte yang biasanya digunakan
untuk menyimpan variabel atau data yang bersifat sementara.
• Special Function Register (Register Fungsi Khusus), memori yang
berisi register-register yang mempunyai fungsi-fungsi khusus yang
disediakan oleh mikrokontroller tersebut, seperti timer, serial dan
lain-lain.
• Flash PEROM, memori yang digunakan untuk menyimpan
instruksi-instruksi MCS51.

FF
PROGRAM
SPECIAL ADDRESS
FUNCTION REGISTER
REG.
RAM 80
ADDRESS 7F
REGISTER FLASH
RAM
PEROM
INTERNAL

00

Gambar 2.6
Struktur Memori AT89S51

AT89S51 mempunyai struktur memori yang terpisah antara RAM


Internal dan Flash PEROM nya. RAM Internal dialamati oleh RAM Address
Register (Register Alamat RAM) sedangkan Flash PEROM yang
menyimpan perintah-perintah MCS-51 dialamti oleh Program Adderss
Register (Register Alamat Program). Dengan adanya struktur memori yang
terpisah tersebut, walaupun RAM Internal dan Flash PEROM mempunyai
alamat yang sama, yaitu alamat 00, namun secara fisiknya kedua memori
tidak saling berhubungan.

2.5.3. REGISTER KONTROL PORT SERIAL


Register kontrol dan status untuk port serial dalam SCON register
ini mengandung bit-bit pemilihan mode kerja port serial, bit data ke -9
pengiriman dan (TB8 dan RB8) serta bit-bit interupsi port serial (TI dan RI).
Gambar 2.7
Register SCON

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

SM0 SM1 MODE KETERANGAN BAUT RATE

0 0 0 Register Geser Tetap (fosc/12)


0 1 1 UART 8-bit Bisa diubah-ubah
(dengan Timer)
1 0 2 UART 9-bit Tetap (fosc/64 atau
fosc/32)
1 1 3 UART 9-bit Bisa diubah-ubah
(dengan timer)

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

2.5.4 ANTARMUKA SERIAL


Port serial pada AT89S51 bersifat dupleks-penuh atau fullduplex,
artinya port serial bisa menerima dan mengirim secara bersamaan. Selain itu
juga memiliki penyangga penerima, artinya port serial mulai bisa menerima
byte yang kedua sebelum byte pertama dibaca oleh register penerima (jika
sampai byte yang kedua selesai diterima sedangkan byte pertama belum juga
dibaca, maka salah satu byte akan hilang ). Penerimaan dan pengiriman data
port serial melalui register SBUF. Penulisan ke SBUF berarti mengisi
register pengiriman SBUF sedangkan pembacaan dari SBUF berarti
membaca register penerimaan SBUF yang memang terpisah secara fisik
(secara perangkat lunak namanya menjadi satu yaitu SBUF).
Port serial pada AT89S51 bisa digunakan dalam 4 mode kerja yang
berbeda. Dari 4 mode tersebut, 1 mode diantaranya bekerja secara sinkron
dan 3 lainnya bekerja secara asinkron. Keempat mode kerja tersebut adalah:
• Mode 0 : Mode ini bekerja secara sinkron, data serial dikirim dan
diterima melalui kaki P3.0 (RxD), sedangkan kaki P3.1 (TxD)
dipakai untuk menyalurkan detak pendorong data serial yang
dibangkitkan AT89S51. Data dikirim/diterima 8 bit sekaligus,
dimulai dari bit yang bobotnya paling kecil atau LSB (bit 0) dan
diakhiri dengan bit yang bobotnya paling besar atau MSB (bit 7).
Kecepatan pengiriman data (baudrate) adalah 1/12 frekuensi kristal
yang digunakan.
• Mode 1 : Pada mode ini tetap yaitu, data dikirim dan diterima
melalui kaki P3.0 (RxD), secara asinkron (juga mode 2 dan 3). Pada
Mode 1 data dikirim/diterima 10 bit sekaligus, diawali dengan 1 bit
start, disusul dengan 8 bit data yang dimulai dari bit yang bobotnya
paling kecil (bit 0), diakhiri dengan 1 bit stop. Pada AT89S51 yang
berfungsi sebagai penerima bit stop adalah RB8 dalam register
SCON. Kecepatan pengiriman data (baud rate ) bisa diatur sesuai
dengan keperluan. Mode inilah (mode 2 dan 3) yang umum dikenal
sebagai UART(Universal Asynchronous Receiver/Transmiter).
• Mode 2 : Data dikirim/diterima 11 bit sekaligus, diawali dengan 1
bit start, disusul 8 bit data yang dimulai dari bit yang bobotnya
paling kecil (bit 0), kemudian bit ke 9 yang bisa diatur lebih lanjut,
diakhiri dengan 1 bit stop. Pada AT89S51 yang berfungsi sebagai
penerima, bit 9 ditampung pada bit RB8 dalam register SCON,
sedangkan bit stop diabaikan tidak ditampung. Kecepatan
pengiriman data (baud rate) bisa dipilih antara 1/32 atau 1/64
frekuensi kristal yang digunakan.
• Mode 3 : mode ini sama dengan mode 2, hanya saja kecepatan
pengiriman data (baud rate) bisa diatur sesuai dengan keperluan,
seperti halnya Mode 1.
Pada mode asinkron (mode 1, mode 2, mode 3), port AT89S51
bekerja secara fullduplex.

2.5.5 PENGATURAN BAUD RATE PORT SERIAL


Baud rate dari port serial dapat diatur pada mode 1 dan mode 3,
namun pada Mode 0 dan Mode 2 baud rate tersebut mempunyai kecepatan
yang permanen yaitu untuk mode 0 adalah 1/12 frekwensi osilator dan mode
2 adalah 1/64 frekwensi osilator.
Dengan mengubah bit SMOD yang terletak pada register PCON
menjadi set (kondisi awal saat sistem reset adalah clear), baud rate pada
mode 1,2, dan 3 akan berubah menjadi dua kali lipat.
Tabel 2.2
Rumus Penghitungan Baudrate pada Komunikasi Serial

2.6 PEMROGRAMAN C DI LINUX

Bahasa C bisa disebut bahasa pemograman tingkat menengah (middle


level programming language ). Arti tingkat (level) disini adalah kemampuan
mengakses fungsi-fungsi dan perintah-perintah dasar bahasa mesin/hardware
(machine basic instruction set). Dalam perspektif mudahnya dipahami
manusia, C bisa digolongkan dalam bahasa tingkat tinggi, namu n C juga
menyediakan kemampuan yang ada pada bahasa tingkat rendah, misalnya
operasi bit, operasi byte, pengaksesan memori, dsb.Beberapa alasan mengapa
memakai bahasa C adalah terangkum dibawah.
Ø C adalah bahasa pemograman yang paling popular saat ini
Ø C adalah bahasa pemograman yang memiliki portabilitas tinggi
Ø C adalah bahasa pemograman dengan kata kunci (keyword) sedikit C
hanya menyediakan 32 kata kunci seperti terangkum dibawah:

Tabel 2.3. Keyword Bahasa C

auto break case char const continue default


do double else enum extern float for
go to if int long register return short
signed sizeof static struct switch typedef union
unsigned void volatile while

Ø C adalah bahasa pemograman yang fleksibel


Ø C adalah bahasa yang bersifat moduler
Struktur Program Bahasa C
Program bahasa C adalah suatu program terdiri dari satu atau lebih
fungsi-fungsi. Fungsi utama dan harus ada pada program C yang kita buat
adalah fungsi main(). Fungsi main() ini adalah fungsi pertama yang akan
diproses pada saat program di kompile dan dijalankan, sehingga bisa disebut
sebagai fungsi yang mengontrol fungsi-fungsi lain. Karena struktur program
C terdiri dari fungsi-fungsi lain sebagai program bagian (subroutine), maka
bahasa C biasa disebut sebagai bahasa pemrograman terstruktur. Cara
penulisan fungsi pada program bahasa C adalah dengan memberi nama
fungsi dan kemudian dibuka dengan kurang kurawal buka ({) dan ditutup
dengan kurung kurawal tutup (}).
Fungsi-fungsi lain selain fungsi utama bisa dituliskan setelah atau sebelum
fungsi utama dengan deskripsi prototype fungsi pada bagian awal program.
Bisa juga dituliskan pada file lain yang apabila kita ingin memakai atau
memanggil fungsi dalam file lain tersebut, kita harus menuliskan header
filenya, dengan preprocessor directive #include. File ini disebut file pustaka
(library file). Untuk lebuh jelasnya struktur dasar program c dapat
digambarkan sebagai berikut:

Gambar 2.8.
Struktur Dasar Program C

GCC ( GNU C COMPILER )


GNU CC yang lebih dikenal dengan GCC merupakan salah satu
compiler yang terkemuka di Linux dan lebih dikenal dengan nama GNU C
Compiler. Pemrograman ini dapat digunakan untuk menyusun program
bahasa C yang ditulis dalam C,C++, dan obyektif C. Meskipun GCC bersifat
free namun dapat diandalkan sebagai salah satu compiler yang mendukung
standar C dan C++ sehingga mampu bersaing dengan produk-produk
komersial lainnya. GCC dalam melakukan prosesnya melalui empat bagian :
v Prepocessor
v Compilation
v Assembly
v Linking
Keempat proses tersebut dapat dijalankan satu persatu tanpa
sekaligus menjalankan keempat tahap tersebut. Bila dengan compiler
komersial lainnya biasanya langsung memberikan proses jadi tanpa
pengenalan proses -proses tersebut.
Ketika kita menggunakan GCC untuk melakukan kompilasi pada
sebuah program yang didukung oleh GCC biasanya kita mendapatkan
beberapa perintah opsion-opsion agar hasilnya lebih baik lagi.

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.

Sistem Server Basis data MySQL


Sistem basis data MySQL memiliki sistem sekuritas dengan tiga
verifikasi yaitu user(name), password dan host. Verifikasi host
memungkinkan untuk membuka sekuriti di localhost, tetapi tertutup bagi host
lain (bekerja di lokal komputer). Sistem sekuriti ini ada di dalam basis data
mysql dan pada tabel user. Proteksi juga dapat dilakukan terhadap basis data,
tabel, hingga kolom secara terpisah.

2.8 WORLD WIDE WEB


Pada awalnya internet adalah sebuah proyek yang dimaksudkan
untuk menghubungkan para ilmuan dan peneliti di Amerika, namun ini telah
tumbuh menjadi media komunikasi global yang dipakai semua orang di
muka bumi. Perumbuhan ini membawa beberapa masalah penting mendasar,
dianataranya kenyataan bahwa Internet tidak diciptakan pada jaman Gaphical
User Interface (GUI) seperti saat ini,Internet dimulai pada masa dimana
orang masih menggunakan alat – alat akses yang tidak user – friendly yaitu
terminal berbasis teks serta perintah – perintah command line yang panjang –
panjang serta sukar diingat, sangat berbeda dengan komputer dewasa ini
yang menggunakan klik tombol mouse pada layar grafik berwarna.
Kemudian orang berpikir untuk membuat sesuatu yang lebih
baik.Popularitas Internet mulai berkembang pesat seperti jamur di musim
penghujan setelah standar baru yaitu HTTP dan HTML diperkenalkan
kepada masyarakat. HTTP ( Hypertext Trasfer Protocol ) membuat
pengaksesan informasi melalui protokol TCP/IP menjadi lebih mudah dari
sebelumnya. HTML ( Hypertext Markup Language ) memungkinkan orang
menyajikan informasi yang secara visual lebih menarik. Pemunculan HTTP
dan HTML kemudian membuat orang mengenal istilah baru dalam internet
yang sekarang menjadi sangat populer, bahkan sedemikian populernya
sehingga sering dianggap identik denga internet itu sendiri, yaitu World
Wide Web (WWW).
Pada prinsipnya World Wide Web (singkatan cukup disebut ”web”
saja ) bekerja dengan cara menampilkan file –file HTML yang berasal dari
server web pada program client khusus, yaitu browser web. Program browser
pada client mengirimkan permintaan (request) kepada server web, yang
kemudian akan dikirimkan oleh server dalam bentuk HTML. File HTML
berisi instruksi –instruksi yang diperlukan untuk membentuk tampilan.
Perintah –perintah HTML ini kemudian diterjemahkan oleh browser web
sehingga isi informasinya dapat ditampilkan secara visual kepada pengguna
di layar komputer.
Gambar 2.9 Konsep dasar browser dan server web

2.9 BAHASA PEMROGRAMAN PHP


PHP adalah bahasa pemrograman script yang paling banyak dipakai
saat ini. PHP banyak dipakai untuk memrogram situs web dinamis, walaupun
tidak tertutup kemungkinam untuk digunakan untuk pemakaian lain. PHP
pertama kali dibuat oleh Rasmus Lerdorf pada tahun 1995. Pada waktu itu
PHP bernama FI (Form Interpreted). Pada saat tersebut PHP adalah
sekumpulan script yang digunakan untuk mengolah data form dari
web.Perkembangan selanjutnya adalah Rasmus melepaskan kode sumber
tersebut dan menamakannya PHP/FI, pada saat tersebut kepanjangan dari
PHP/ FI adalah Personal Home Page/Form Interpreter. Dengan pelepasan
kode sumber ini menjadi open source, maka banya programmer yang tertarik
untuk ikut mengembangkan PHP.Pada November 1997, dirilis PHP/FI 2.0.
Pada rilis ini interpreter sudah diimplementasikan dalam C. Dalam rilis ini
disertakan juga modul-modul ekstensi yang meningkatkan kemampuan
PHP/FI secara signifikan
Pada tahun 1997, sebuah perusahaan bernama Zend, menulis ulang
interpreter PHP menjadi lebih bersih, lebih baik dan lebih cepat. Kemudian
pada Juni 1998 perusahaan tersebut merilis interpreter baru untuk PHP dan
meresmikan nama rilis tersebut menjadi PHP 3.0.Pada pertengahan tahun
1999, Zend merilis interpreter PHP baru dan rilis tersebut dikenal dengan
PHP 4.0. PHP 4.0 adalah versi PHP yang paling banyak dipakai. Versi ini
banyak dipakai sebab versi ini mampu dipakai untuk membangun aplikasi
web kompleks tetapi tetap memiliki kecepatan proses dan stabilitas yang
tinggi.Pata Juni 2004, Zend merilis PHP 5.0. Versi ini adalah versi mutakhir
dari PHP. Dalam versi ini, inti dari interpreter PHP mengalami perubahan
besar. Dalam versi ini juga dikenalkan model pemrograman berorientasi
objek baru untuk menjawab perkembangan bahasa pemrograman kearah
pemrograman berorientasi objek.

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();
?>

Listing program 2.1 php info

Program 2.1 akan menampilkan file php info yang berisi berbagai informasi
tentang PHP.

2.10 WEBSERVER APACHE


Apache HTTP Server adalah software open source untuk HTTP web
server yang dijalankan di platform sistem Unix- like seperti BSD, Linux,
dan UNIX, Microsoft Windows dan lainnya. Apache dikembangkan dan
dipelihara oleh komunitas terbuka yang bergabung dengan Apache
Software Foundation.Mulanya, Apache sekedar open source
alternative untuk Netscape web server (kini dikenal sebagai Sun ONE).
Kemudian berkembang dengan pesat dan melampaui semua jenis Unix based
HTTP server lainnya dalam hal fungsionalitas dan kecepatan. Apache adalah
HTTP server paling popular di Internet sejak April 1996 dan menguasai 57%
pangsa pada bulan Mei 1999. Pada bulan August 2004 tercatat peningkatan
menjadi 67%.
Apache piawai dengan fitur 'highly configurable error
messages, DBMS-based authentication databases, and content
negotiation'. Didukung beberapa GUIs memudahkan konfigurasi dan lebih
intuitif. Apache medukung fitur yang diimplementasikan sebagai modul ter-
kompilasi mulai dari server-side programming language support
sampai dengan authentication schemes . Sejumlah bahasa pemrograman
yang lazim digunakan seperti Perl, Python, dan PHP didukung Apache
sepenuhnya. Apache umumnya digunakan dalam satu paket popular LAMP
(Linux Apache MySQL dan PHP/Perl/Python). Selain itu Apache juga
dikemas bersama paket proprietari seperti Oracle database atau IBM
WebSphere application server . Sementara secara tak langsung juga
didukung Borland bersama Kylix dan Delphi development tools mereka.
BAB III
PERENCANAAN DAN PEMBUATAN SISTEM

Pada bab ini akan dibahas mengenai perencanaan dan pembuatan


perangkat lunak (software) maupun perangkat keras (hardware) dari sistem
yang akan dibuat. Dimana konsep dasar dari perencanaan proyek akhir ini
adalah membuat sistem keamanan brankas yang dapat dikendalikan dari
jarak jauh dan dapat diakses melalui komunikasi internet.
Dalam pembuatan suatu sistem maka yang pertama kali dilakukan
adalah dengan mengetahui permasalahannya. Tahap tersebut sudah dibahas
dalam BAB sebelumnya. Tahap selanjutnya adalah mengetahui konfigurasi
sistem secara keseluruhan.

3.1. PERENCANAAN SYSTEM


Sistem ini memiliki 3 peralatan utama yaitu Webcam,AT89S51 dan
Dialogic card. Webcam langsung di hubungkan dengan usb dan dialogic card
D41JCT/LS di pasang pada PCI slot. Untuk trigger sistem ini menggunakan
rangkaian AT89S51 yang dihubungkan pada serial port dan juga terhubung
pada bel DC (Alarm) . Dalam proses kerja proyek akhir ini digunakan blok
diagram sistem sebagai berikut :

Gambar 3.1 Blok Diagram Sistem


Cara kerja dari sistem sebagai berikut :
1. Pada saat sistem diaktifkan, maka program motion akan standby dan
webcam akan bekerja jika ada suatu gerakan pada ruangan
2. Jika terdapat gerakan pada ruangan, maka webcam akan meng-capture
setiap gerakan lalu menyimpan hasilnya pada database
3. Selain menyimpan gambar, program akan mengkonversikan gambar-
gambar tersebut menjadi sebuah file yang berformat .AVI
4. Apabila sistem dalam keadaan aktif dimana brankas belum terbuka maka
pemilik atau manager dapat mengecek kondisi sistem dengan
menghubungi nomor yang sudah diset pada dialogic.
5. Manager juga dapat mengetahui kondisi ruangan melalui ko munikasi
Internet dengan cara mengakses website yang sudah dibuat, tetapi hanya
orang tertentu saja yang sudah memiliki username dan password yang
bisa login.
6. Website tersebut dapat menampilkan kondisi ruangan secara real time
dan juga menampilkan hasil capture dari kondisi ruangan
7. Jika pintu brankas terbuka, maka limit switch yang terpasang pada pintu
brankas akan tertekan dan nantinya akan menyalakan alarm yang
terpasang pada modul AT89S51
8. Modul AT89S51 akan mengirimkan informasi pada PC melalui
komunikasi serial.
9. Setelah PC menerima informasi tersebut, maka komputer akan
menjalankan program dialogic card untuk menghubungi nomor satpam,
manager1, manager2 dan polisi secara berurutan.
10. Apabila ada panggilan yang tidak berhasil dikarenakan sibuk, tidak
diangkat dan lain-lain maka dialogic card akan terus menghubungi
nomor selanjutnya.
11. Panggillan yang tidak berhasil tersebut akan dipanggil kembali setelah
panggilan yang sesuai urutan berhasil dihubungi.

3.2 PERENCANAAN DAN PEMBUATAN PERANGKAT KERAS

3.2.1 PERANGKAT KERAS WEBCAM (Logitech QuickCam Pro 4000)

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

3.2.2 PERENCANAAN DAN PEMBUATAN PENGUBAH LEVEL


TEGANGAN

Untuk pembuatan proyek akhir ini kami menggunakan IC MAX232


sebagai pengubah level tegangan. IC MAX232 mempunyai 2 receivers yang
berfungsi sebagai pengubah level tegangan dari level RS232 ke level
Transistor Transistor Logic (TTL) dan mempunyai 2 drivers yang berfungsi
mengubah level tegangan dari level TTL ke level RS232. Pasangan
driver/receiver ini digunakan untuk TX dan RX , sedangkan pasangan yang
lainnya digunakan untuk CTS dan RTS.
Tabel 3.1
Konfigurasi Pin IC MAX232

Dalam pembuatan rangkaian, IC MAX232 memerlukan beberapa


kapasitor. Rangkaian ini menggunakan kapasitor sebesar 0.1 µF dengan
tegangan 16 Volt pada beberapa kaki pin. IC ini memerlukan input +5 Volt.

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.

3.2.3 PERENCANAAN DAN PEMBUATAN ANTAR MUKA


(INTERFACES) DENGAN MIKROKONTROLLER AT89S51

Dalam proyek akhir ini digunakan AT89S51 sebagai interface antara


komputer server dengan memanfaatkan pin Tx, Rx yang ada pada AT89S51
sebagai komunikasi serial, maka AT89S51 fungsinya akan sama dengan
PPI8255 tetapi pada PPI8255 digunakan komunikasi paralel sedangkan
AT89S51 menggunakan komunikasi serial.

Gambar 3.4
Sistem Minimum AT89S51
3.2.4 PEMBUATAN PERANGKAT KERAS DOWNLOADER
MIKROKONTROLLER AT89S51

Rangkaian ini digunakan untuk men-download-kan program ke


mikrokontroller untuk pengontrolan arah putaran motor stepper. Pada
rangkaian ini digunakan IC 74HCT541 untuk mengisolasi dan sebagai buffer
data pada paralel port. Selain itu dengan pemanfaatan IC jenis HCT ini
memungkinkan programmer untuk bekerja secara optimal dan akurat dengan
paralel port. Pemrograman secara In System Programming adalah
programmer tidak perlu melepas IC mikrokontroller pada waktu akan di-
download-kan, hal ini berarti pen-download-an program dapat langsung
dilakukan pada rangkaian aplikasi. Yaitu dengan memanfaatkan pin -pin pada
mikrokontroller AT89S51.

Gambar 3.5
Rangkaian Downloader ISP Flash
3.3 PEMBUATAN DAN PERENCANAAN PERANGKAT LUNAK

3.3.1 INSTALASI LINUX DEBIAN


Sistem operasi yang digunakan pada peralatan pengamanan
rumah ini adalah linux debian kernel 2.4.x. Kernel 2.4.x ini di pilih
karena merupakan kernel terbaru dari linux debian sehingga untuk
konfigurasi sistem pengamanan rumah semuanya sudah memenuhi.
Untuk update paket, sistem server mengambil paket dari mirror debian
terdekat, yaitu mirror.eepis -its.edu server ini merupakan mirror lokal di
PENS atau bisa juga mirror ke kebo.vlsm.org. Mirror merupakan
sebutan untuk komputer server yang berfungsi sebagai rujukan atau
pusat untuk melakukan update sistem operasi linuz debian. Pada mirror
disediakan paket-paket software yang bisa berjalan di linux debian.
Pemilihan mirror tersebut dilakukan dengan cara menentukan source list
server dengan mengkonfigurasi

file /etc/apt/source.list

Adapun Langkah-langkah instalasi sebagai berikut :


§ Booting dari CD dengan mengeset bios booting awal pada CD rom
§ Pada menu input ketikan kernel linux yang akan di pakai, untuk
kernel 2.6 ketikkan linux24
§ Pilihan bahasa, untuk bahasa yang standar pilih american english.
§ Pilihan negara, pilih other, asia kemudian indonesia.
§ Pilihan keyboard, untuk keyboard yang di gunakan adalah dari
amerika, maka pilih american english.
§ Automatic detect hardware, network (dhcp), klien akan
mendapatkan IP dari server secara otomatis.
§ Memasukkan hostname, debian (optional).
§ Memasukkan domain name: eepis-its.edu
§ Metode partisi, entire disk, untuk memudahkan manajemen hardisk
pilih partisi secara manual.
§ Finish partisi dan write changes to disk, pilih yes.
§ Instaling debian base system.
§ Install GRUB boot loader, pilih yes.
§ Setelah instaling compled,ambil CD installer, pilih continue.
§ Komputer akan booting ulang.
§ Tampilan " Welcome to your new Debian System!" pilih no.
§ Konfigurasi waktu, pilih konfigurasi menual untuk wilayah asia
pilih no.
§ Pilih asia/ Jakarta ( java & sumatra ).
§ Konfigurasi password
root password (password untuk super user root)
re-enter password (pengulangan password root)
nama user / full name (user lain selain root)
nama user account
user password (password user)
re-enter password (pengulangan password user)
§ Konfigurasi apt, untuk instalasi sistem dari CD, masukkan CD
Debian dan pilih CDROM tekan ok. perlu di ketahui letak direktori
CD-ROM berada pada file à / dev/cdrom.
Tungggu beberapa saat. !
Tampilan scan untuk CD Debian Yang lain, pilih no
Tampilan pilihan tentang informasi HTTP proxy àkosongi, pilih
ok.
Tampilan connect security.debian.org à CTRL-C untuk cancel
Muncul peringatan untuk access security, pilih ok
§ Debian Software Debian Selection
Pilihan untuk memilih Paket yang akan diinstall àkosongi, pilih ok
(instalasi paket di lakukan secara manual saja)
§ Konfigurasi EXIM:
Configuring Exim v4 (exim4- Config) general typre of mail
configuration àno configuration at this time, pilih ok
Menu konfirmasi untuk Exim v4 àpilih yes
Menu untuk mempertanyakan tujuan mail (root and post mail
recipent) àketik sesuai dengan user pilih ok
Tunggu untuk reloding exim4 configuration files
§ Tamp ilan Thank you for choosing debianàok.
§ Kemudian masuk pada login à ketik root dan masukkan password
untuk root

3.3.2 INSTALASI GCC


Untuk menjalankan program bahasa c yang telah kita buat
dilinux maka dapat diperlukan langkah-langkah sebagai berikut :

1. Install compiler C (GCC) dengan mengetik :

# apt-get install gcc-3.4


# apt-get install gcc-dev
2. Install paket library yang ada didalamnya dengan mengetik :
# apt-get install libc6
# apt-get install libc6-dev

Semua paket diatas dapat kita peroleh dari ftp://mirror.eepis -its.edu/debian/

3.3.3 PEMBUATAN CAMERA SERVER


Penanganan untuk video streaming akan dikerjakan oleh sebuah paket
linux debian yaitu motion. Motion merupakan sebuah paket yang digunakan
untuk menangani transfer video streaming secara real time dari kamera
lewat jaringan internet dan mengambil gambar pada saat terdeteksi adanya
gerakan. Sedangkan aplikasi browser yang bisa digunakan banyak sekali
seperti : Internet Explorer, Nescape Navigator, Konqueror, Mozilla.
Sedangkan paket FFMPEG difungsikan untuk mengkonversikan hasil dari
gambar yang berhasil di-capture oleh motion.
Untuk melakukan koneksi, client harus mengetahui IP Address
komputer server. Selain itu, komputer client harus mengetahui pada nomor
port yang mana komputer server akan mendengarkan permintaan koneksi,
karena server diset untuk mendengarkan permintaan koneksi dari client pada
suatu nomor port tertentu. Pada Motion, port yang digunakan yaitu port
8000.
Perangkat keras yang dibutuhkan untuk mendukung camera server adalah
sebuah webcam. Webcam yang kami gunakan adalah poduk dari logitech.
Kebanyakan interface antara computer dengan webcam yang mendukung
driver ini menggunakan USB port.
Motion merupakan suatu paket untuk menangani video streaming
selain Camserv. Paket ini disediakan oleh distro linux Debian secara gratis.
Kami mengambil paket ini dari http://mirror.eepis -its.edu. Di mirror ini
tersedia berbagai paket yang support dengan Linux Debian. Penginstalannya
adalah sebagai berikut :

# apt-get install motion


dengan perintah tersebut paket motion secara otomatis akan terinstal pada
komputer, dan secara sekaligus komputer dapat kita jadikan sebagai camera
server. Dimana camera server akan melakukan broadcast lewat jaringan IP.
Untuk pengecekan apakah paket tersebut sudah terinstall atau belum, maka
kita lakukan perintah :
# dpkg –l |grep motion

Maka akan muncul :

ii motion 3.1.19-1 V4L capture program supporting

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

Selain paket tersebut dibutuhkan juga paket pendukung yaitu


ffmpeg, paket ini digunakan untuk menyimpan format file yang tersimpan
dalam hardisk dalam bentuk avi. Penginstalannya adalah sebagai berikut:

#apt-get install ffmpeg

Kemudian untuk mengkonfigurasi motion, file konfigurasinya terdapat pada


directory /etc/ motion / motion.conf. Didalam file konfigurasi ini terdapat
berbagai macam setting untuk mengkonfigurasi motion, antara lain panjang
dan lebar tampilan pada web browser, mode yang digunakan (PAL, NTSC,
dll), pencahayaan, warna dan pengaktifkan paket ffmpeg, dll.
Kemudian untuk melihat hasil dari motion adalah pada web browser.
Pada kolom address kita ketikkan http://localhost:8000, dimana 8000 adalah
port untuk motion.
Gambar 3.6
Tampilan Pada Web Browser

3.3.4.1 PENGINISIALISASIAN PORT SERIAL PADA


MIKROKONTROLLER

Pada mikrokontroler penginisialisasian port serial juga harus


dilakukan. Register yang digunakan adalah SCON (Serial Control). Dimana
8 bit data asinkron yang terdiri atas 10 bit, yaitu 1 bit start, 8 bit data, dan 1
bit stop. Dan pada mode ini kita dapat mengatur baudrate. Pada mode ini
fungsi-fungsi alternatif dari P3.0/RxD dan P3.1/TxD digunakan. P3.0
berfungsi sebagai RxD yaitu pin untuk penerimaan data serial dan P3.1
berfungsi sebagai pin untuk pengiriman data serial. Pengiriman data
dilakukan dengan menuliskan data yang akan dikirim ke register SBUF. Data
serial akan digeser keluar diawali dengan bit start, kemudian data dari bit
yang berbobot terendah (LSB) hingga bit berbobot tertinggi (MSB) dan
diakhiri dengan bit stop.

jnb RI,$
mov a,SBUF

Penerimaan data dilakukan oleh mikrokontroller dengan mendeteksi


adanya perubahan kondisi dari logika high ke logika low pada kaki RxD.
Perubahan kondisi tersebut merupakan bit start. Data yang masuk pada serial
pertama kali akan ditampung oleh bit RI (Receive Interupt Flag), bit ini akan
set pada akhir pengiriman karakter. Selanjutnya, data serial akan digeser
masuk kedalam SBUF.

3.3.4.2 PENGATURAN BAUD RATE PADA KOMUNIKASI SERIAL


Dalam komunikasi serial ini mode serial yang digunakan adalah mode
1, dimana dengan mode serial ini kita bisa mengatur baud ratenya. Baud rate
yang digunakan dalam komunikasi serial ini adalah 9600 bps. Penentuan
baud rate sangat bergantung pada crystal yang kita gunakan, crystal ini
adalah sebagai oscillator. Crystal yang digunakan adalah 11,0592 MHz. Pada
mode ini pengaturan baud rate menggunakan Timer 1. Penghitungannya
adalah sebagai berikut :

9600 =
fosc ………………………………… 1
12 x [ 256 − TH 1] x 32

9600 =
11 ,0592 MHz …………………………………..2
12 x[ 256 − TH 1 ] x 32

Dengan frekwensi oscillator sebesar 11,0592 MHz, TH1 (Timer 1)


adalah 253 atau dalam format heksa 0FDH.

3.3.4.3 PERANGKAT LUNAK DOWNLOADER PADA


MIKROKONTROLLER AT89S51

Perangkat lunak yang digunakan untuk men-mendownload-kan


program dari komputer ke mikrokontroller adalah ATMEL_isp.
Gambar 3.7
Tampilan dari mikrokontroller ATMEL_isp

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

3.3.5 INSTALLASI WEB SERVER


Pada komputer server deperlukan web server untuk mendukung
phpmyadmin. Langkah-langkah konfigurasi apache2 dengan mengetikkan
perintah-perintah berikut pada shell :
1. install apache.
Untuk melakukan installasi apache2, ketikkan perintah berikut pada
shell linux. Perintah ini berfungsi untuk menginstall paket apache2 yang
terdapat dalam debian, sedangkan baris kedua melakukan installasi paket
library apache agar dapat mendukung aplikasi yang menggunakan php4
# apt-get install apache2
# apt-get install libapache2-mod-php4

2. Restart apache
Agar konfigurasi baru tersebut berimbas maka apache perlu di restart
terlebih dahulu.

# /etc/init.d/apache restart

3.3.6 INSTALLASI PHP


Salah satu bahasa pemrograman yang digunakan dalam membangun
sistem ini adalah PHP, pemilihan bahasa pemrograman ini karena sifatnya
gratis dan handal untuk aplikasi berbasis web. Pemilihan aplikasi berbasis
web ditujukan agar tidak perlu lagi melakukan setting atau installasi khusus
pada komputer klien, sehingga memungkinkan pelanggan menggunakan
komputer pribadi untuk memanfaatkan sistem ini. PHP merupakan bahasa
pemrograman yang bersifat server side, sehingga seluruh proses dijalankan
disisi server. Hal ini sangat membantu keamanan sistem. Langkah-langkah
installasi PHP :
1. Install php versi 4
# apt-get install php4
# apt-get install php4-mysql
Baris pertama untuk menginstall paket php4, sedangkan baris kedua
merupakan modul php4 untuk bisa koneksi dengan MySQL.

2. Buat file info.php

# vim info.php

ketikkan listing program dibawah dan simpan program di direktori


/var/www/

<?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

3.3.7 INSTALLASI MySQL


Sebagai media penyimpanan data, sistem ini menggunakan database
MySQL. Pemilihan database ini karena MySQL merupakan database yang
free namun memiliki kehandalan yang sudah teruji.. Installasi MySQL :
1. Install paket MySQL

# apt-get install mysql-server-4.1


# apt-get install php4-mysql

2. Install phpmyadmin untuk memudahkan administrasi database.

# apt-get install phpmyadmin

3. Jalankan web browser ke alamat http://localhost/phpmyadmin untuk


mengecek phpMyadmin.
Gambar 3.9 tampilan phpmyadmin

3.3.8 PEMBUATAN DATABASE MYSQL


Pada proyek akhir ini kita menggunakan database untuk menyimpan
data dari tamu yang datang. Data yang disimpan adalah waktu kedatangan,
gambar dari tamu, pesan jika pemilik rumah tidak ada dirumah. Untuk
membuat database ini.
Menggunakan phpmyadmin yaitu:
1. Untuk membuka phpmyadmin kita menggunkan web browser.
Ketik

http://localhost/phpmyadmin

2. Login pertama kita mesukkan user dan password. Phpmyadmin ini user
“root” dan password “root”.

Gambar 3.10 login phpmyadmin


3. Membuat database dengan memasukkan nama database yang kita
ciptakan. Database kami bernama brankas

Gambar 3.11 form create database

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.

Gambar 3.12 tabel security

Gambar 3.13 tabel users


5. Untuk merubah database dapat kita gunakan insert, delete atau update.
3.3.9 INSTALASI SNMP
Agar data-data tentang jaringan, termasuk data-data yang
berkaitan dengan data-data traffic yang akan dimonitor, maka pada
tiaptiap elemen jaringan ( berupa router, switch, PC ) harus dilengkapi
software agen SNMP yang mendukung hal tersebut. Pada distribusi
Debian GNU/Linux terdapat paket instalasi SNMP. Untuk mengecek
apakah SNMP sudah terinstall apa belum adalah:

# dpkg –l |grep snmp

Jika paket tersebut belum terinstall, perintah untuk menginstalnya


adalah sebagai berikut:

# apt-get install snmp snmpd

Setelah diinstall, selanjutnya dilakukan proses editing pada file


/etc/snmp/snmpd.conf, tujuannya adalh menemukan source dan
komunitasnya. Nama komunitas dapat ditentukan sendiri, tetapi hanya
yang mengetahui komunitas saja yang akan dapat mengakses snmp.
Dalam hal ini dipilih readonly dan komunitasnya public.
Konfigurasinya menjadi sebagai berikut:

Kode 1 security konfigurasi.

Dapat juga ditambahkan informasi tentang nama dan lokasi semisal


sebagai berikut :

Kode 4 Konfigurasi system snmp


Setelah diedit maka simpan konfiguraasi tersebut dengan nama yang
sama, selanjutnya aktifkan agen snmp, sebagai berikut:

# /etc/init.d/snmpd start

Apabila dilakukan setiap kali pengeditan file snmpd.conf maka lakukan


restart agen snmpd. Perintah restart agen snmp adalah sebagai berikut:

# /etc/init.d/snmpd restart

Untuk uji jalannya snmp maka perintah yang digunakan adalah

#snmpwalk –v 1 –c public localhost interfaces

Jika snmp aktif maka akan muncul informasi tentang interfaces.

3.3.10. INSTALASI MRTG


Untuk melihat tampilan secara grafik yang dibutuhkan dalam
memonitoring traffik maka digunakan paket atau software MRTG.
Langkah – langkah yang dibutuhkan dalam melakukan instalasi MRTG
pertama kali adalah melakukan penginstallan mrtg :

# apt-get install mrtg

Selanjutnya mrtg butuh untuk dilakukan konfigurasi sebelum


dijalankan. Konfigurasi yang dilakukan adalah melakukan penataan file
log-log dalam snmp ke dalam sebuah file yang teratur. Perintah yang
diberikan adalah

# cfgmaker public@localhost > /etc/mrtg.cfg

Perintah ini akan melakukan penataan dengan komunitas public


pada komputer sendiri (localhost) ke dalam file /etc/mrtg.cfg. Namun
padaperintah ini hanya akan mengatur log-log untuk satu komputer saja.
Untuk pengaturan file log-log pada banyak komputer dapat dilakukan
dengan mengedit file /etc/mrtg.cfg atau dengan memberikan perintah

# cfgmaker --output /etc/mrtg.cfg public@localhost


public@10.252.108.138 public@10.252.108.1
public@10.252.108.174
Perintah diatas akan membentuk isi dari file /etc/mrtg.cfg yang
panjang berupa deskripsi dari empat computer yang berbeda. Untuk
melakukan pengindekan file log-log tersebut ke dalam tampilan website
maka perlu diberikan perintah

# indexmaker /etc/mrtg.cfg > var/www/mrtg/index.html

Setelah dilakukan penindekan ini maka untuk melakukan running


terhadap mrtg menjadi sebuah tampilan yang dapat update diberikan
perintah di bawah ini :

# mrtg /etc/mrtg

Pada saat pertama kali dijalankan akan muncul pesan error seperti ini:

Kode 2 Pesan Error pada MRTG

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 :

http://localhost/mrtg atau http://<ip yang diinstall


snmp + konfigurasinya>/mrtg

Supaya program menghasilkan gambar yang up to date dan


bagus maka MRTG harus dijalankan tiap 5 menit sekali. Untuk
memudahkan, maka digunakan program crontab, dengan perintah :

# crontab –e

Lalu isikan dengan kalimat sebagian berikut :

*/5 * * * * /usr/bin/mrtg > var/www/mrtg/index.html


3.4. FLOWCHART DAN ALGORITMA PROGRAM
Pada bagian ini akan dibahas flowchart dan algoritma program,
diantaranya adalah sistem secara keseluruhan, program assembly pada
microcontroller dan program motion pada webcam. Adapun flowchart dan
algoritma dari program tersebut adalah sebagai berikut :

3.4.1. Keseluruhan Sistem

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

Perangkat keras untuk system monitoring ruangan tediri dari :


webcam, Mikrokontroller AT89S51 sebagai interface dengan computer
server, power supply, alarm (bel DC) dan dialogic card. Sistem yang telah
dibuat terlihat pada gambar 3.14 dan 3.15

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.

4.2. PENGUJIAN HARDWARE


Pengujian dilakukan dengan cara pengecekan dan pengukuran jalur
rangkaian serta menguji komponen penunjangnya secara keseluruhan.
Pengujian ini dilakukan untuk mengetahui peralatan yang ada pada hardware
yang dibuat (baik buruknya kondisi alat dan kinerjanya).

4.2.1 Pengujian Minimum Sistem Mikrokontroller AT89S51


Pengujian Minimum Sistem Mikrokontroller ini dilakukan dengan
memberikan program pada IC AT89S51 yang nantinya hasil dari program
tersebut akan ditamp ilkan pada nyala led yang terhubung pada kaki port
AT89S51. Pengujian ini dilakukan pada port 0 dan port 2 karena pada Tugas
Akhir ini menggunakan port 0 sebagai input dan port 2 sebagai output.

4.2.1.1 Pengujian Port 2 sebagai output


Pengujian ini dilakukan dengan cara memberikan program assembly
pada mikrokontroller AT89S51 dengan Port 2 sebagai output yang nantinya
hasil dari program tersebut ditampilkan dalam nyala led. Untuk
pengujiannya, membuat rangkaian dari led kemudian menghubungkan led ke
port 2 (P2.0– P2.7) dari modul AT89S51 seperti gambar dibawah ini,

Gambar 4.1
Rangkaian led yang terhubung port 2 pada AT89S51

Setelah AT89S51 terhubung dengan rangkaian led, maka langkah


selanjutnya adalah memberikan program pada AT89S51 dengan listing
program seperti dibawah ini :

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

Jika dijalankan, program di atas akan membuat Output LED Display


menjadi: padam-padam-padam-padam- padam - padam - padam -nyala
(berurutan mulai dari bit 7 ke bit 0).

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

Program diatas adalah contoh program menggerakkan led di port 2


mulai dari bit 0 sampai ke 7 port yang aktif ditandai dengan nilai 0 (“aktif
low”), yang nantinya nyala led akan digeser kekiri sebanyak satu bit secara
terus-menerus.

4.2.1.2 Pengujian Port 1 sebagai input dan Port 2 sebagai output


Pengujian dilakukan dengan menghubungkan Port 0 dengan switch,
yang nantinya switch tersebut digunakan sebagai input untuk menyalakan led
yang terhubung pada Port 2. Untuk melakukan pengujian ini sebelumnya
pada kaki port 0 bit 0 dipasang dahulu limited switch yang nantinya
digunakan sebagai input. Listing program untuk menjalankan sistem tersebut
adalah sebagai berikut:
Mov p2,#0FFH
Mati: mov A,p0
cjne A,#0FEh,Mati
jmp start
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

Jika dijalankan, program di atas akan membuat output LED Display


menjadi padam semua apabila tidak ada penekanan switch pada kaki port 0
bit 0.

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

Program diatas akan menyalakan led pada port 2 dan selanjutnya


menggerakkan led tersebut mulai dari bit 0 sampai ke 7, port yang aktif
ditandai dengan nilai 0 (“aktif low”), yang nantinya nyala led akan digeser
kekiri sebanyak satu bit secara terus-menerus setelah adanya penekanan
switch di kaki Port 0 bit 0.

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.

4.2.2 Pengujian Komunikasi Serial


Pengujian komunikasi serial dilakukan dalam dua operasi sistem
yaitu memakai window dan linux debian. Pengujian memakai window
dilakukan dengan cara menggunakan fasilitas dari hyperterminal yang
nantinya data dari mikrokontroller akan ditampilkan dalam hyperterminal.
Gambar 4.10
Hyperterminal sebelum mikrokontroller mengirimkan data

Gambar 4.11
Hyperterminal sesudah mikrokontroller mengirimkan data

Sedangkan pengujian pada sistim operasi linux debian


menggunakan GtkTerm. Paket ini fungsinya sama dengan Hyperterminal
yang ada di window, dalam menggunakan GtkTerm harus diatur dahulu
besarnya baudrate, port yang akan digunakan, dan juga banyaknya data yang
akan dikirim.

Gambar 4.12
GtkTerm sebelum mikrokontroller mengirimkan data
Gambar 4.13
GtkTerm sesudah mikrokontroller mengirimkan data

Dari pengujian tersebut dapat diketahui bahwa komunikasi serial


berhasil dijalankan dan hasil ini menunjukkan bahwa perangkat keras yang
dibuat tidak mengalami kerusakan atau kesalahan. Begitu pula program
assembly yang di-download ke dalam mikrokontroller. Jadi program dan
perangkat keras dalam komunikasi serial tidak ada masalah.

4.3. PENGUJIAN SOFTWARE

4.3.1 Pengujian proses capture pada program motion


Pengujian proses capture dari motion dalam mendeteksi gerakan
dilakukan dengan cara merubah besarnya threshold dalam file konfigurasi
motion. Selain faktor threshold, faktor jarak dan gerakan juga berpengaruh
terhadap proses pendeteksian adanya gerakan yang nantinya digunakan untuk
melakukan proses capture.
Dibawah ini adalah data hasil pengamatan banyaknya gambar yang
berhasil di-capture oleh motion dalam berbagai kondisi yang meliputi faktor
jarak objek terhadap kamera dan faktor waktu pengamatan.
Tabel 4.1
Hasil pengamatan jumlah gambar pada jarak 50cm selama 5 detik

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

Dari data hasil percobaan dapat diketahui bahwa besarnya threshold


dan jarak objek terhadap kamera sangat berpengaruh terhadap banyaknya
gambar yang dapat di-capture oleh webcam. Data diatas menunjukkan
bahwa semakin besar threshold maka kemampuan motion dalam mendeteksi
gerakan dan mengambil gambar menjadi kurang akurat. Hal ini dikarenakan
setiap gerakan akan ditangkap webcam dan informasi yang diberikan kepada
motion berupa besarnya nilai threshold. Disini gerakan yang tidak terlalu
aktif akan diberikan nilai threshold yang kecil. Jadi jika gerakan yang ada
mempunyai threshold yang rendah daripada nilai threshold pada motion
maka gerakan tersebut akan diabaikan dan dianggap tidak terjadi gerakan
pada objek. Begitu pula sebaliknya, jika nilai threshold objek yang bergerak
lebih besar daripada nilai threshold pada motion, maka objek tersebut akan
di-capture oleh webcam dan hasilnya akan disimpan dalam database
berbentuk file .jpeg.
Webcam Logitech ini mampu menghasilkan gambar sebanyak 30
gambar setiap 1 detik karena webcam ini mempunyai fasilitas video preview
dan recording mencapai 30 fps. Hanya saja, hasil capture yang didapat pada
pengujian ini tidak sampai 30 gambar yang dihasilkan tiap 1 detik karena
webcam disini difungsikan pada saat adanya gerakan pada objek dan
banyaknya gambar yang dihasilkan dipengaruhi oleh besarnya threshold pada
program motion.Dalam sistem ini,threshold yang digunakan sebesar 1500
sehingga kepekaan webcam dalam mendeteksi gerakan kurang begitu peka
daripada threshold yang diberikan sebesar 500. Gambar yang dihasilkan
hanya sekitar 4 gambar tiap 1 detik pada jarak 50 cm, sedangkan pada jarak
400cm dihasilkan gambar sebanyak 2 gambar tiap 1 detik. Jadi dapat
disimpulkan bahwa selain gerakan, jarak objek dari webcam juga
berpengaruh terhadap kepekaan webcam dalam mendeteksi gerakan.

4.3.2. Pengujian Traffic Jaringan Menggunakan MRTG


Pengujian Traffic Jaringan ini diharapkan mampu menunjukkan
secara grafik trafik dari jaringan yang kita gunakan. Pengujian ini dilakukan
dengan dua cara, yaitu melakukan pengujian pada sisi client dan pengujian
pada sisi server. Dengan membandingkan hasil dari tampilan MRTG ini,
maka akan diketahui besarnya bandwidth yang digunakan dalam pengiriman
video streaming yang diakses dari website. Pengujian dengan menggunakan
MRTG dilakukan setiap 5 menit selama 10 kali pengamatan dengan tujuan
pengamatan ini diharapkan mampu untuk memperoleh data yang akurat
dalam mengetahui besarnya bandwidth yang diperlukan dalam pengiriman
video streaming dari sisi server ke sisi client. Waktu pengamatan dilakukan
sekitar pukul 05.00 WIB dikarenakan untuk menghindari adanya komputer
client yang lain mengakses komputer server yang nantinya akan berdampak
pada besarnya nilai bandwidth yang ditunjukkan oleh MRTG.

4.3.2.1 Pengujian pada sisi server

Gambar 4.14. Gambar Traffik Jaringan di Komputer Server


Tabel 4.6
Pengujian traffic bandwidth pada sisi server

Waktu input output


pengamatan (KByte/s) (KByte/s)
5:30:00 WIB 0,931 13,8
5:35:00 WIB 0,911 13,8
5:40:00 WIB 0,885 13,8
5:45:00 WIB 0,885 13,8
5:50:00 WIB 0,885 13,9
5:55:00 WIB 0,829 13,8
6:00:00 WIB 0,837 13,9
6:05:00 WIB 0,794 13,8
6:10:00 WIB 0,846 13,8
6:15:00 WIB 0,965 13,8

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

Gambar 4.16. Gambar Traffik Jaringan di Komputer client

Tabel 4.7
Pengujian traffic bandwidth pada sisi client

Waktu input output


pengamatan (KByte/s) (KByte/s)
5:30:00 WIB 14,2 0,672
5:35:00 WIB 14,1 0,683
5:40:00 WIB 14 0,617
5:45:00 WIB 13,7 0,683
5:50:00 WIB 13,8 0,683
5:55:00 WIB 14 0,674
6:00:00 WIB 13,9 0,671
6:05:00 WIB 14 0,675
6:10:00 WIB 13,9 0,733
6:15:00 WIB 14 0,722
16

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

Dari hasil di atas tampak bahwa pada server,trafik output akan


sangat besar bila dibandingkan dengan input Hal ini terjadi karena server
memenuhi permintaan client akan video streaming. Sebaliknya di sisi client
trafik input lebih besar dari output karena client menerima video streaming
dari server. Hal ini dikarenakan pada sisi client mengambil data berupa video
streaming pada sisi server. Pengujian ini diharapkan untuk mendapatkan
besarnya nilai bandwidth yang kecil dalam pengiriman video streaming tanpa
mengurangi hasil atau kualitas dari video streaming tersebut.
Dari data hasil pengamatan traffic yang menggunakan MRTG dapat
diketahui bahwa pengiriman video streaming pada proyek akhir ini
memerlukan bandwidth sekitar 14 Kbyte/s. Bandwidth yang diperlukan jauh
lebih kecil daripada bandwith yang diperlukan oleh video streaming standar
yang memerlukan bandwidth sekitar 9Mbyte/s. Hal ini dikarenakan video
streaming yang ditampilkan oleh program motion sebelumnya sudah
dikompresi sehingga besarnya kapasitas video tersebut jauh lebih kecil
daripada kapasitas video standart. Selain itu, ukuran video yang terkirim
sebesar 176 x 144 pixel sehingga tidak memerlukan bandwidth yang besar
dalam pengirimannya.
4.3.3. Pengujian Website

Website ini dibuat agar manager atau pemilik brankas dapat


mengetahui secara langsung kondisi dari brankas tersebut. Dengan adanya
website ini, pemilik dapat mengakses dimana dan kapan saja sehingga dapat
memudahkan pemilik brankas untuk memonitor kondisi ruangan. Website ini
dapat diakses pada alamat http://localhost/websiteq/log1. Bentuk tampilan
awal adalah sebagai berikut

Gambar 4.18. Tampilan Login

Dari tampilan awal website diatas,user diminta untuk memasukkan


nama dan password. Dengan adanya proses autentifikasi ini menyebabkan
hanya user yang mempunyai account saja yang dapat mengakses web ini,
sehingga orang lain yang tidak mempunyai account tidak akan mendapat hak
untuk mengakses web tersebut. Bila user memasukkan nama dan password
yang benar maka tampilan selanjutnya adalah sebagai berikut:
Gambar 4.19. Tampilan home

Di halaman utama disajikan beberapa menu yang dapat


dimanfaatkan oleh user yaitu melihat video, melihat gambar hasil capture
dan juga add_user. Menu add_user digunakan untuk menambahkan jumlah
user yang nantinya diijinkan untuk dapat mengakses website ini. Dalam
menu ini, pemilik brankas dapat membuat user baru dengan password yang
diinginkan. Penggunaan user dan password ini nantinya dapat digunakan
pada saat login di website ini.

Gambar 4.20. Tampilan hasil pengambilan gambar


Gambar 4.21. Tampilan pengiriman video streaming

Gambar 4.22. Tampilan Website pada menu add_user


BAB V
PENUTUP

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:

1.Dengan menggunakan serial programming, AT89S51 mampu


memberikan informasi kepada PC dengan mengirim karakter “A” yang
nantinya karakter tersebut menjalankan program dialogic card. Begitu
pula sebaliknya, PC juga mampu mengirim karakter kepada
mikrokontroller untuk mematikan alarm dengan menggunakan serial
programming ini.
2. Module AT89S51 juga dapat dikontrol melalui jalur telepon yang
nantinya mampu untuk mematikan alarm dari jarak jauh yang mana
hanya user yang memiliki account dan sudah memiliki password untuk
login dalam sistem keamanan ini.
3.Hasil yang didapatkan dari paket motion berupa file gambar (.jpeg)
dan mampu untuk mengkonversikan gambar-gambar tersebut menjadi
sebuah file movie (.AVI)
4.Besarnya Threshold pada motion akan mempengaruhi banyaknya
gambar yang akan ditangkap oleh webcam, semakin besar threshold
pada program motion maka gambar yang tertangkap akan semakin
sedikit.
5.Proyek Akhir ini menggunakan threshold sebesar 1500 sehingga
gambar yang dihasilkan lebih sedikit daripada menggunakan threshold
sebesar 500. Gambar yang dihasilkan sekitar 2-4 gambar tiap detik
sesuai jarak objek terhadap webcam.
6.Dengan menggunakan MRTG, dapat diketahui besarnya bandwidth
yang diperlukan dalam pengiriman video streaming dalam proyek
akhir ini sebesar 14 Kbyte/s
5.2. SARAN
Karena adanya kelemahan pada sistem pengamanan brankas pada
proyek akhir ini ini, maka diperlukan pengembangan lebih lanjut pada waktu
yang akan datang. Dan saran-saran untuk poyek akhir ini adalah :
1. Diharapkan sistem keamanan brankas ini menggunakan sensor yang lebih
baik lagi seperti penggunakan sensor infrared dalam memeriksa kondisi
pintu brankas.
2. Sistem keamanan brankas menggunakan keypad sebagai tombol kunci
pembuka pintu brankas yang tersambung pada mikrokontroller
3. Penggunaan webcam logitech quickcam pro 4000 kurang optimal pada
Operating System Linux Debian 2.4.27.2.686 versi stable karena hasil
capture maupun video streaming hanya mampu digunakan pada ukuran
176 x 144 pixel.

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

2. LISTING PROGRAM KOMUNIKASI SERIAL

#include <stdio.h> /* Standard input/output definitions */


#include <string.h> /* String function definitions */
#include <unistd.h> /* UNIX standard function definitions */
#include <fcntl.h> /* File control definitions */
#include <errno.h> /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */

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);
}

Untuk menulis data ke mikrokontroller:

n = write(fd, "ATZ\r", 4);


if (n < 0)
puts("write() of 4 bytes failed!\n");
3. Program untuk pengetesan webcam
#include<stdio.h>
#include<unistd.h>

int main()
{
system("motion ");
sleep(3);
system("./check1 ");
sleep(3);
return 0;
}

4. Program untuk mengecek webcam


#include <stdio.h> /* Standard input/output definitions */
#include <string.h> /* String function definitions */
#include <unistd.h> /* UNIX standard function definitions */
#include <fcntl.h> /* File control definitions */
#include <errno.h> /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */

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);
}
int main()
{
int mainfd=0;
char chout;
struct termios options;
mainfd = open_port();

fcntl(mainfd, F_SETFL, FNDELAY);


tcgetattr(mainfd, &options) ;
cfsetispeed(&options, B9600); /* Set the baud rates to 9600 */
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);

int n= write(mainfd, "Z\r", 4);


if (n < 0)
puts("write() of 4 bytes failed!\n");
system("./panggil_user");
close(mainfd);
return 0;
}
5. Program untuk mematikan alarm pada check_webcam
#include<stdio.h>
#include<unistd.h>

int main()
{
system("./webcam1");
system("./webcam2 ");
return 0;
}

6. Program didalam matikan alarm melalui telepon


#include<stdio.h>
#include<stdlib.h>
#include<srllib.h>
#include<dxxxlib.h>
#include<time.h>
#include<string.h>
#include <unistd.h>
#include <errno.h>
#include <termios.h>
#define MAXDIGIT 128
DX_CAP capp;
DV_TPT tpt, getdigit[3];
DV_DIGIT digitp;

char tekanDigit(int chdev);


void status(int dev, int state);
char* integerToString(int value,char *valueStr,int size);

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;

if (dx_playwav(hk_state, "webcam.WAV" , &tpt,EV_SYNC) == -1)


{
printf("Error WAV %s\n", ATDV_ERRMSGP(hk_state));
exit(4);
}
printf("------------WAV success\n");

jump: dx_playwav(hk_state, "menu_alarm.WAV", &tpt, EV_SYNC);


printf("apakah yang ingin anda lakukan 1.Mematikan Alarm\n
2.Tidak Mematikan Alarm\n");
if(tekanDigit(hk_state)=='1'){
printf("anda ingin mematikan alarm\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);
int n= write(mainfd, "S\r", 4);
if (n < 0)
puts("write() of 4 bytes failed!\n");
close(mainfd);
dx_playwav(hk_state,"alarm_off.WAV", &tpt,
EV_SYNC);
}
else if(tekanDigit(hk_state)=='2'){
printf("Anda tidak mematikan alarm\n");
dx_playwav(hk_state, "alarm_on.WAV", &tpt,EV_SYNC);
}
else{
printf("Anda salah menekan nomor\n");
dx_playwav(hk_state, "digit_salah.WAV", &tpt,
EV_SYNC);
goto jump;
}
printf("End Conversation\n");
printf("Say Good Bye...........WAV state\n");
dx_playwav(hk_state, "thanks.WAV", &tpt, EV_SYNC);
status(hk_state,0);
sleep(3);
dx_close(hk_state);
exit(0);
}
}
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);
}
}
}
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);
}
7. Program pada system standby
#include<stdio.h>
#include<stdlib.h>
#include<srllib.h>
#include<dxxxlib.h>
#include <mysql/mysql.h>
#include<string.h>
#include<unistd.h>
#include <fcntl.h> /* File control definitions */
#include <errno.h> /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */

#define MYSQL_HOST "localhost"


#define MYSQL_DB "brankas"
#define MYSQL_LOGIN "root"
#define MYSQL_PASSWD "root"

DX_CAP capp;
DV_TPT tpt, getdigit[3];
DV_DIGIT digitp;

char tekanDigit(int chdev);


int cekNumber(char digit);
int pasword(int chdev,int paswordAsli);
int hasilPasword1(int chdev);

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

dx_playwav(chdev,"brankas_close.WAV", &tpt, EV_SYNC);


goto akhir;
}
printf("terbaca setelah kebaca A : %c\n", chout);
dx_playwav(chdev, "brankas_open.WAV", &tpt, EV_SYNC);
jump1:
dx_playwav(chdev, "menu_alarm.WAV", &tpt, EV_SYNC);
printf("apakah anda ingin mematikan alarm\n jika ya tekan 1\n jika tidak
tekan 2\n");
if(tekanDigit(chdev)=='1'){
int n= write(mainfd, "S\r", 4);
if (n < 0)
puts("write() of 4 bytes failed!\n");
dx_playwav(chdev, "alarm_off.WAV", &tpt, EV_SYNC);
close(mainfd);
goto akhir;
}
else if(tekanDigit(chdev)=='2'){
printf("anda tidak ingin mematikan alarm\n");
dx_playwav(chdev, "alarm_on.WAV", &tpt, EV_SYNC);
goto akhir;
}
else{
printf("Anda salah menekan digit\n");
dx_playwav(chdev, "digit_salah.WAV", &tpt, EV_SYNC);
goto jump1;
}
}
else if(tekanDigit(chdev)=='2'){
printf("Masukkan 5 digit password baru\n");
dx_playwav(chdev, "password.WAV", &tpt,EV_SYNC);
hasilPasword2=hasilPasword1(chdev);
printf("pasword anda yang baru %d\n",hasilPasword2);
sprintf(paswordBaru,"UPDATE autentifikasi SET password ='%d'
WHERE user ='%s'",hasilPasword2,user);

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;

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 cekNumber(char digit){
int number=0;
if(digit=='1')
number=1;
else if(digit=='2')
number=2;
else if(digit=='3')
number=3;
else if(digit=='4')
number=4;
else if(digit=='5')
number=5;
else if(digit=='6')
number=6;
else if(digit=='7')
number=7;
else if(digit=='8')
number=8;
else if(digit=='9')
number=9;
else if(digit=='0')
number=0;
else{
number==100;
return(number);
}
return(number);
}
int pasword(int chdev, int paswordAsli){
dx_playwav(chdev,"password.WAV",&tpt,EV_SYNC);

// 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);
}

8. Program untuk mengecek brankas


#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <termios.h>

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();

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'){
break;
}
chout=0;
usleep(200000);
}
system("./dialogic");
close(mainfd);
}

9.Program pada saat brankas terbuka

#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;

char tekanDigit(int chdev);


void status(int dev, int state);
char* integerToString(int value,char *valueStr,int size);

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");

printf("nomorTelepon[0] : %s\n", nomorTelepon[0]);


printf("nomorTelepon[1] : %s\n", nomorTelepon[1]);
printf("nomorTelepon[2] : %s\n", nomorTelepon[2]);
printf("nomorTelepon[3] : %s\n", nomorTelepon[3]);
printf("Open Device\n");
if ((hk_state = dx_open(chdev,0)) == -1 ) {
printf("device %s error\n", chdev);
exit(0);
}
clientNumber = 0;
while(semuaSudahDihubungi(kondisi,4) == FALSE){
if(kondisi[clientNumber] == BELUM_DIHUBUNGI){
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", nomorTelepon[clientNumber]);
dx_clrcap(&capp);
capp.ca_nbrdna=2;
if ((cares=dx_dial(hk_state, nomorTelepon[clientNumber],
&capp,DX_CALLP|EV_SYNC)) == -1 )
{
printf("Error dial");
exit(0);
}
kondisi_1 = telepon(nomorTelepon[clientNumber],cares,hk_state);
printf("%d\n",kondisi_1);
if(kondisi_1 == 1){
printf("..............dialing success\n");
printf("..........WAV state\n");
tpt.tp_type = IO_EOT;
tpt.tp_termno = DX_MAXDTMF;
tpt.tp_length = 1;
tpt.tp_flags = TF_MAXDTMF;
if (dx_playwav(hk_state, "intro.WAV" , &tpt,EV_SYNC) == -1) {
printf("Error WAV %s\n", ATDV_ERRMSGP(hk_state));
exit(4);
}
printf("------------WAV success\n");
struct tm *current_date;
time_t seconds;
int tanggal, bulan, tahun;
char *tgl;
time(&seconds);
current_date = localtime(&seconds);
tanggal=current_date->tm_mday;
bulan=current_date->tm_mon+1;
if (current_date->tm_year==106)
tahun=2006;
char namaHari[5];
char *timeSaatIni;
timeSaatIni = ctime(&seconds);
printf("waktu saat ini menunjukkan : \n%s",timeSaatIni);
sscanf(timeSaatIni,"%s",namaHari);
printf("Hari ini adalah %s\n",namaHari);
strcat(namaHari,".WAV");
printf("%s\n",namaHari);
dx_playwav(hk_state, namaHari, &tpt, EV_SYNC);
dx_playwav(hk_state, "tgl.WAV", &tpt, EV_SYNC);
printf("Tanggal sekarang %d\n", tanggal);
integerToString(tanggal,hasilKonversi,MAXDIGIT);
printf("%s\n",hasilKonversi);
strcat(hasilKonversi,".WAV");
printf("%s\n",hasilKonversi);
dx_playwav(hk_state, hasilKonversi, &tpt, EV_SYNC);

printf("Bulan sekarang %d\n", bulan);


bulan=bulan+100;
integerToString(bulan,hasilKonversi,MAXDIGIT);
printf("%s\n",hasilKonversi);
strcat(hasilKonversi,".WAV");
printf("%s\n",hasilKonversi);
dx_playwav(hk_state, hasilKonversi, &tpt, EV_SYNC);
printf("Tahun sekarang %d\n", tahun);
integerToString(tahun,hasilKonversi,MAXDIGIT);
printf("%s\n",hasilKonversi);
strcat(hasilKonversi,".WAV");
printf("%s\n",hasilKonversi);
dx_playwav(hk_state, hasilKonversi, &tpt, EV_SYNC);
dx_playwav(hk_state, "jam.WAV", &tpt, EV_SYNC);
printf("Jam : %02d\n", current_date->tm_hour);
integerToString(current_date->tm_hour,hasilKonversi,MAXDIGIT);
printf("%s\n",hasilKonversi);
strcat(hasilKonversi,".WAV");
printf("%s\n",hasilKonversi);
dx_playwav(hk_state, hasilKonversi, &tpt, EV_SYNC);

printf("Menit : %02d\n", current_date->tm_min);


integerToString(current_date->tm_min,hasilKonversi,MAXDIGIT);
printf("%s\n",hasilKonversi);
strcat(hasilKonversi,".WAV");
printf("%s\n",hasilKonversi);
dx_playwav(hk_state, hasilKonversi, &tpt, EV_SYNC);
kondisi[clientNumber] = SUDAH_DIHUBUNGI;
jump1: dx_playwav(hk_state, "menu_alarm.WAV", &tpt, EV_SYNC);
printf("apakah yang ingin anda lakukan 1.Mematikan Alarm\n
2.Tidak Mematikan Alarm\n");
if(tekanDigit(hk_state)=='1'){
printf("anda ingin mematikan alarm\n");
int mainfd=0;
char chout;
struct termios options;
mainfd = open_port();
fcntl(mainfd, F_SETFL, FNDELAY);
tcgetattr(mainfd, &options);
fsetispeed(&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);
int n= write(mainfd, "S\r", 4);
if (n < 0)
puts("write() of 4 bytes failed!\n");
close(mainfd);
dx_playwav(hk_state,"alarm_off.WAV", &tpt, EV_SYNC);
}
else if(tekanDigit(hk_state)=='2'){
printf("Anda tidak mematikan alarm\n");
dx_playwav(hk_state, "alarm_on.WAV", &tpt,EV_SYNC);
}
else{
printf("Anda salah menekan nomor\n");
dx_playwav(hk_state, "digit_salah.WAV", &tpt, EV_SYNC);
goto jump1;}
printf("End Conversation\n");
printf("Say Good Bye...........WAV state\n");
dx_playwav(hk_state, "thanks.WAV", &tpt, EV_SYNC);
status(hk_state,0);
sleep(3);
printf("kondisi ddlm if adl %d\n", kondisi[clientNumber]);
}
//printf("kondisi stlh call success adl %d\n", kondisi[clientNumber]);
else{
printf("panggilan tidak berhasil\n");
//kondisi_1=telepon(nomorTelepon[clientNumber],cares,hk_state);
kondisi[clientNumber] = BELUM_DIHUBUNGI;
status(hk_state,0);
dx_close(hk_state);
sleep(3);
printf("kondisi didlm else adl %d\n", kondisi[clientNumber]);
}
//clientNumber = (clientNumber+1)%4;
printf("clientNumber %d\n", clientNumber);
printf("kondisi setelah call not success adl %d\n", kondisi[clientNumber]);
}
clientNumber = (clientNumber+1)%4;
printf("kondisi stelh keluar dari if awal %d\n", kondisi[clientNumber]);
printf("clientNumber %d\n", clientNumber);
}
//exit(0);
status(hk_state,0);
dx_close(hk_state);
sleep(3);
return 0;

}
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

Nama : VANDRY BINTORO SAPUTRO


TTL : Madiun/3 Mei 1985
Alamat : Jl.A. Yani 256 RT11/02 Ds.Nglandung
Kec.Geger ,Kab.Madiun , 63171
Telp : Home : (0351) 367547
HP : 085648029855
Email : van_mooz@plasa.com
Hobby : Maen bola,nonton,maen game ama mbaca
Motto : Hidup hanya untuk mempersembahkan
yang terbaik, berbakti bagi bangsa
dan bermakna bagi akhirat

RIWAYAT PENDIDIKAN

Tahun Pendidikan

1991 – 1997 SDN 1 Nglandung


1997 – 2000 SLTPN 1 Geger
2000 – 2003 SMUN 1 Geger
2003 – 2006 Politeknik Elektronika Negeri
Surabaya-ITS

Vous aimerez peut-être aussi