Dalam proyek ini kita akan belajar cara membuat Sistem Keamanan dan Alarm Arduino. Anda dapat menonton video berikut atau membaca tutorial tertulis di bawah ini.
Ringkasan
Alarm aktif dalam 10 detik setelah menekan tombol A. Untuk mendeteksi objek menggunakan sensor ultrasonik, dan begitu alarm mendeteksi sesuatu, bel mulai mengeluarkan suara. Untuk menghentikan alarm, kita perlu memasukkan kata sandi 4 digit. Kata sandi yang telah ditetapkan adalah 1234 tetapi kami juga memiliki kemungkinan untuk mengubahnya.
Dengan menekan tombol B kita masuk ke menu ubah kata sandi di mana pertama-tama kita harus memasukkan kata sandi saat ini untuk melanjutkan dan kemudian memasukkan kata sandi 4 digit yang baru. Setelah kata sandi diubah, saat berikutnya kami mengaktifkan alarm, kami hanya dapat menghentikan alarm dengan memasukkan kata sandi baru. Jika kita memasukkan kata sandi yang salah, kita akan mendapatkan pesan bahwa kita perlu mencoba lagi.
Komponen yang Diperlukan
Sekarang mari kita lihat komponen yang diperlukan untuk proyek ini. Jelas, kita membutuhkan papan Arduino, sensor ultrasonik, layar LCD, buzzer, dan keypad 4x4.
Anda bisa mendapatkan komponen yang diperlukan untuk Proyek Arduino ini dari link di bawah:
Keypad …………………………………..
LCD 16×2 ………………………………….
Sensor Ultrasonik ………………………
Buzzer ………………………………………
Dewan Arduino …………………………..
Breadboard dan Kabel Lompat ………
Skema Sirkuit Sistem Alarm Arduino
Berikut skema rangkaiannya.
Jadi untuk buzzer kita hanya membutuhkan satu pin tetapi satu dengan dukungan PWM. Keypad 4x4 memiliki 8 pin, 4 pin untuk baris dan 4 pin untuk kolom keypad. Setiap tombol sebenarnya adalah sakelar tombol tekan yang membuat hubungan pendek antara satu baris dan kolom saat ditekan.
Jadi, misalnya jika kita mengatur baris 1 baris rendah, dan semua baris kolom tinggi, ketika kita akan menekan, misalnya tombol 3, karena pendek antara dua baris, baris kolom 3 akan turun ke rendah sehingga dalam kasus seperti itu kita dapat mendaftarkan bahwa tombol 3 telah ditekan.
Untuk dua komponen lain dalam proyek ini, sensor ultrasonik dan layar LCD, Anda dapat melihat tutorial terperinci saya sebelumnya tentang cara menghubungkan dan menggunakannya.
Kode Sumber Sistem Alarm Arduino
Selanjutnya mari kita lihat kode Arduino. Karena kodenya sedikit lebih panjang, untuk pemahaman yang lebih baik, saya akan memposting kode sumber program di bagian dengan deskripsi untuk setiap bagian. Dan di akhir artikel ini saya akan memposting source code lengkapnya.
Jadi kita perlu menyertakan library LiquidCrystal standar untuk LCD dan library Keypad yang perlu diinstal tambahan. Kemudian kita perlu menentukan buzzer dan pin sensor ultrasonik, menentukan beberapa variabel yang diperlukan untuk program, menentukan tombol keypad, serta membuat dua objek untuk keypad dan LCD.
#include <LiquidCrystal.h> // includes the LiquidCrystal Library
#include <Keypad.h>
#define buzzer 8
#define trigPin 9
#define echoPin 10
long duration;
int distance, initialDistance, currentDistance, i;
int screenOffMsg =0;
String password="1234";
String tempPassword;
boolean activated = false; // State of the alarm
boolean isActivated;
boolean activateAlarm = false;
boolean alarmActivated = false;
boolean enteredPassword; // State of the entered password to stop the alarm
boolean passChangeMode = false;
boolean passChanged = false;
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keypressed;
//define the cymbols on the buttons of the keypads
char keyMap[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {14, 15, 16, 17}; //Row pinouts of the keypad
byte colPins[COLS] = {18, 19, 20, 21}; //Column pinouts of the keypad
Keypad myKeypad = Keypad( makeKeymap(keyMap), rowPins, colPins, ROWS, COLS);
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)
void setup() {
lcd.begin(16,2);
pinMode(buzzer, OUTPUT); // Set buzzer as an output
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
}Code language: Arduino (arduino)
Di bagian setup, kita hanya perlu menginisialisasi LCD dan menentukan mode pin untuk buzzer dan sensor ultrasonik.
Pada bagian loop, pertama kita cek apakah alarm sudah aktif atau belum. Jadi jika alarm tidak diaktifkan, pada LCD kita akan memiliki layar beranda program yang menawarkan dua opsi, A untuk mengaktifkan alarm dan B untuk mengubah kata sandi. Kemudian menggunakan fungsi myKeypad.getKey() kita membaca tombol mana dari keypad yang telah ditekan dan jika itu adalah tombol A, buzzer akan mengeluarkan suara 200 milidetik dan variabel ActivateAlarm akan menjadi true.
if (!alarmActivated) {
if (screenOffMsg == 0 ){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("A - Activate");
lcd.setCursor(0,1);
lcd.print("B - Change Pass");
screenOffMsg = 1;
}
keypressed = myKeypad.getKey();
if (keypressed =='A'){ //If A is pressed, activate the alarm
tone(buzzer, 1000, 200);
activateAlarm = true;
}Code language: Arduino (arduino)
Dalam hal ini pada LCD kita akan mencetak pesan “Alarm akan diaktifkan dalam”, dan dengan menggunakan while loop kita akan membuat hitungan mundur 9 detik sebelum alarm diaktifkan. Kemudian akan muncul pesan “Alarm Activated” dan kita akan mengukur jarak awal dari perangkat alarm kita dengan objek di seberangnya.
if (activateAlarm) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Alarm will be");
lcd.setCursor(0,1);
lcd.print("activated in");
int countdown = 9; // 9 seconds count down before activating the alarm
while (countdown != 0) {
lcd.setCursor(13,1);
lcd.print(countdown);
countdown--;
tone(buzzer, 700, 100);
delay(1000);
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Alarm Activated!");
initialDistance = getDistance();
activateAlarm = false;
alarmActivated = true;
}Code language: Arduino (arduino)
Jadi langkah selanjutnya adalah sensor ultrasonik akan terus-menerus memeriksa apakah jarak yang diukur saat ini lebih kecil dari jarak awal, dikoreksi dengan nilai 10 cm, dan jika itu benar berarti ada objek yang muncul di depan sensor dan alarm. akan diaktifkan. Fungsi tune() akan mengaktifkan buzzer dan fungsi kustom enterPassword() akan dipanggil.
if (alarmActivated == true){
currentDistance = getDistance() + 10;
if ( currentDistance < initialDistance) {
tone(buzzer, 1000); // Send 1KHz sound signal
lcd.clear();
enterPassword();
}
}Code language: Arduino (arduino)
Fungsi kustom ini akan mencetak pesan bahwa alarm diaktifkan dan kita perlu memasukkan kata sandi untuk menghentikan alarm. Jadi dengan menggunakan loop while berikutnya, kami terus-menerus memeriksa apakah kami telah menekan tombol pada keypad, dan setiap penekanan tombol ditambahkan ke variabel tempPassword. Jika kita memasukkan lebih dari 4 digit atau menekan tombol tajam, digit yang dimasukkan sebelumnya akan dihapus sehingga kita dapat mengetiknya lagi dari awal.
Di sisi lain, jika kita menekan tombol asterisk, kita akan memeriksa apakah kata sandi yang dimasukkan saat ini sama dengan kata sandi yang ditetapkan sebelumnya. Jika benar maka alarm akan dinonaktifkan, buzzer akan berhenti mengeluarkan suara dan kita akan kembali ke layar awal. Namun jika password yang kita masukkan salah akan muncul pesan “Wrong! Coba lagi!" akan muncul dan kita harus mencoba memasukkan sandi yang benar lagi.
Untuk mengubah kata sandi kami menggunakan metode serupa. Di sini pertama-tama kita harus memasukkan kata sandi saat ini agar dapat mengatur kata sandi baru.