Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Membuat Sistem Keamanan & Alarm Arduino – Tutorial Langkah demi Langkah

Dalam proyek ini kita akan belajar cara membuat Sistem Keamanan dan Alarm Arduino. Anda dapat menonton video berikut atau membaca tutorial tulisan di bawah ini.

Ringkasan

Alarm aktif 10 detik setelah menekan tombol A. Untuk mendeteksi objek menggunakan sensor ultrasonik, dan setelah alarm mendeteksi sesuatu, buzzer mulai mengeluarkan suara. Untuk menghentikan alarm kita perlu memasukkan kata sandi 4 digit. Kata sandi default adalah 1234 tetapi kita juga memiliki kemungkinan untuk mengubahnya.

Membuat Sistem Keamanan & Alarm Arduino – Tutorial Langkah demi Langkah

Dengan menekan tombol B kita memasuki menu pengubahan kata sandi di mana pertama kita perlu memasukkan kata sandi saat ini untuk melanjutkan dan kemudian memasukkan kata sandi baru 4 digit. Setelah kata sandi diubah, kalian tidak dapat menghentikan alarm selain 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. Tentu saja, kita membutuhkan papan Arduino, sensor ultrasonik, tampilan LCD, buzzer dan keypad 4×4.

Membuat Sistem Keamanan & Alarm Arduino – Tutorial Langkah demi Langkah

Anda dapat mendapatkan komponen yang diperlukan untuk proyek Arduino ini dari tautan di bawah ini:

  • Keypad ……………………………………..
  • LCD 16×2 ………………………………….
  • Sensor Ultrasonik ………………………
  • Buzzer ………………………………………
  • Papan Arduino …………………………..
  • Papan Roti dan Kabel Jumper ………

Skematis Rangkaian Sistem Alarm Arduino


Berikut adalah skematis rangkaian.

Membuat Sistem Keamanan & Alarm Arduino – Tutorial Langkah demi Langkah

Jadi untuk buzzer kita hanya membutuhkan satu pin tetapi yang mendukung PWM. Keypad 4×4 memiliki 8 pin, 4 di antaranya untuk baris dan 4 untuk kolom keypad. Setiap tombol sebenarnya adalah saklar tekan yang membuat sambung pendek antara satu baris dan kolom saat ditekan.

Membuat Sistem Keamanan & Alarm Arduino – Tutorial Langkah demi Langkah

Jadi, misalnya, jika kita mengatur baris 1 ke low, dan semua kolom ke high, saat kita menekan, misalnya, tombol 3, karena sambung pendek antara dua garis, kolom 3 akan turun ke low sehingga dalam kasus ini kita dapat mendaftarkan bahwa tombol 3 telah ditekan.

Adalah dua komponen lain dalam proyek ini, sensor ultrasonik dan tampilan LCD, Anda dapat memeriksa tutorial terperinci saya sebelumnya tentang cara menghubungkan dan menggunakannya.

Kode Sumber Sistem Alarm Arduino


Selanjutnya mari kita lihat kode Arduino. Karena kode cukup panjang, untuk pemahaman yang lebih baik, saya akan memposting kode sumber program dalam bagian-bagian dengan deskripsi untuk setiap bagian. Dan di akhir artikel ini saya akan memposting kode sumber lengkap.

Jadi kita perlu menyertakan perpustakaan LiquidCrystal standar untuk LCD dan perpustakaan Keypad yang perlu diinstal tambahan. Kemudian kita perlu mendefinisikan pin buzzer dan sensor ultrasonik, mendefinisikan beberapa variabel yang diperlukan untuk program, mendefinisikan 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 }

Di bagian setup, kita hanya perlu menginisialisasi LCD dan menentukan mode pin untuk buzzer dan sensor ultrasonik.

Di bagian loop, pertama kita memeriksa apakah alarm aktif atau tidak. Jadi jika alarm tidak aktif, di LCD kita akan memiliki layar awal 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 ditekan dan jika itu tombol A, buzzer akan menghasilkan suara selama 200 milidetik dan variabel activateAlarm akan menjadi benar.

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

