1. Identifikasi Masalah
Rumah yang kosong sering kali menjadi momok bagi sebagian orang karena dengan begitu menjadi target para maling atau pencuri terutama apabila rumah bukan berada pada kompleks yang dilengkapi dengan satpam. Kurangnya pengawasan menjadi celah pencuri untuk masuk dan membobol rumah. Pengawasan paling mudah untuk saat ini biasanya menggunakan CCTV yang dihubungkan ke jaringan internet sehingga dapat diakses online dimana saja. Namun, melihat CCTV secara terus menerus ketika sedang berada di luar rumah bukan merupakan hal praktis yang dilakukan. Dibutuhkan adanya sistem yang dapat memberikan sinyal atau alert apabila ada seseorang yang tidak diharapkan (terutama penyusup atau maling) yang memasuki rumah yang sedang tidak ada penghuninya, sehingga pemilik rumah dapat dengan segera menghubungi emergency call atau secara langsung mengecek keadaan rumah yang sebenarnya.
2. Alternatif pemecahan masalah
Berikut adalah alternatif solusi dari masalah yang kami usulkan.
Alternatif solusi pertama adalah membeli layanan home security system, yang diberikan oleh berbagai macam provider. Namun, masalah utama dari solusi ini adalah biaya yang sangat tinggi. Untuk mendapatkan layanan home security system, rata-rata yang harus dibayar di muka adalah sekitar $200, dengan biaya $10 per bulan penggunaan. Biaya yang tinggi ini yang menyebabkan appeal home security system sebagai solusi berkurang, walaupun reliabilitas dan tingkat keamanan dari layanan-layanan tersebut sudah terjamin kualitasnya.
Selain itu, dapat dilakukan instalasi CCTV di rumah. Seperti halnya dengan home security system, layanan CCTV juga mengalami kendala di biaya tinggi di muka, dengan instalasi sistem CCTV dasar dapat mencapai biaya sekitar $290. Selain itu, layanan CCTV memiliki satu kendala lain, yaitu pengguna masih harus mengawasi CCTV tersebut. Hal ini dapat mengurangi kualitas keamanan yang ditawarkan karena pengguna tidak dapat selalu mengawasi CCTV.
Solusi lain yang dapat dilakukan adalah dengan menggunakan smart electronic lock. Kunci elektronik ini akan menjamin kunci pintu atau pagar rumah tidak terbobol dengan mudah, dengan harga yang relatif tinggi tapi masih lebih terjangkau dibandingkan instalasi CCTV atau home security system, dengan rata-rata biaya instalasi sekitar $150. Namun, smart electronic lock memiliki satu masalah, yaitu pencuri masih dapat mendapatkan akses ke dalam rumah dengan metode lain, seperti membobol jendela atau memanjat pagar. Maka dari itu reliabilitas dan kualitas keamanan yang ditawarkan tidak sebanding dengan biaya yang harus dikeluarkan.
| Home Security Options | Price | Reliability | Security | Total |
| DIY Home Security System dengan Arduino | 5/5 | 3/5 | 3/5 | 11 |
| Membeli Home Security System Kit | 1/5 | 4/5 | 5/5 | 10 |
| Home CCTV | 1/5 | 5/5 | 4/5 | 10 |
| Smart Electronic Lock | 2/5 | 3/5 | 3/5 | 8 |
Standar Pengukuran :
- Price : Total biaya yang dikeluarkan untuk implementasi layanan. Semakin tinggi poin berarti semakin murah biaya implementasi layanan.
- Reliability : Kemungkinan terjadinya kesalahan pada layanan. Semakin tinggi poin berarti layanan memiliki kemungkinan lebih rendah untuk terjadi kesalahan.
- Security : Tingkat keamanan yang ditawarkan oleh layanan. Semakin tinggi poin berarti semakin baik keamanan yang ditawarkan layanan.
3. Spesifikasi Desain
Input:
- Masukan tombol keypad (1 char)
- Password (string), panjang tergantung pengguna
- Masukan sensor PIR (boolean)
- Nomor telepon (string), panjang tergantung
Output:
- Lampu LED
- Buzzer: 1KHz sound signal
- Panggilan telepon
Komponen:
- Arduino UNO
- Keypad 4×4 (digunakan 4×3 saja)
- Sensor PIR
- Modul GSM beserta kartu SIM
- 2 buah 5V LED
- Buzzer
- Kabel Jumper (male-to-male dan male-to-female)
- 1 kabel USB 2.0 (penghubung Arduino ke komputer)
- 1 kabel Micro-USB (untuk sumber daya modul GSM)
- Resistor 220 Ohm
Protokol:
- UART (Universal Asynchronous Reception and Transmission)
Protokol komunikasi sederhana yang memungkinkan Arduino untuk berkomunikasi dengan perangkat serial.
Dalam sistem ini, protokol UART digunakan oleh Arduino untuk berkomunikasi dengan komputer lewat port 0 dan 1-nya, dan juga oleh modul GSM untuk berkomunikasi dengan Arduino lewat port 2 dan 3 (dimungkinkan oleh library SoftwareSerial)
- GSM (Global System for Mobile communications)
Standar yang dikembangkan oleh ETSI (European Telecommunications Standards Institute) untuk mendeskripsikan protokol jaringan digital seluler generasi kedua (2G) yang digunakan oleh perangkat seluler seperti telepon genggam dan tablet.
Digunakan oleh modul GSM untuk melakukan panggilan telepon ke nomor yang ditentukan sebagai tanda darurat.
4. Desain perangkat keras
Berikut adalah gambar desain sistem menggunakan Desain Blok dan desain rangkaian arduino dari sistem yang kami buat.


