1 1
Smart Home Security
Smart Home Security
berbasis Arduino
berbasis Arduino
Mega 2560
Mega 2560
Smart home security adalah system pengamanan rumah berbasis Arduino Mega 2560,
Smart home security adalah system pengamanan rumah berbasis Arduino Mega 2560,
system pengamanan ini dikontrol dan terkoneksi ke sebuah aplikasi yang dapat
system pengamanan ini dikontrol dan terkoneksi ke sebuah aplikasi yang dapat
mengontrol aktifitas sensor, konfigurasi sensor, dan lain-lain. System ini memiliki
mengontrol aktifitas sensor, konfigurasi sensor, dan lain-lain. System ini memiliki
beberapa system pengamanan, yaitu pengamanan di pintu dan pengamanan di
beberapa system pengamanan, yaitu pengamanan di pintu dan pengamanan di
ruangan. Adapun pengamanan di pintu mencakupi : membuka pintu menggunakan
ruangan. Adapun pengamanan di pintu mencakupi : membuka pintu menggunakan
deteksi wajah melalui aplikasi, membuka pintu menggunakan keypad dan ketukan, dan
deteksi wajah melalui aplikasi, membuka pintu menggunakan keypad dan ketukan, dan
system pengamanan menggunakan laser apabila pintu dirusakkan atau di dobrak pada
system pengamanan menggunakan laser apabila pintu dirusakkan atau di dobrak pada
saat pintu dalam keadaan terkunci. Untuk pengamanan di ruangan mencakupi
saat pintu dalam keadaan terkunci. Untuk pengamanan di ruangan mencakupi
pemantau suhu dan pemantau kadar gas/asap di udara, merekam gambar/video, dan
pemantau suhu dan pemantau kadar gas/asap di udara, merekam gambar/video, dan
mendeteksi apabila ada objek yang bergerak di sekitar camera dan mengirim gambar
mendeteksi apabila ada objek yang bergerak di sekitar camera dan mengirim gambar
tersebut ke pengguna.
tersebut ke pengguna.
2012
2012
Muammar Khadafi & Amrullah
DAFTAR ISI
DAFTAR ISI
DAFTAR
DAFTAR ISI ISI ... ii
BAB
BAB I I ... .... 11 PENDAHULUAN
PENDAHULUAN ... ... 11 1.1.
1.1. Latar Latar Belakang Belakang ... ... 11 1.2. 1.2. Sasaran Sasaran ... ... 22 1.3. 1.3. Tujuan...Tujuan... ... 22 1.4. 1.4. Pengenalan Pengenalan ... ... 22 BAB BAB II ...II ... ... 55 PEMBAHASAN PEMBAHASAN ... ... 55 2.1.
2.1. Perlengkapan Perlengkapan dan dan Peralatan yang Peralatan yang digunakan digunakan ... ... 55 2.2.
2.2. Software Software yang yang digunakan digunakan ... ... 88 2.3.
2.3. Pembuatan Pembuatan ... ... 88 2.4.
2.4. Pemograman Pemograman ... ... 1717 2.5.
2.5. Perintah-perintah Arduino dan aplikasi...Perintah-perintah Arduino dan aplikasi... ... 3939 2.6.
2.6. Pembuatan Pembuatan aplikasi aplikasi Smart-home Smart-home Security Security ... ... 4242 BAB
BAB III III ... 45... 45 PENUTUP
PENUTUP ... ... 4545 3.1.
3.1. Kesimpulan...Kesimpulan... ... 4545 Daftar
Daftar Pustaka Pustaka ... 47... 47 APPENDICES
APPENDICES ... ... 4949 Arduino
DAFTAR ISI
DAFTAR ISI
DAFTAR
DAFTAR ISI ISI ... ii
BAB
BAB I I ... .... 11 PENDAHULUAN
PENDAHULUAN ... ... 11 1.1.
1.1. Latar Latar Belakang Belakang ... ... 11 1.2. 1.2. Sasaran Sasaran ... ... 22 1.3. 1.3. Tujuan...Tujuan... ... 22 1.4. 1.4. Pengenalan Pengenalan ... ... 22 BAB BAB II ...II ... ... 55 PEMBAHASAN PEMBAHASAN ... ... 55 2.1.
2.1. Perlengkapan Perlengkapan dan dan Peralatan yang Peralatan yang digunakan digunakan ... ... 55 2.2.
2.2. Software Software yang yang digunakan digunakan ... ... 88 2.3.
2.3. Pembuatan Pembuatan ... ... 88 2.4.
2.4. Pemograman Pemograman ... ... 1717 2.5.
2.5. Perintah-perintah Arduino dan aplikasi...Perintah-perintah Arduino dan aplikasi... ... 3939 2.6.
2.6. Pembuatan Pembuatan aplikasi aplikasi Smart-home Smart-home Security Security ... ... 4242 BAB
BAB III III ... 45... 45 PENUTUP
PENUTUP ... ... 4545 3.1.
3.1. Kesimpulan...Kesimpulan... ... 4545 Daftar
Daftar Pustaka Pustaka ... 47... 47 APPENDICES
APPENDICES ... ... 4949 Arduino
BAB I
BAB I
PENDAHULUAN
PENDAHULUAN
1.1.
1.1. Latar BelakangLatar Belakang
Memasuki era saat ini banyak hal yang dilakukan dengan bantuan alat-alat yang Memasuki era saat ini banyak hal yang dilakukan dengan bantuan alat-alat yang canggih dan berkembang terus-menerus dengan baik. Perkembangan terjadi dalam berbagai canggih dan berkembang terus-menerus dengan baik. Perkembangan terjadi dalam berbagai aspek termasuk kehidupan, informasi transportasi, arsitektur kesehatan, dan banyak lainnya. aspek termasuk kehidupan, informasi transportasi, arsitektur kesehatan, dan banyak lainnya. Peralatan-peralatan canggih pada saat ini mengintegrasikan mikroprosessor atau Peralatan-peralatan canggih pada saat ini mengintegrasikan mikroprosessor atau mikrokontroller dengan bermacam-macam alat yang di kendalikan olehnya. Alat yang paling mikrokontroller dengan bermacam-macam alat yang di kendalikan olehnya. Alat yang paling kongkrit yang dapat kita lihat pada zaman sekarang ini adalah komputer. Hampir semua kongkrit yang dapat kita lihat pada zaman sekarang ini adalah komputer. Hampir semua pekerjaan-pekerjaan
pekerjaan-pekerjaan dalam dalam berbagai berbagai aspek aspek dikerjakan dikerjakan oleh oleh komputer komputer yang yang didalamnyadidalamnya mengontrol hampis semua jenis-jenis alat-alat produksi dalam perusahaan. Komputer adalah mengontrol hampis semua jenis-jenis alat-alat produksi dalam perusahaan. Komputer adalah penggabungan
penggabungan system system dan dan perangkat-perangkat perangkat-perangkat lainnya lainnya yang yang dikendalikan dikendalikan oleh oleh satu satu pusatpusat system pengendali yaitu mikroprosessor atau sering disebut prosessor.
system pengendali yaitu mikroprosessor atau sering disebut prosessor.
Namun
Namun hampir hampir semua semua peralatan-peralatan peralatan-peralatan elektronik, elektronik, seperti seperti perangkat perangkat automasi,automasi, sistem control mobil, perangkat medis, remote control, peralatan listrik, dan mainan sistem control mobil, perangkat medis, remote control, peralatan listrik, dan mainan menggunakan mikrokontroller sebagai pengendalikanya. Mikrokontroller lebih mudah dan menggunakan mikrokontroller sebagai pengendalikanya. Mikrokontroller lebih mudah dan lebih murah dalam implementasinya. Mikrokontroller adalah versi mini dan untuk aplikasi lebih murah dalam implementasinya. Mikrokontroller adalah versi mini dan untuk aplikasi khusus dari Mikrokomputer atau Komputer. Mikrokontroller sudah tertanam didalamnya khusus dari Mikrokomputer atau Komputer. Mikrokontroller sudah tertanam didalamnya memori (RAM), peripheral output-input, EEPROM, ALU, dan ROM dalam satu chip. Ini memori (RAM), peripheral output-input, EEPROM, ALU, dan ROM dalam satu chip. Ini membuat mikrokontroller mudah digunakan dibandingkan mikroprosessor yang memerlukan membuat mikrokontroller mudah digunakan dibandingkan mikroprosessor yang memerlukan perangkat-perangkat external untuk mengimplementasikanny
perangkat-perangkat external untuk mengimplementasikannya.a.
Tingginya angka kriminalitas khususnya pencurian yang sering terjadi saat ini Tingginya angka kriminalitas khususnya pencurian yang sering terjadi saat ini
tidak sempat untuk melakukanya sendiri. Oleh karena itu dibutuhkan suatu perangkat sistem tidak sempat untuk melakukanya sendiri. Oleh karena itu dibutuhkan suatu perangkat sistem keamanan yang dapat menjaga keamanan setiap waktu bahkan melindungi asset dan privasi keamanan yang dapat menjaga keamanan setiap waktu bahkan melindungi asset dan privasi yang di miliki.
yang di miliki.
Dengan mengaplikasian sistem keamanan tersebut maka dapat memberikan rasa aman Dengan mengaplikasian sistem keamanan tersebut maka dapat memberikan rasa aman dan nyaman. Selain hal tersebut tentunya dengan pengaplikasian sistem keamanan tersebut dan nyaman. Selain hal tersebut tentunya dengan pengaplikasian sistem keamanan tersebut maka dapat menekan angka kriminalitas yang terjadi di masyarakat khususnya tindak maka dapat menekan angka kriminalitas yang terjadi di masyarakat khususnya tindak kejahatan pencurian.
kejahatan pencurian. Karena mobilitas manusia yang Karena mobilitas manusia yang semakin cepat akibat dari aktifitas ysemakin cepat akibat dari aktifitas yangang mereka lakukan di era globalisasi sekarang ini menjadikan mereka memerlukan sebuah mereka lakukan di era globalisasi sekarang ini menjadikan mereka memerlukan sebuah teknologi keamanan yang canggih dan mudah digunakan.
teknologi keamanan yang canggih dan mudah digunakan.
1.2.
1.2. SasaranSasaran
Sasaran dari projek ini dalah membuat sebuah system yang bisa mengontrol atau Sasaran dari projek ini dalah membuat sebuah system yang bisa mengontrol atau mengendalikan sistem keamanaan rumah untuk mencegah terjadinya aksi-aksi criminal yang mengendalikan sistem keamanaan rumah untuk mencegah terjadinya aksi-aksi criminal yang sering terjadi dirumah-rumah seperti pencurian, perampokan, dan lain-lain. System ini juga sering terjadi dirumah-rumah seperti pencurian, perampokan, dan lain-lain. System ini juga memungkin pengguna mengontrol keadaan rumah menggunakan kamera dan memungkin pengguna mengontrol keadaan rumah menggunakan kamera dan meninformasikan pengguna pembacaan data dari setiap sensor-sensor yang terpasang meninformasikan pengguna pembacaan data dari setiap sensor-sensor yang terpasang didalamnya.
didalamnya. 1.3.
1.3. TujuanTujuan
Tujuan pembuatan dari projek ini adalah untuk melindungi rumah dari hal-hal yang Tujuan pembuatan dari projek ini adalah untuk melindungi rumah dari hal-hal yang tidak diinginkan seperti kebakaran, pencurian, dan perampokan. Semua aktifitas didalam tidak diinginkan seperti kebakaran, pencurian, dan perampokan. Semua aktifitas didalam rumah di rekam oleh system sehingga pengguna bisa memantau kejadian-kejadian yang rumah di rekam oleh system sehingga pengguna bisa memantau kejadian-kejadian yang terjadi didalam rumah, seperti memantau suhu ruangan, pendeteksian kebocoran gas, dan terjadi didalam rumah, seperti memantau suhu ruangan, pendeteksian kebocoran gas, dan pemantau aktifitas ruangan melalui kamera.
pemantau aktifitas ruangan melalui kamera. 1.4.
1.4. PengenalanPengenalan
Smart home security adalah system pengamanan rumah berbasis Microcontroller Smart home security adalah system pengamanan rumah berbasis Microcontroller ATMega 2560 sebagai pengontrol setiap sensor and penggerak didalamnya. System ini ATMega 2560 sebagai pengontrol setiap sensor and penggerak didalamnya. System ini memungkinkan pengguna untuk mengontrol system sensor dan mengetahui informasi memungkinkan pengguna untuk mengontrol system sensor dan mengetahui informasi beberapa
sebuah aplikasi pengontrol yang harus diinstal di sebuah PC. Diantara kelebihan-kelebihan sebuah aplikasi pengontrol yang harus diinstal di sebuah PC. Diantara kelebihan-kelebihan yang dimiliki system Smart home security ini adalah sebagai berikut:
yang dimiliki system Smart home security ini adalah sebagai berikut:
Membaca suhu ruangan dan menampilkan ke monitor Membaca suhu ruangan dan menampilkan ke monitor PC.PC.
Membaca dan mendeteksi gas/asap, ditampilkan kemonitor dan mengirim sebuahMembaca dan mendeteksi gas/asap, ditampilkan kemonitor dan mengirim sebuah
pesan peringatan ke telpon genggam
pesan peringatan ke telpon genggam pengguna yang sudah pengguna yang sudah terdaftar.terdaftar.
Membuka pintu menggunakan keypad dan knock recognition (pedeteksi ketukan).Membuka pintu menggunakan keypad dan knock recognition (pedeteksi ketukan).
Pengamanan pintu menggunakan laser apabila pintu dirusakkan secara sengajar.Pengamanan pintu menggunakan laser apabila pintu dirusakkan secara sengajar.
Lampu indikasi, Merah(warning), Kuning(proses), Hijau (Aktif).Lampu indikasi, Merah(warning), Kuning(proses), Hijau (Aktif).
Memungkinkan untuk memantau keadaan rumah menggunakan kamera yang bisaMemungkinkan untuk memantau keadaan rumah menggunakan kamera yang bisa
dikontrol dari PC, dan Mobile (Handphone) melalui jaringan. dikontrol dari PC, dan Mobile (Handphone) melalui jaringan.
Mendeteksi gerakan dan menyimpan gambar, dan juga menampilkan Mendeteksi gerakan dan menyimpan gambar, dan juga menampilkan hasil gambarhasil gambar
yang ditangkap menggunakan camera ke software
yang ditangkap menggunakan camera ke software monitoring.monitoring.
Menampilkan informasi pada LCD display.Menampilkan informasi pada LCD display.
Face recognition untuk membuka pintu dan mengaktifkan keypad dan knockFace recognition untuk membuka pintu dan mengaktifkan keypad dan knock
recognition. (Bisa register beberapa jenis wajah) recognition. (Bisa register beberapa jenis wajah)
Motion detection, mendeteksi dan merekam sebuah objek yang bergerak didepanMotion detection, mendeteksi dan merekam sebuah objek yang bergerak didepan
kamera dan mengirimkannya ke handphone pengguna. kamera dan mengirimkannya ke handphone pengguna.
BAB II
PEMBAHASAN
Dibawah ini adalah gambar koneksi perangkat-perangkat yang digunakan untuk membuat system ini.
2.1. Perlengkapan dan Peralatan yang digunakan
Adapun perlengkapan dan peralatan yang digunakan dalam pembuatan projek in adalah sebagai berikut :
Tabel 1 Peralatan yang digunakan No
.
Gambar Nama Total Penggunaan
1 Arduino Mega 2560 1 Sensor Controller
3 Servo 1 Pengerak kunci pintu 4 Temperature Sensor (LM35Z) 1 Pendeteksi suhu ruangan 5 Gas/Smoke Sensor (QM-NG1) 1 Pendeteksi Gas/asap
6 Laser Diode 1 Lampu laser
7 LDR Sensor Cahaya
Untuk Laser
8 Character Display 16x2 1 Menampilkan
informasi
9 Piezo Disk 1 Pendeteksi ketukan
10 Webcam 2 Pendeteksi wajah.
11 IP Camera Foscam
FI8908W
1 Memantau, merekam gambar ruangan, kamera ini dapat mendeteksi sebuah object yang bergerak di depannya.
12 Modem USB 1 Sebagai pengirim SMS dan MMS
13 Xbee Pro 63Mw 2 Media komunikasi
Arduino dan PC
14 Adaptor 12 V 1 Penyuplai Daya
15 Xbee USB Adapter
(185.000)
1 Pemogram Xbee
16 Mega IO Expansion
Shield For Arduino Mega V1.2
(120.000)
1 IO shield untuk Xbee, IO koneksi
2. 4x4 keypad 1 Rp. 45.000 3. Servo 1 Rp. 50.000 4. Temperature Sensor (LM35Z) 1 Rp.12.000 5. Gas/Smoke Sensor (QM-NG1) 1 Rp. 75.000 6. Laser Diode 1 Rp.10.000 7. LDR 1 Rp.2.000 8. Character Display 16x2 1 Rp.45.000 9. Piezo Disk 1 Rp. 5.000 10. Webcam 1 Rp.50.000
11. IP Camera Foscam FI8908W 1 Rp. 700.000
12. Modem USB 1 Rp. 200.000
13. Xbee Pro 63Mw 2 Rp. 550.000
14. Adaptor 12 V 1 Rp. 40.000
15. Xbee USB Adapter 1 Rp. 185.000
16. Mega IO Expansion Shield For Arduino Mega V1.2
1 Rp. 120.000
Total : Rp. 2.844.000
2.2. Software yang digunakan
Dalam pembuatan projek ini, diperlukan beberapa software yang digunakan untuk mendukung pembuatan system smart home security. Adapun software yang digunakan adalah sebagai berikut :
1. AVRStudio 5
2. Microsoft Visual Studio 2010 VB.Net 3. Software Arduino (Untuk testing) 2.3. Pembuatan
Berikut ini adalah cara – cara pembuatan system smart home security, pembuatan system ini dibagi dua tahap, tahap pertama adalah pembuatan/pemograman hardware dan tahap kedua adalah pembuatan software pendukung hardware system ini yang diinstall di PC. Berikut adalah Langkah-langkap pembuatan hardware dan juga pennjelasan dari setiap
1. Koneksi LCD dan Arduino 2560
Bagan dibawah ini adalah pin mapping dari LCD display 16x2.
Bagan 2.1 LCD Pin Mapping
Bagan 2.2 Skema koneksi Arduino dan LCD Tabel 2.1 Tabel koneksi Arduino dan LCD
Pin Number Pin Name Arduino Mega
2560 Atmega 2560 1 VSS (Power supply, ground (0v) - -2 VDD (Positive power -
-Control) 6 E (Data enable) 34 PC3 7 DB0 (input) - -8 DB1 (input) - -9 DB2 (input) - -10 DB3 (input) - -11 DB4 (input) 33 PC4 12 DB5 (input) 32 PC5 13 DB6 (input) 31 PC6 14 DB7 (input) 30 PC7
15 BLA (Power + Light) -
-16 BLK (Power - Light) -
-2. Koneksi Temperature Sensor dan Arduino
Bagan 2.3 LM35Z pin
Bagan 2.4 Skema koneksi LM35Z dan Arduino Tabel 2.2 Tabel koneksi LM35Z dan Arduino
Pin Number Pin Name Arduino Mega
2560
Atmega 2560
1 +VS -
-2 Vout A1 PF1 (ADC1)
-3. Koneksi sensor Gas/asap dengan Arduino
Sensor gas Analog merupakan produk dari Perusahaan DFRobot. Sensor gas ini juga memiliki tiga pin keluar, dimana pin 1 adalah sinyal output yang terhubung ke pin 2 Arduino. Gambar dibawah ini menunjukkan gambar pin dari sensor Analog Gas/Smoke.
Bagan 2.5Sensor Gas/Smoke pin mapping
Bagan 2.6 Skema koneksi Sensor gas/smoke dengan Arduino Tabel 2.3 Tabel koneksi sensor gas/smoke dengan Arduino
Pin Number Pin Name Arduino Mega
2560
Atmega 2560
1 Signal Output A2 PF2(ADC2)
2 GND -
-4. Koneksi keypad dengan Arduino
Untuk keypad yang digunakan adalah keypad 4 x 4 untuk memasukkan kunci pada akses pintu (mengunci / membuka pintu). Keypad ini memiliki 8 pin, di mana satu pin untuk daya dan yang lainnya tujuh adalah untuk input data.
Bagan 2.7 Keypad
Gambar dibawah menunjukkan hubungan pin antara keypad dan Arduino, dan rincian konfigurasi pin dapat dilihat pada Tabel. Dalam tabel, tujuh pin data tombol yang terhubung ke tujuh pin input digital atau Arduino.
Bagan 2.8 Skema koneksi keypad dengan Arduino 2560
Tabel 2.4 Tabel koneksi keypad dengan Arduino
Pin Number Pin Name Arduino Mega
2560 Atmega 2560 1 VSS (Power Supply) - -2 Data1 22 PA0 3 Data2 23 PA1 4 Data3 24 PA2 5 Data4 25 PA3 6 Data5 26 PA4 7 Data6 27 PA5 8 Data7 28 PA6
5. Laser dan LDR Sensor
Laser dan sensor LDR digunakan dalam fitur laser keamanan tripwire. Hubungan antara sensor dan Arduino hardware diperlihatkan pada gambar dan tabel dibawah ini yang menunjukkan rincian konfigurasi pin di koneksi hardware.
Bagan 2.9 Skema senso LDR, Laser dan Arduino Tabel 2.4 Table skema Laser
Pin Number Pin Name Arduino 328 Atmega 328
1 VCC (+5V) -
-2 Ground -
-Tabel 2.5 -Tabel Koneksi sensor LDR dan Arduino
Pin Number Pin Name Arduino 328 Atmega 328
1 PIN1 GND GND
2 PIN2 A3 PF3 (ADC3)
6. Koneksi sensor ketukan dengan Arduino
Untuk mendeteksi ketukan, sensor yang digunakan adalah sensor piezo.Sensor ini mendeteksi getaran di atasnya.Hubungan antara sensor dan Arduino ditunjukkan pada Gambar di bawah ini.
Bagan 2.10 Skema koneksi sensor piezo dan Arduino Detail konfigurasi pin ini yang ditampilkan dalam tabel berikut ini.
Tabel 2.6 Tabel koneksi sensor piezo dan Arduino
Pin Number Pin Name Arduino 328 Atmega 328
1 +VS -
-2 Ground A0 PF0 (ADC0)
7. Koneksi Kamera dengan PC
Pada kasus ini, smart-home security menggunakan IP camera sebagai kamera pemantau yang di hubungkan menggunakan kabel LAN dan juga bisa dihubungkan
menggunakan WIFI ataupun LAN.
Tabel 2.7 Tabel koneksi Kamera ke PC
Pin Number Pin Name PC
2.4. Pemograman
Penerapan pemograman dalam projek ini menggunakan AVR Studio 5 dan Visual Studio VB.Net 2010. AVR studio 5 digunakan untuk memogram Arduino Mega 2560 dan Visual Studio VB.Net 2010 digunakan untuk memogram aplikasi desktop dari projek ini.Dalam pemograman Arduino, bahasa pemograman yang digunakan adalah C dan Assembly, dimana C dan Assembly digabung menjadi satu pemograman Arduino. Kelebihan menggunakan pemograman ini dibandingkan program Arduino sendiri adalah jumlah byte program yang relative kecil karena penulis membuatnya semua programnya dari awal,
sehingga program dibuat sesuai kebutuhan saja. Keuntungan lainnya adalah penulis data mengubah instruksi-instruksi sesuai kebutuhan dan instruksi-instruksi yang diproses menjadi lebih cepat. Kekurangan dari pemograman memakai bahasa C dan Assembly adalah proses pengembangannya yang sedikit memerlukan waktu dibandingkan program Arduino sendiri. Program Arduino sendiri menggunakan bahasa pemograman C++. Berikut cuplikan syntax dari pemograman Arduino Mega 2560 berserta penjelasannya :
1. Keypad
Keypad memerlukan 7 pin yang akan dikoneksikan ke Arduino Mega, dimana 4 pin memetakan ke kolum dan 3 pin memetakan baris pada keypad. Port yang digunakan adalah PORT A, Port A memiliki 7 pin yaitu terdapat pada pin (PORTA0)/22 – (POARTA6)/28 pada Arduino. Gambar 2.12 adalah gambar pin dari keypad yang memetakan ke pin Arduino (22-28)/PORTA.
Bagan 2.12 Keypad I/O koneksi matrix
Bagaimana keypad berkerja sama dengan cara switch berkerja, yang terkoneksi ke kolum dan baris dari keypad. Jika tombol “1” ditekan, maka kolum 1 terkoneksi de ngan baris 1, jika tombol “2” ditekan maka kolum 2 terkoneksi dengan baris 1, dan seterusnya. Berikut tabel koneksi detik dari setiap pin yang terkoneksi ke kolum dan baris.
Tabel 2.8 Tabel binari keypad
Berikut adalah sintax koneksi dari keypad dan Arduino yang ditulis ke dalam Keypad.S. .S menandakan file yang ditulis dalam bentuk assembly dan akan dipanggil nantinya di C.
;***********************************; ; Header INITILIAZATION ; ;***********************************; #include "avr/io.h" ;***********************************; ; Variable INITILIAZATION ; ;***********************************; workreg = 16 workreg2 = 17
pKeyOut = PORTA ; Output and Pull-Up-Port pKeyInp = PINA ; read keypad input
pKeyDdr = DDRA ; data direction register of the port .extern hexaKeys
.extern temp
;***********************************; ; PORT INITILIAZATION ;
;***********************************;
.global InitPortKeypad ;make accesible globally
InitPortKeypad:
ldi workreg,0b11110000 ;
out _SFR_IO_ADDR(pKeyDdr),workreg ; set direction register ldi workreg,0b00001111 ;
; Identify the key pressed ; .global ReadKey .func ReadKey ReadKey: ldi r30, lo8((hexaKeys)) ldi r31, hi8((hexaKeys)) ldi workreg,0b01111111 ; PB6 = 0 out _SFR_IO_ADDR(pKeyOut),workreg
in workreg,_SFR_IO_ADDR(pKeyInp) ; read input line ori workreg,0b11110000 ; mask upper bits
cpi workreg,0b11111111 ; a key in this column pressed? brne KeyRowFound ; key found
adiw r30,4 ; column not found, point Z one row down ; read column 2
ldi workreg,0b10111111 ; PB5 = 0 out _SFR_IO_ADDR(pKeyOut),workreg
in workreg,_SFR_IO_ADDR(pKeyInp) ; read again input line ori workreg,0b11110000 ; mask upper bits
cpi workreg,0b11111111 ; a key in this column? brne KeyRowFound ; column found
adiw r30,4 ; column not found, another four keys down ; read column 3
ldi workreg,0b11011111 ; PB4 = 0 out _SFR_IO_ADDR(pKeyOut),workreg
in workreg,_SFR_IO_ADDR(pKeyInp) ; read again input line ori workreg,0b11110000 ; mask upper bits
cpi workreg,0b11111111 ; a key in this column? brne KeyRowFound ; column found
adiw r30,4 ; column not found, another four keys down ; read column 4
ldi workreg,0b11101111 ; PB4 = 0 out _SFR_IO_ADDR(pKeyOut),workreg
in workreg,_SFR_IO_ADDR(pKeyInp) ; read again input line ori workreg,0b11110000 ; mask upper bits
cpi workreg,0b11111111 ; a key in this column?
breq NoKey ; unexpected: no key in this column pressed KeyRowFound: ; column identified, now identify row
lsr workreg ; shift a logic 0 in left, bit 0 to carry brcc KeyFound ; a zero rolled out, key is found
adiw r30,1 ; point to next key code of that column rjmp KeyRowFound ; repeat shift
ret .endfunc
Tabel 2.9 Syntax keypad dalam bentuk Assembly
Syntax pada gambar 2.13 di bawah ini adalah method/fungsi yang dipanggil dari Keypad.S file yang telah dibuat sebelumnya menggunakan bahasa assembly.
externvoidInitPortKeypad(void); externcharReadKey(void);
Bagan 2.13 Initialisasi fungsi keypad dari Assembly di C
Syntax pada gambar 2.14 adalah deklarasi variable dalam bentuk array yang akan memetakan tombol pada keypad, variable ini akan dipanggil ke file Keypad.S untuk diproses.
unsignedchar hexaKeys[4][4]PROGMEM={ {'D','#','0','*'}, {'B','6','5','4'}, {'A','3','2','1'}, {'C','9','8','7'} }
Bagan 2.14 Variabel pemetaan tombol pada keypad Pada gambar 2.15 adalah fungsi untuk membaca tombol yang ditekan.
charRead_Keypad() { key=ReadKey(); //delay_ms(100); if(currentKey!=key) { presval=0; } if(key!=NO_KEY&&presval==0) { currentKey=key; presval=1; returncurrentKey; }else { returnNO_KEY; } returnNO_KEY; }
Pada gambar 2.16 adalah fungsi untuk mengkonfigur kalau pengguna tidak memasukkan / menekan tombol lain setelah memasukkan tombol sebelumnya untuk di hapus atau timeout.Time out yang diset adalah setiap 2000ms/2s apabile pengguna tidak menekan tombol lagi setelah menekan tombol sebelumnya.
//Keypad Timeout nowtime=millis(); if(nowtime-updateTime>2000&&counter!=0) { counter=0; LCDTOROW2();
lcd_putstring( "Time out... "); sbi(PORTB,redLED);
delay_ms(500); cbi(PORTB,redLED); }
Bagan 2.16 Keypad timeout fungsi
Syntax dibawah ini adalah syntax ketika tombol dibaca dan juga ditampilkan ke LCD display pada hardware. Syntax dibawah juga berfungsi untuk mengecek / mengavalidasi tombol yang ditekan oleh pengguna. Jika pengguna benar memasukkan kode kunci maka pintu akan terbuka dan LCD akan memunculkan informasi “Correct” dan apabila pengguna
salah memasukkan kode kunci maka pintu tidak akan terbuka dan LCD memunculkan pesan error dan lampu indikasi yang berwarna merah berkedip.
customkey=Read_Keypad(); if(((customkey!=NO_KEY||ReadKey()!=currentKey)&&customkey!=NULL)&&counter<5) { updateTime=millis(); if(counter==0) { lcd_clear();
lcd_putstring( "Home Security."); LCDTOROW2(); lcd_putstring( "_____"); } lcd_gotoxy(counter,2); inputArray[counter]=customkey; //LCDTOROW2(); lcd_putchar('*'); uart_putchar(customkey); //s = s + customkey;
counter++; delay_ms(100); cbi(PORTB,yellowLED); } if(inputArray[0]==currentPassword[0]&&inputArray[1]==currentPassword[1]&&inputArray[2] ==currentPassword[2]&&inputArray[3]==currentPassword[3]&&inputArray[4]==currentPasswor d[4]) { LCDTOROW2(); lcd_putstring( "Correct.");
sbi(PORTB,yellowLED);//turn on registerPin led delay_ms(1000); if(LOCKSTATES==LOCK) { doorUnlock(); }elseif(alarmIsActive==TRUE) { alarmIsActive==FALSE;
lcd_putstring( "ALARM NON ACTIVE. "); } else { doorLock(); } cbi(PORTB,yellowLED); }else{ LCDTOROW2(); lcd_putstring( "Incorrect.");
sbi(PORTB,redLED);//turn on registerPin led delay_ms(1000);
cbi(PORTB,redLED); }
Bagan 2.17 Syntax proses dan validasi kode kunci pada keypad
Bagan 2.18 Pesan ketika benar memasukkan kode kunci
Bagan 2.19 pesan ketika salah memasukkan kode kunci
Bagan 2.20 pesan ketika membuka pintu
Bagan 2.22 Indikasi warning 2. LCD
Penulis menemukan referensi untuk menginitialisasikan LCD pada proram, syntax ditulis dalam bentuk bahasa Assembly, konfigurasi dan settingannya hanya pada PORT, DATA, dan PIN. Syntax ini juga akan dipanggil di C. Syntaxnya ditulisa dalam file Lcd.S. Berikut adalah cuplikan syntax dari konfigurasi LCD.Untuk syntax lengkapnya bisa di unduh bersamaan dengan karya tulis ini.
;***********************************; ; Header INITILIAZATION ; ;***********************************; #include "avr/io.h" ;***********************************; ; Variable INITILIAZATION ; ;***********************************; ;--- Define LCD parameters
---LCDPORT = _SFR_IO_ADDR(PORTC) ; Change to port you're
using
LCDDDR = _SFR_IO_ADDR(DDRC) ; Use PIN[4-7] as data pins LCDPIN = _SFR_IO_ADDR(PINC) ; Connect these to pins DB[4-7] of LCD
RSPIN = 1 ; RS pin on LCDPORT
RWPIN = 2 ; RW pin on LCDPORT
EPIN = 3 ; E pin on LCDPORT
lcdn = 1 ; Number of lines; n=1: 2 lines,
n=0: 1 line
lcdch = 16 ; Number of characters per row
lcdavrspd = 3 ; AVR speed; mess around with this
value
lcdc = 0 ; Cursor on/off at startup; c=1: on,
c=0: off
lcdb = 0 ; Cursor blink on/off at startup; b=1: on, b=0: off
;--- LCD controll, Nothing needs changing beyond this line ----LCDLOAD: ; - Do not execute file when it is only included
rjmp LCDEND …
Bagan 2.24 Step-step initialisasi pada LCD
Gambar diatas adalah step-step yang harus dilalui ketika menginitialisasi LCD. LCD dapat diinitialisasi dengan 7-bit pin dan 4-bit pin. Penulis memakai metode 4-bit pin untuk menghemat pin yang digunakan dalam koneksi.
Berikut adalah syntax untuk menginitialisasi command/perintah LCD.
//LCD INITIALIZATION
/* instruction register bit positions, see HD44780U data sheet */
#defineLCD_CLR0/* DB0: clear display #defineLCD_HOME1/* DB1: return to home position
#defineLCD_ENTRY_MODE2/* DB2: set entry mode
#defineLCD_MOVE_DISP3/* DB3: move display (0->
#defineLCD_MOVE_RIGHT2/* DB2: move right (0-> left) ? */
#defineLCD_FUNCTION5/* DB5: function set */
#defineLCD_FUNCTION_8BIT4/* DB4: set 8BIT mode (0->4BIT mode) */ #defineLCD_FUNCTION_2LINES3/* DB3: two lines (0->one line) */ #defineLCD_FUNCTION_10DOTS2/* DB2: 5x10 font (0->5x7 font) */ #defineLCD_CGRAM6/* DB6: set CG RAM address */
#defineLCD_DDRAM7/* DB7: set DD RAM address */
#defineLCD_BUSY7/* DB7: LCD is busy */
Bagan 2.25 Initialiasi command LCD
Bagan 2.26 Kode instruksi pada LCD
Kode instruksi diatas dapat digunakan untuk keperluan dalam penggunaan LCD.Kode diatas di eksekusi dengan mengirim perintah ke LCD. Berikut pada gambar 2.27 adalah method-method yang dipanggil dari file header assembly, file yang berisi konfigurasi dari LCD ke Arduino. externvoidLCDINIT(void); externvoidLCDPRTCHAR(charval); externvoidLCDCLEAR(void); externvoidLCDSENDCMD(uint8_tval); externvoidLCDTOROW1(void); externvoidLCDTOROW2(void); externvoidLCDCURSORON(void); externvoidLCDBLINKON(void); externvoidLCDTOCOL1(void); externvoidLCDBACKSPACE(void);
Bagan 2.27 Fungsi LCD yang dipanggil dari Lcd.S voidlcd_putchar( charc) { LCDPRTCHAR(c); } voidlcd_putstring(char*s) { while(*s) lcd_putchar(*s++); } voidlcd_init() { LCDINIT(); delayMicroseconds(3000); } voidlcd_gotoxy(uint8_tx,uint8_ty) { if(y==0) LCDSENDCMD((1<<LCD_DDRAM)+LCD_START_LINE1+x); else LCDSENDCMD((1<<LCD_DDRAM)+LCD_START_LINE2+x); } voidlcd_returnHome() {
LCDSENDCMD(LCD_RETURNHOME);// set cursor position to zero delayMicroseconds(1000);// this command takes a long time! }
voidlcd_clear() {
LCDCLEAR();
delay_ms(50);// this command takes a long time! }
Bagan 28 Fungsi-fungsi LCD dalam C
Instruksi diatas adalah fungsi-fungsi yang dideklarasi dalam file Lcd.h, fungsi ini dapat dipanggil dalam file utama.
Sensor suhu memerlukan converter ADC dari mikrokontroller.ADC converter melakukan konversi sinyal analog ke sinyal digital pada mikrokontroller.Dibawah ini adalah langkah dari konversi sinyal analog ke digital.
Bagan 2.30 Proses konversi sinyal analog ke digital
Secara umum, konversi sinyal dilakukan dengan 3 langkah, pertama pada dunia nyata, sensor akan merasakan / mendeteksi seperti gas, suhu, asap dan lain-lain. Kemudian sinyal akan mengkonversi ke sinyal listrik dan kemudian sinyal tersebut akan di konversi ke digital oleh mikrokontroller menggunakan ADC.
Ini adalah formula yang digunakan untuk mengkonversi sinyal, sinyal dibaca dalam bentuk daya listrik dan kemudian akan dikonversi dengan formula tersebut sehingga menghasilkan nilai pada mikrokontroller. Arduino mega 2560 mempunyai referensi daya sebesar 5v, jadi segala sensor yang terkoneksi dengan daya yang dikeluarkan arduino mempunyai referensi pada 5v. Untuk mendapatkan daya voltage pada millivolts (mV) maka kita akan kalikan dengan 1000, jadi formulanya menjadi :
karena sensor LM35Z membutuhkan daya 10mV setiap 1 derajat. Untuk mendapatkan hasil suhu, maka:
tempC=((Vin)/1023.0)*500); //tempC adalah derajat celcius
ADC memerlukan initialisasi untuk mengkonfigurasi nilai presisi.Berikut cuplikan syntax dalam bahasa assembly untuk menginitialisasikan penggunaan ADC pada Arduino.
;***********************************; ; ADC INITILIAZATION ; ;***********************************; .global ADC_Init .func ADC_Init ADC_Init: cli ldi r16, _BV(REFS0) sts ADMUX, r16 ldi r16, _BV(ADEN)|_BV(ADPS2)|_BV(ADPS1)|_BV(ADPS0) sts ADCSRA, r16 lds r16, ADCSRA // Read ori r16, _BV(ADSC) // Modify sts ADCSRA, r16 // Write
ret .endfunc
;***********************************; ; Read ADC Value ;
;***********************************; .global read_adc
.func read_adc read_adc:
//Clear the older channel that was read LDS R25,ADMUX
ANDI R25,0xF0 STS ADMUX,R25
//Defines the new ADC channel to be read LDS R25,ADMUX
OR R25,R24 STS ADMUX,R25
//Starts a new conversion LDS R24,ADCSRA
ORI R24,(1<<ADSC) STS ADCSRA,R24
//Wait until the conversion is done L: LDS R24,ADCSRA
SBRC R24,ADSC RJMP L
//Returns the ADC value of the chosen channel LDS R24,0x78
Bagan 2.31 Initialisasi dan pembacaan sensor
Syntax diatas disimpan dalam ADC.S dalam satu project, nantinya fungsi-fungsi dalamnya kan dipanggil di kelas fungsi utama. Dibawah ini dalah initialisasi fungsi untuk pemanggilan fungsi pada file ADC.S.
externvoidADC_Init(void);
externuint16_tread_adc(uint8_tchannel);
Bagan 2.32 Initialisasi fungsi ADC dari Assembly
if(TempSensorIsActive==TRUE) { for(i=0;i<=7;i++){ tempsamples[i]=(500.0*read_adc(tempPin))/1024.0; tempC=tempC+tempsamples[i]; }
tempC=tempC/8.0; // better precision }
else {
tempC=0; }
Bagan 2.33 Pembacaan sensor suhu
Syntax diatas adalah syntax untuk membaca suhu, pada syntax tersebut pembacaan dilakukan selama 8 kali selanjutnya nilai akan dibagai 8 untuk mendapatkan nilai yang sedikit akurat dibanding dengan pembacaan Cuma 1 kali. Hasil pembacaan dari sensor akan ditampilkan ke aplikasi seperti pada gambar 2.34 dibawah ini.
Bagan 34 Informasi suhu ditampilkan pada aplikasi smart home
4. Servo (Buka dan Tutup kunci pintu)
Untuk membuka dan menutup kunci pintu, semua tugas buka dan tutup kunci digerakkan oleh servo. Kunci akan terbuka pada point 0 derajat dan akan tertutup pada poin 90 derajat servo.
Untuk dapat mengontrol motor servo kita perlu memberikan pulsa high dan pulsa low dengan lebar tertentu. Frekuensi yang diperlukan servo ini adalah 50 Hz. Dengan melihat gambar diatas maka dapat disimpulkan:
- 0 derajat -> 1000us - 90 derajat -> 1500us - 180 derajat -> 2000us
voidpulse_servo(uint8_t portVAlue,uint8_t pin,int angle) {
pwm=(angle*11)+500;//konversi sudut ke Microsecond PORTL=(1<<pin);
delayMicroseconds(pwm); PORTL=(0<<pin);
delay_ms(20); }
Bagan 2.35 Syntax untuk menggerakkan servo
for(i=0;i<5;i++){ sbi(PORTB,yellowLED); delay_ms(100); cbi(PORTB,yellowLED); delay_ms(100); } for(i=90;i>10;i--) { sbi(PORTB,yellowLED); pulse_servo(servoport,door_servo3,i); } cbi(PORTB,yellowLED); LOCKSTATES=UNLOCK;
Bagan 2.36 Syntax untuk membuka kunci pintu dengan servo
for(i=0;i<5;i++){ sbi(PORTB,yellowLED); delay_ms(100); cbi(PORTB,yellowLED); delay_ms(100); } for(i=10;i<90;i++) { pulse_servo(PORTH,door_servo3,i); sbi(PORTB,yellowLED); } cbi(PORTB,yellowLED); LOCKSTATES=LOCK;
Bagan 2.37 Syntax untuk mengunci pintu dengan servo
Masing-masing servo memeliki nilai pulsa yang sedikit berbeda. Tapi secara umum hampir sama. Pada servo yang penulis gunakan, memerlukan pulsa 10x11 + 500 = 650 untuk menggerakkan servo pada posisi 0.Jadi pulsa 650 untuk servo ini memetakan servo pada posisi awal yaitu 0 derajat. Selanjutnya servo akan bergerak ke 90 derajat dan 180 derajat dengan menambahkan nilai pulsa.
5. Laser
Konsep yang penulis terapkan dalam pengamanan pintu dengan laser ini adalah mudah, cahaya laser ditembakkan langsung ke sensor cahaya (LDR).Kemudian Arduino di konfigurasikan untuk pembacaan cahaya dari sensor, pada nilai tertentu (treshold) menandakan cahaya redup artinya ada sesuatu objek yang bergerak didepan laser sehingga membuat cahaya laser menjadi terputus.Untuk pembacaan sensor digunakan ADC seperti penggunaan pada sensor suhu. Nilainya hasil konversi akan mencapai 1023 apabila cahaya terang diatas sensor, dan menurun apabila cahaya redup. Nilai threshold yang digunakan adalah 750, artinya sensor akan terus membaca diatas 750 jika laser terus memberikan cahaya. Apabila cahaya berkurang maka pembacaan sensor akan menurun dibawah 750. Selajutnya Arduino mengirimkan pesan warning dan mengaktifkan alarm.
ldrval=read_adc(3);
if(ldrval<laserTresholdVal) {
uart_putstring("Object Detected In laser Tripwire,TRUE"); uart_putchar('\n');
alarmIsActive=TRUE; }
Bagan 2.38 Pembacaan sensor cahaya dan laser 6. Ketukan
Sensor ketukan menggunakan sensor Piezoelectric yang bisa mendeteksi setiap getaran padanya. Sensor ini disamping untuk mengeluarkan bunyi, sensor ini juga
converter (ADC) untuk mendeteksi nilai yang dihasilkan.Ada nilasi threshold untuk mengatur sensibilatas dari pembacaan ketukan. Ketika sensor bergetar, sensor akan menghasilkan nilai tegangan yang kemudian dikonversi menjadi sinyal digital oleh Arduino. Sehingga nilai bisa dikomparasi dengan nilai threshold. Berikut adalah syntax untuk membaca sensor piezo.
knockSensorValue=read_adc(knockSensor); if(knockSensorValue>=threshold){
listenToSecretKnock(); }
Bagan 2.39 Syntax untuk membaca ketukan
Berikut ada cuplikan syntax untuk melakukan proses record. Proses ini akan dilakukan selama ketukan tidak lebih dari 20 dan dalam jangka waktu tertentu.
do{
//listen for the next knock or wait for it to timeout. knockSensorValue=read_adc(knockSensor); if(knockSensorValue>=threshold){ uart_putstring("Knocking...\n"); lcd_gotoxy(0,1); lcd_write_int(counterNumber+1,1); now=millis(); knockReadings[counterNumber]=now-startTime; counterNumber++; startTime=now; cbi(PORTB,greenLED); if(programButtonPressed==1){ cbi(PORTB,redLED); } delay_ms(150); sbi(PORTB,greenLED); if(programButtonPressed==1){ sbi(PORTB,redLED); } } now=millis(); }while((now-startTime<knockComplete)&&(counterNumber<maximumKnocks));
Bagan 2.40 Syntax untuk membaca dan menyimpan ketukan
Proses validasi akan dieksekusi jika dalam jangka waktu tertentu pengguna tidak mengetuk lagi dan ketukan sudah mencapai 20.
Int validateKnock(){ inti=0; LCDTOROW2(); lcd_putstring( "Validating... "); currentKnockCount=0; secretKnockCount=0; intmaxKnockInterval=0; for(i=0;i<maximumKnocks;i++){
currentKnockCount++; } if(secretCode[i]>0){ secretKnockCount++; } if(knockReadings[i]>maxKnockInterval){ maxKnockInterval=knockReadings[i]; } } if(programButtonPressed==1){ LCDTOROW2(); lcd_putstring( "Saving... ");
for(i=0;i<maximumKnocks;i++){// normalize the times
secretCode[i]=mapValue(knockReadings[i],0,maxKnockInterval,0,100); } cbi(PORTB,greenLED); cbi(PORTB,redLED); delay_ms(1000); sbi(PORTB,greenLED); sbi(PORTB,redLED); delay_ms(50); for(i=0;i<maximumKnocks;i++){ cbi(PORTB,greenLED); cbi(PORTB,redLED); if(secretCode[i]>0){ unsignedintsrpteValue=mapValue(secretCode[i],0,100,0,maxKnockInterval); delay_ms(srpteValue);sbi(PORTB,greenLED); sbi(PORTB,redLED); } delay_ms(50); } return0; } if(currentKnockCount!=secretKnockCount){ return0; } totaltimeDifferences=0; timeDiff=0;
for(i=0;i<maximumKnocks;i++){// Normalize the times
knockReadings[i]=mapValue(knockReadings[i],0,maxKnockInterval,0,100); timeDiff=abs(knockReadings[i]-secretCode[i]); if(timeDiff>rejectValue){return0; } totaltimeDifferences+=timeDiff; }
Bagan 2.41 Syntax untuk memvalidasi ketukan
Syntax diatas juga digunakan untuk menyimpan ketukan yang akan divalidasi.
sensor mendeteksi sebuah kebocoran gas/asap membuat tegangan dari sensor tersebut menjadi tinggi. if(gasSensorIsActive==TRUE) { gasVal=read_adc(2); } else { gasVal=0; } if(gasVal>gasThresholdVal) { if(gascountWarning<1) { uart_putstring("WarningSmoke,TRUE"); uart_putchar('\n'); gaswarning=TRUE; } gascountWarning++; alarmIsActive=TRUE; }elseif(gaswarning==TRUE) { gascountWarning=0; alarmIsActive=FALSE; } itoa(gasVal,buffer,10); uart_putstring("Smoke,"); uart_putstring(buffer); uart_putchar('\n'); gasVal=0;
Bagan 2.42 Syntax untuk membaca sensor gas, menampilkan, dan mengirim pesan warning
Selanjutnya Arduino mengirim pesan warning ke computer, dan aplikasi memproses data yang diterima dan mengirim pemberitahuan ke pengguna.
Bagan 2.44 Tampilan status warning pada aplikasi
Bagan 45 Pesan SMS yang dikirim oleh Aplikasi saat menerima pesan warning dari sensor gas
2.5. Perintah-perintah Arduino dan aplikasi
Arduino dan aplikasi smart home security yang sudah diinstall di computer saling berkomunikasi satu sama lain. Untuk melaksanan suatu perintah yang dikirimkan aplikasi, maka perlu di setting perintah khusus di dalam Arduino untuk aksi tertentu. Begitu juga dengan aplikasi. Aplikasi membaca suatu pesan/perintah yang dikirimkan arduino, selanjutnya proses ini akan melakukan suatu aksi seperti menampilkan data, mengirim pesan, dan lain-lain. Berikut table-tabel berisi perintah-perintah dari Arduino dan aplikasi yang saling berkomunikasi untuk melakukan subuah aksi tertentu.
Tabel 2.9 Tabel perintah dari aplikasi ke Arduino
Command Action
6 Set knock programmer button is “On”
7 Set alarm “Inactive”
8 Set alarm “Active”
a Set keypad “Inactive”
b Set keypad “Active”
d Set Knock sensor “Inactive” e Set Knock sensor “Active” f Set temperature sensor “Inactive” g Set temperature sensor “Active” h Set laser tripwire sensor “Inactive”
n Set 2n level of security “On” o Set 2n level of security “Off”
Dibawah ini adalah daftar perintah-perintah yang dikirim oleh Arduino ke aplikasi untuk melakukan sebuah aksi sesuai keinginan pembuatnya.
Tabel 2.10 Table perintah dari Arduino ke aplikasi Command Description
T,”value” Menerima nilai dari sensor suhu dan menampilkan ke
monitor
Smoke,”value” Menerima nilai dari sensor gas dan menampilkan ke
monitor
WarningSmoke Menerima status warning dari sensor gas dan
mengirim sms ke pengguna melalui aplikasi Object Detect In
laser Tripwire
Menerima pesan warning dari sensor laser dan
mengirim sms ke pengguna melalui aplikasi Alarm,True Alarm aktif
Setelah semuanya selesai, selanjutnya tiba pada proses upload program ke Arduino. Untuk upload program ke arduino, penulis menggunakan program Uploader. Avrdude membutuhkan .hex file untuk diupload ke Arduino mega. .hex file akan terbuat jika kita sudah sukses membuild sebuah projek seperti gambar dibawah ini.
Bagan 2.46 Folder Project pada Pemograman Arduino menggunakan AVR Studio 5
Bagan 2.47 Aplikasi yang digunakan untuk upload program Arduino Mega 2560 Program uploader yang penulis gunakan untuk mengunduh program dalam bentuk
2.6. Pembuatan aplikasi Smart-home Security
Smart home security dikontrol oleh aplikasi yang sudah disebutkan sebelumnya, oleh karena itu, system ini tidak akan jalan jika aplikasinya tidak aktif. Aplikasinya sendiri dibuat menggunakan VB.Net 2010 berserta komponen lainnya. Penulis akan memaparkan sedikit sintax dari aplikasi ini. Dikarenakan syntaxnya sedikit banyak, jadi penulis hanya memaparkan sintax untuk melakukan koneksi dan memproses setiap data yang diterima aplikasi. Berikut adalah potongan syntax untuk melakukan koneksi ke serial :
PublicFunction connectSerial(ByVal port AsString, ByVal baudrate AsString) If port = ""Or baudrate = ""Then
MessageBox.Show("Port or Baudrate is Null", "Error") Else serialPort.Close() With serialPort .BaudRate = CInt(baudrate) .PortName = port .Parity = IO.Ports.Parity.None .DataBits = 8 .StopBits = IO.Ports.StopBits.One .Handshake = IO.Ports.Handshake.None .Encoding = System.Text.Encoding.ASCII EndWith 'serialPort.Open() If serialPort.IsOpen Then serialPort.Close() EndIf EndFunction
Bagan 2.48 Syntax untuk melakukan koneksi serial
Fungsi dibawah ini adalah fungsi ketika aplikasi menerima kiriman serial data dari Arduino dan kemudian diproses untuk masing-masing aksi yang diinginkan.
PublicDelegateSubmyDelegate() PublicSub doAction() Dim tempStr AsString Dim sa() AsString tempStr = serialPortNew.ReadLine sa = Split(tempStr, ",") TxtBoxSerialMon.AppendText(tempStr) TxtBoxSerialMon.AppendText(Environment.NewLine) If sa(0) = "T"Then MainForm.SetTempValue() = sa(1)
InsertToDbHistory("2", sa(1)) EndIf If sa(0) = "Smoke"Then MainForm.SetGasValue() = sa(1) InsertToDbHistory("3", sa(1)) EndIf If sa(0) = "WarningSmoke"Then
sendMessage(GetPhoneNumber(), "Smoke / Gas Leaked was detected on sensor -Gas/smoke sensor")
EndIf
If sa(0).Contains("Object Detected In laser Tripwire") Then
sendMessage(GetPhoneNumber(), "Unknown Object was detected on sensor -Laser tripwire sensor")
' My.Forms.CamMonitoring.sendmms = "TRUE" EndIf
If sa(0).Contains("Door UnLocked") Then
My.Forms.FormMain.LabelBarStatus.Caption = "Door is UnLocked" EndIf
If sa(0).Contains("DoorLock") Then
My.Forms.FormMain.LabelBarStatus.Caption = "Locking the door ..." EndIf
If sa(0).Contains("Unlocking") Then
My.Forms.FormMain.LabelBarStatus.Caption = "Unlocking the door..." EndIf
If sa(0).Contains("Door is Locked") Then
My.Forms.FormMain.LabelBarStatus.Caption = "Door is Locked" EndIf
If sa(0) = "M"Then
My.Forms.CamMonitoring.sendmms = "TRUE"
My.Forms.FormMain.LabelBarStatus.Caption = "Motion Detected : " EndIf If sa(0) = "ALARM"Then My.Forms.MCUSetting.SetAlarmActiveProperty = 3 My.Forms.FormMain.btnAlarmOff.Enabled = True My.Forms.FormMain.WarningBarStaticItem.Caption = "WARNING..." Else My.Forms.FormMain.WarningBarStaticItem.Caption = "" EndIf EndSub
PrivateSub DataReceived(ByVal sewnder AsObject, ByVal e As
System.IO.Ports. SerialDataReceivedEventArgs) Handles serialPortNew.DataReceived Try Me.Invoke(NewmyDelegate(AddressOf doAction), NewObject() {}) Catch ex AsException MessageBox.Show(ex.ToString) EndTry EndSub
Bagan 2.50 Syntax untuk menangani penerimaan data pada serial
Hasil akhir aplikasi smart home security yang telah dijalankan di PC. Aplikasi ini terkoneksi dengan ARduino Mega 2560 via Xbee Wireless.
BAB III
PENUTUP
3.1. Kesimpulan
Dengan perkembanganteknolog iinformasisaat ini sangat memudahkan manusia dalam menjalani kehidupannya. Salah satu contoh adalah perkebangan teknologi dalam hal kemanan juga sudah mulai mengadopsi system teknologi informasi. Seperti yang penulis buat ini adalah Smart Home Security, yaitu sebuah system yang telah di integrasikan antara software dan hardware untuk keamanan. Pada projek ini penulis membuat sebuah system yang akan memantau keadaan rumah secara realtime. Adapun yang telah penulis buat adalah:
1. Room monitoring yang mengunakan sebuah kamera yang akan memantau keadaan didalam rumah. Kamera ini akan bergerak sesuai dengan motion yang ada dalam ruangan
2. Motion Detection, adalah sebuah modul yang digunakan untuk mendeteksi gerakan object dalam ruangan dan bila sensor medapati object yang bergerak maka system akan mencapture gambar tersebut dan akan mengirimkan sebuah pesan MMS (multimedia Message Service) kepada penghuni rumah.
3. Gas deteksi, disini penulis mengunakan sebuah sensor gas untuk menghindari hal-hal yang tidak diingikan seperti kebocoran gas didalam rumah yang akan berakibat fatal, maka dengan mengukan sesor ini pendeteksian bisa dilakukan yaitu alrm akan berbunyi dan system akan mengirimkan sms kepada penguhuni rumah.
4. Door security, pada door security penulis telahmembuat 3( tiga) model keamaan yang akan di implementasikanpada door security yaitu :
a. Face recognition, untuk menghindari maling membuat kunci duplikat maka penulis juga membuat security untuk membuka pintu dengan cara membaca wajah penghuni rumah yang telah terdaftar pada system.
b. Key password, adalah salah satu cara untuk membuka pintu rumah selain mengunakan facerecornation, penulis membuat keypassword ini untuk mengatasi jika terjadi error pada facerecornation sehingga penghuni dapat masuk kedalam rumah. Dan jika dalam keadaan darurat kita bisa meminta tolong kepada orang lain untuk masuk kedalam rumah dengan cara menyebutkan password untuk dimasukan pada keypassword.
c. Knock, juga salah satu metode yang penulis buat untuk dapat membuka pintu rumah,dengan mengunkan Knock Door penghuni dapat membuka pintu dengan cara yang sanggat mudah,bahkan jika kita mebuka pintu rumah orang lain tidak tahu kalau ketukan itu adalah password,mungkin orang lain mengira kita sedang mengetuk pintu seperti biasa.
5. Laser Trip wire, adalah salah satu security tambahan yang mengunakan sinar laser yang diletakan tersembunyi dibelakang pintu. Modul ini sangat penting untuk keamanan sebuah rumah jika pintu dibuka paksa seperti didobrak dari luar sehingga security pintu jebol , dan pada saat masuk kedalam rumah akan melewati sinar laser tersebut maka system akan mengeluarkan suara bunyi alram dan juga akan di informasikan melalui sms kepada penghuni rumah.
6. Pemantau suhu adalah sebuah modul tambahan yang dibuat oleh penulis untuk mengetahui suhu didalam rumah, sehingga kita dapat selalu mengetahui berapa suhu ruangan yang kita diamin.
Daftar Pustaka
[1].Wikipedia, the free encyclopedia. (2011, November 7). Wikipedia. Retrieved November 13, 2011, from Microcontroller:
http://en.wikipedia.org/wiki/Microcontroller#Embedded_design
[2].Atmel. (2011). ATmega2560. Retrieved 11 13, 2011, from Atmel Corporation Website: http://www.atmel.com/dyn/products/product_card.asp?part_id=3632
[3].Atmel . (2011). Atmega2560 Preliminary . USA: Atmel Corporation.
[4]. Kurniawan, D. (2009). ATMega 8 dan aplikasinya. Jakarta: Elex Media Komputindo.
[5].Arduino. (2011). Arduino - Home. Retrieved 11 14, 2011, from Arduino: http://www.arduino.cc/
[6].Atmel Corporation. (2011, November). AVR Studio 5: Release 5.0. Orchard Parkway, San Jose, United States of Amerika.
[7].Atmel Corporation. (2010, July 10). 8-Bit AVR Instruction Set. Orchard Parkway, San Jose, United States of America.
[8] Anderson, J. (2006). Climate Change and Natural Disasters: Scientific evidence of a possible relation between recent natural disasters and climate chang. Brussels: DG INTERNAL
POLICIES OF THE UNION .
[9] Antreakis. (2008, Maret 3). Global Warming & Climate Change. Retrieved December 19, 2011, from All Free Essays: http://www.allfreeessays.com/essays/Global-Warming-Climate-Change/7333.html
[10] AVRFreaks. (2011, June 24). ADC converter in assembly . Retrieved October 11, 2011, from AVR Freaks: http://8515.avrfreaks.net
[11] BEAMENT, E. (2011, May 9). Rise in climate change disasters. Retrieved December 19, 2011, from The Independent News:
http://www.independent.co.uk/environment/climate-change/rise-in-climate-change-disasters-2281160.html
[12] Electronics, C.-m. (n.d.). LCDinc, Assembly library for interfacing with Hitachi LCDs in 4-bit mode. Retrieved 08 12, 2011, from C-MONS Electronics:
http://home.deds.nl/~cmon/lcddrive.htm
[13] Hitachi. (1998). Dot Matrix Liquid Crystal Display Controller/Driver. Japan.
[14] Luxan. (n.d.). Detect and Recognize Faces with Luxand FaceSDK . (Luxand) Retrieved 12 23, 2011, from Luxand: http://www.luxand.com/facesdk/
[16] Savanah Nongnu. (n.d.). Inline Assembler Cookbook . Retrieved January 3, 2012, from AVR-Lib user manual: http://www.nongnu.org/avr-libc/user-manual/inline_asm.html
[17] Scienceprog. (2006, June 27). How to use inline ASM using WinAVR. Retrieved January 4, 2012, from Scienceprog: http://www.scienceprog.com/how-to-use-inline-asm-using-winavr/ [18] Soebhakti, H. (2007). Basic AVR Microcontroller Tutorial.
[19] Wikibooks. (2011, November 20). Embedded Systems/Mixed C and Assembly Programming. Retrieved January 4, 2012, from Wikibooks:
APPENDICES
- Pin Mapping Arduino - User Manual
Arduino Mega 2560 Pin Mapping
Berikut adalah arduino mega 2560 pin mapping yang diperlukan untuk pembuatan software Arduino menggunakan AVR Studio 5. Pin mapping ini sangat diperlukan dalam proses pengembangan aplikasi ini.