Dalam kasus itu di LCD kita akan mencetak pesan “Alarm will be activated in”, dan menggunakan loop while kita akan membuat hitung mundur 9 detik sebelum alarm diaktifkan. Kemudian pesan “Alarm Activated” akan muncul dan kita akan mengukur jarak awal dari perangkat alarm kita ke objek di depan.

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

Jadi langkah berikutnya adalah sensor ultrasonik akan terus memeriksa apakah jarak yang diukur saat ini lebih kecil dari jarak awal, dikoreksi dengan nilai 10 cm, dan jika itu benar berarti objek telah muncul di depan sensor dan alarm akan diaktifkan. Fungsi tone() akan mengaktifkan buzzer dan fungsi khusus enterPassword() akan dipanggil.

if (alarmActivated == true){ currentDistance = getDistance() + 10; if ( currentDistance < initialDistance) { tone(buzzer, 1000); // Send 1KHz sound signal lcd.clear(); enterPassword(); } }

Fungsi khusus ini akan mencetak pesan bahwa alarm aktif dan kita perlu memasukkan kata sandi untuk menghentikan alarm. Jadi menggunakan loop while berikutnya kita terus memeriksa apakah kita telah menekan tombol pada keypad, dan setiap penekanan tombol ditambahkan ke variabel tempPassword. Jika kita memasukkan lebih dari 4 digit atau menekan tombol sharp digit yang sebelumnya dimasukkan akan dihapus sehingga kita dapat mengetiknya lagi dari awal.

void enterPassword() { int k=5; tempPassword = ""; activated = true; lcd.clear(); lcd.setCursor(0,0); lcd.print(" *** ALARM *** "); lcd.setCursor(0,1); lcd.print("Pass>"); while(activated) { keypressed = myKeypad.getKey(); if (keypressed != NO_KEY){ if (keypressed == '0' || keypressed == '1' || keypressed == '2' || keypressed == '3' || keypressed == '4' || keypressed == '5' || keypressed == '6' || keypressed == '7' || keypressed == '8' || keypressed == '9' ) { tempPassword += keypressed; lcd.setCursor(k,1); lcd.print("*"); k++; } } if (k > 9 || keypressed == '#') { tempPassword = ""; k=5; lcd.clear(); lcd.setCursor(0,0); lcd.print(" *** ALARM *** "); lcd.setCursor(0,1); lcd.print("Pass>"); } if ( keypressed == '*') { if ( tempPassword == password ) { activated = false; alarmActivated = false; noTone(buzzer); screenOffMsg = 0; } else if (tempPassword != password) { lcd.setCursor(0,1); lcd.print("Wrong! Try Again"); delay(2000); lcd.clear(); lcd.setCursor(0,0); lcd.print(" *** ALARM *** "); lcd.setCursor(0,1); lcd.print("Pass>"); } } } }

Di sisi lain, jika kita menekan tombol bintang, kita akan memeriksa apakah kata sandi yang saat ini dimasukkan sama dengan kata sandi yang awalnya diatur. Jika benar alarm akan dinonaktifkan, buzzer akan berhenti menghasilkan suara dan kita akan kembali ke layar awal. Namun jika kata sandi yang kita masukkan salah pesan “Wrong! Try Again!” akan muncul dan kita harus mencoba memasukkan kata sandi yang benar lagi.

Untuk mengubah kata sandi kita menggunakan metode yang serupa. Di sini pertama kita perlu memasukkan kata sandi saat ini agar dapat mengatur kata sandi baru.

else if (keypressed =='B') { lcd.clear(); int i=1; tone(buzzer, 2000, 100); tempPassword = ""; lcd.setCursor(0,0); lcd.print("Current Password"); lcd.setCursor(0,1); lcd.print(">"); passChangeMode = true; passChanged = true; while(passChanged) { keypressed = myKeypad.getKey(); if (keypressed != NO_KEY){ if (keypressed == '0' || keypressed == '1' || keypressed == '2' || keypressed == '3' || keypressed == '4' || keypressed == '5' || keypressed == '6' || keypressed == '7' || keypressed == '8' || keypressed == '9' ) { tempPassword += keypressed; lcd.setCursor(i,1); lcd.print("*"); i++; tone(buzzer, 2000, 100); } } if (i > 5 || keypressed == '#') { tempPassword = ""; i=1; lcd.clear(); lcd.setCursor(0,0); lcd.print("Current Password"); lcd.setCursor(0,1); lcd.print(">"); } if ( keypressed == '*') { i=1; tone(buzzer, 2000, 100); if (password == tempPassword) { tempPassword=""; lcd.clear(); lcd.setCursor(0,0); lcd.print("Set New Password"); lcd.setCursor(0,1); lcd.print(">"); while(passChangeMode) { keypressed = myKeypad.getKey(); if (keypressed != NO_KEY){ if (keypressed == '0' || keypressed == '1' || keypressed == '2' || keypressed == '3' || keypressed == '4' || keypressed == '5' || keypressed == '6' || keypressed == '7' || keypressed == '8' || keypressed == '9' ) { tempPassword += keypressed; lcd.setCursor(i,1); lcd.print("*"); i++; tone(buzzer, 2000, 100); } } if (i > 5 || keypressed == '#') { tempPassword = ""; i=1; tone(buzzer, 2000, 100); lcd.clear(); lcd.setCursor(0,0); lcd.print("Set New Password"); lcd.setCursor(0,1); lcd.print(">"); } if ( keypressed == '*') { i=1; tone(buzzer, 2000, 100); password = tempPassword; passChangeMode = false; passChanged = false; screenOffMsg = 0; } } } } } } }

Berikut adalah kode sumber lengkap dari Sistem Alarm Arduino:

/* * Arduino Security and Alarm System * * by Dejan Nedelkovski, * www.HowToMechatronics.com * */ #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 } void loop() { 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; } if (alarmActivated == true){ currentDistance = getDistance() + 10; if ( currentDistance < initialDistance) { tone(buzzer, 1000); // Send 1KHz sound signal lcd.clear(); enterPassword(); } } 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; } else if (keypressed =='B') { lcd.clear(); int i=1; tone(buzzer, 2000, 100); tempPassword = ""; lcd.setCursor(0,0); lcd.print("Current Password"); lcd.setCursor(0,1); lcd.print(">"); passChangeMode = true; passChanged = true; while(passChanged) { keypressed = myKeypad.getKey(); if (keypressed != NO_KEY){ if (keypressed == '0' || keypressed == '1' || keypressed == '2' || keypressed == '3' || keypressed == '4' || keypressed == '5' || keypressed == '6' || keypressed == '7' || keypressed == '8' || keypressed == '9' ) { tempPassword += keypressed; lcd.setCursor(i,1); lcd.print("*"); i++; tone(buzzer, 2000, 100); } } if (i > 5 || keypressed == '#') { tempPassword = ""; i=1; lcd.clear(); lcd.setCursor(0,0); lcd.print("Current Password"); lcd.setCursor(0,1); lcd.print(">"); } if ( keypressed == '*') { i=1; tone(buzzer, 2000, 100); if (password == tempPassword) { tempPassword=""; lcd.clear(); lcd.setCursor(0,0); lcd.print("Set New Password"); lcd.setCursor(0,1); lcd.print(">"); while(passChangeMode) { keypressed = myKeypad.getKey(); if (keypressed != NO_KEY){ if (keypressed == '0' || keypressed == '1' || keypressed == '2' || keypressed == '3' || keypressed == '4' || keypressed == '5' || keypressed == '6' || keypressed == '7' || keypressed == '8' || keypressed == '9' ) { tempPassword += keypressed; lcd.setCursor(i,1); lcd.print("*"); i++; tone(buzzer, 2000, 100); } } if (i > 5 || keypressed == '#') { tempPassword = ""; i=1; tone(buzzer, 2000, 100); lcd.clear(); lcd.setCursor(0,0); lcd.print("Set New Password"); lcd.setCursor(0,1); lcd.print(">"); } if ( keypressed == '*') { i=1; tone(buzzer, 2000, 100); password = tempPassword; passChangeMode = false; passChanged = false; screenOffMsg = 0; } } } } } } } } } void enterPassword() { int k=5; tempPassword = ""; activated = true; lcd.clear(); lcd.setCursor(0,0); lcd.print(" *** ALARM *** "); lcd.setCursor(0,1); lcd.print("Pass>"); while(activated) { keypressed = myKeypad.getKey(); if (keypressed != NO_KEY){ if (keypressed == '0' || keypressed == '1' || keypressed == '2' || keypressed == '3' || keypressed == '4' || keypressed == '5' || keypressed == '6' || keypressed == '7' || keypressed == '8' || keypressed == '9' ) { tempPassword += keypressed; lcd.setCursor(k,1); lcd.print("*"); k++; } } if (k > 9 || keypressed == '#') { tempPassword = ""; k=5; lcd.clear(); lcd.setCursor(0,0); lcd.print(" *** ALARM *** "); lcd.setCursor(0,1); lcd.print("Pass>"); } if ( keypressed == '*') { if ( tempPassword == password ) { activated = false; alarmActivated = false; noTone(buzzer); screenOffMsg = 0; } else if (tempPassword != password) { lcd.setCursor(0,1); lcd.print("Wrong! Try Again"); delay(2000); lcd.clear(); lcd.setCursor(0,0); lcd.print(" *** ALARM *** "); lcd.setCursor(0,1); lcd.print("Pass>"); } } } } // Custom function for the Ultrasonic sensor long getDistance(){ //int i=10; //while( i<=10 ) { // Clears the trigPin digitalWrite(trigPin, LOW); delayMicroseconds(2); // Sets the trigPin on HIGH state for 10 micro seconds digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Reads the echoPin, returns the sound wave travel time in microseconds duration = pulseIn(echoPin, HIGH); // Calculating the distance distance = duration*0.034/2; //sumDistance += distance; //} //int averageDistance= sumDistance/10; return distance; } 

Sentuhan Akhir


Untuk menyelesaikan proyek ini saya menggunakan kotak listrik plastik di mana saya memasang semua komponen dan menghubungkannya bersama.

Membuat Sistem Keamanan & Alarm Arduino – Tutorial Langkah demi Langkah

Itu saja, saya harap Anda menikmati proyek ini dan jangan ragu untuk bertanya di bagian komentar di bawah ini.

Proses manufaktur

  1. Sistem Absensi RFID berbasis Arduino yang Andalkan dengan Python
  2. Buat Animasi LCD dan Game Menarik dengan Arduino UNO
  3. SERENA: Sistem Alarm Kustom Arduino Mega 2560 dengan Layar Sentuh TFT LCD
  4. Mengevaluasi Keamanan Sistem Alarm dengan Arduino dan Modul RF
  5. Detektor Frekuensi Audio Arduino – Ukur Puncak Suara Terkeras dengan Modul Sensitivitas Tinggi
  6. Membangun Sistem Otomasi & Keamanan Rumah Pintar dengan 1Sheeld
  7. Tic Tac Toe Arduino dengan Matriks LED MAX7219 dan Kotak Kardus
  8. Buat Voltmeter DIY dengan Arduino dan Layar Nokia 5110 – Panduan Langkah demi Langkah
  9. Membuat Timer Hitung Mundur Arduino yang Andalan dengan Layar 7-Segmen SparkFun
  10. Sistem Ventilasi Pintar Berbasis Arduino: Pengendalian Kelembaban