5. Desain perangkat lunak
Berikut adalah desain flowchart dari sistem yang kami rancang.

6. Desain user interaction
Berikut adalah gambarrancangan user interface yang berhubungan langsung dengan user. Terdiri dari keypad dan juga call telepon.



7. Implementasi perangkat keras
Berikut adalah gambar implementasi sistem dan subsistem dari perangkat yang kami buat.


8.Implementasi perangkat lunak
Berikut adalah kode program yang kami buat
#include <Keypad.h>
#include <Password.h>
#include <SoftwareSerial.h>
const byte ROWS = 4; //Empat baris
const byte COLS = 3; //Tiga kolom
//Define the keymap
char keys[ROWS][COLS] = {
{‘1’, ‘2’, ‘3’},
{‘4’, ‘5’, ‘6’},
{‘7’, ‘8’, ‘9’},
{‘*’, ‘0’, ‘#’}
};
//Connect keypad ROW0, ROW1, ROW2. ROW3 to these Arduino pins.
byte rowPins[ROWS] = {12, 11, 10, 9};
//Connect keypad ROW0, ROW1, ROW2. ROW3 to these Arduino pins.
byte colPins[COLS] = {8, 7, 6};
//Create the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
Password password = Password( “1234” ); //set the password
int redPin = A0; // memilih pin LED merah
int bluePin = A1; // memilih pin LED biru
int inputPIR = 5; // memilih pin input (untuk PIR sensor)
int pirState = LOW; // memulai, asumsi tidak ada gerakan terdeteksi
int buzzer = A2; // buzzer diset pada pin 4
int PIR_val = LOW; // kondisi awal PIR diset mati
bool armed = false;
bool blink = false;
SoftwareSerial mySerial(3, 2); // A6 Tx & Rx is connected to Arduino #3 & #2
void setup() {
pinMode(redPin, OUTPUT); // deklarasi redPin adalah output
pinMode(bluePin, OUTPUT); // deklarasi bluePin adalah output
pinMode(inputPIR, INPUT); // deklarasi sensor PIR as input
pinMode(buzzer, OUTPUT); // Pasang buzzer sebagai output
keypad.addEventListener(keypadEvent); //add an event listener for this keypad
Serial.begin(9600);
mySerial.begin(9600);
}
void loop(){
keypad.getKey();
PIR_val = digitalRead(inputPIR); // membaca input value
if(armed == true){
if (PIR_val == HIGH) { // mengecek apakah input PIR sensor HIGH
if (pirState == LOW) {
// alarm menyala
Serial.println(“Motion detected!”);
blink = true; // Aktivasi lampu merah
digitalWrite(buzzer, HIGH); // Aktivasi buzzer
delay(15000); //Durasi buzzer menyala
digitalWrite(buzzer,LOW); //Matikan buzzer
// Kita hanya mau mencetak perubahan output, bukan kondisi sekarang
pirState = HIGH;
makeCall(); //menelpon nomor yang ditentukan
}
} else {
if (pirState == HIGH) {
// gerakan tidak terdeteksi lagi
Serial.println(“Motion ended!”);
// Kita hanya mau mencetak perubahan output, bukan kondisi sekarang
pirState = LOW;
}
}
if(blink == true){
digitalWrite(redPin, HIGH); // LED merah menyala
delay(500);
digitalWrite(redPin, LOW); // LED merah padam
delay(500);
}
}
}
//take care of some special events
void keypadEvent(KeypadEvent eKey){
switch (keypad.getState()){
case PRESSED:
Serial.print(“Pressed: “);
Serial.println(eKey);
switch (eKey){
case ‘*’: guessPassword(); break;
default:
password.append(eKey);
}
}
}
void guessPassword(){
if (password.evaluate()){ //evaluasi password yang dimasukkan
digitalWrite(bluePin,HIGH);
Serial.println(“Right”); //password benar
delay(3000);
digitalWrite(bluePin,LOW);
password.reset();
digitalWrite(buzzer, LOW);
if(armed == false){ //ganti mode
armed = true;
PIR_val = LOW;
}
else{
armed = false;
}
}else{
digitalWrite(redPin,HIGH);
Serial.println(“Wrong”); //password salah
delay(3000);
digitalWrite(redPin,LOW);
password.reset();
digitalWrite(buzzer, HIGH);
delay(1000);
digitalWrite(buzzer, LOW);
delay(1000);
digitalWrite(buzzer, HIGH);
delay(1000);
digitalWrite(buzzer, LOW);
delay(1000);
digitalWrite(buzzer, HIGH);
delay(1000);
digitalWrite(buzzer, LOW);
}
}
void makeCall()
{
Serial.println(“Initializing…”); // Cetak pesan mulai
delay(1000);
mySerial.println(“AT”); // Test handshake
updateSerial();
mySerial.println(“ATD+628112183331”); // telpon nomor
updateSerial();
delay(20000); // tunggu 20 detik
mySerial.println(“ATH”); // tutup telpon
updateSerial();
}
void updateSerial()
{
delay(500);
while (Serial.available())
{
mySerial.write(Serial.read()); // Meneruskan yang diterima Serial ke Serial Port Software
}
while(mySerial.available())
{
Serial.write(mySerial.read()); // Meneruskan yang diterima Serial Port Software ke Serial
}
}
9. Pengujian
Pengujian sistem dilakukan secara bertahap, yang dibagi menjadi 2 tahap berbeda, yaitu:
- Component Testing
Testing per komponen yang terdapat dalam perangkat sistem.
- Integration Testing
Testing komponen yang sudah disatukan sebagai keseluruhan sistem.
Metode pengujian dilakukan melalui 2 metode, yaitu white box testing (dengan melihat kode) dan black box testing (tanpa melihat kode).
Untuk setiap testing, 2 metode tersebut digunakan secara bergantian sesuai kebutuhan penguji.
- Component Testing
Tahapan ini dilakukan dengan menguji setiap komponen yang menjadi perangkat penyusun sistem, yaitu:
-
- 2 buah LED
- Keypad
- PIR Sensor + Buzzer
- GSM Module
Masing-masing pengujian dilakukan dengan tepat 1 buah kode untuk setiap komponennya, dan tanpa menggunakan komponen lain. Keberhasilan pengujian dinilai dari kesesuaian perilaku komponen dengan kode uji.
Hasil pengujian:
- 2 buah LED: Berhasil
Diuji dengan mengedipkan lampu LED setiap 1 detik.
- Keypad: Berhasil
Diuji dengan melihat keluaran keypad yang tepat pada serial monitor.
- PIR Sensor + Buzzer: Berhasil
Khusus untuk kedua komponen ini, dilakukan pengujian secara bersamaan. Diuji dengan melihat keluaran buzzer sesuai masukan sensor PIR. Menyala bila mendeteksi gerakan, dan sebaliknya.
- GSM Module: Berhasil
Khusus untuk komponen ini, dilakukan 2 buah pengujian. Pertama, untuk mengirimkan SMS. Kedua, untuk menelpon nomor telepon di telepon genggam yang berbeda.
- Integration Testing
Pengujian integrasi dilakukan untuk menguji cara kerja keseluruhan sistem saat seluruh komponen sudah saling terhubung.
Dilakukan 5 kali pengujian untuk melihat perilaku dan fungsionalitas sistem, dengan hasil sebagai berikut.
- Tidak berhasil
Penyebab: Telepon genggam yang ditelpon oleh sistem tidak menunjukkan telepon dari sistem. Ternyata, telepon genggam tersebut sedang padam.
- Berhasil
- Tidak berhasil
Penyebab: Terdapat masalah pada GSM module, dan dilakukan component testing ulang untuk GSM module. Masalah berhasil diperbaiki di pengujian berikutnya.
- Berhasil
- Berhasil
Terlihat bahwa satu-satunya masalah yang ada pada pengujian sistem keseluruhan berada pada komponen modul GSM, yang setelah satu masalah berhasil bekerja sesuai standar yang ditentukan.
Setelah 5 kali pengujian, kinerja sistem direkam sebagai salah satu konten laporan dan untuk demo. Sistem berhasil bekerja sesuai yang diharapkan, dari bagian awal sampai akhir.
Dokumentasi pengujian terdapat pada video dibawah ini:





Video

