Keamanan adalah perhatian utama dalam kehidupan kita sehari-hari, dan kunci digital telah menjadi bagian penting dari sistem keamanan ini. Salah satu kunci kode digital tersebut ditiru dalam proyek ini dengan menggunakan papan arduino dan keypad matriks.
Komponen
- Arduino
- Modul Keypad
- Bel
- LCD 16x2
- BC547 Transistor
- Resistor (1k)
- Papan roti
- Kekuasaan
- Menghubungkan kabel
Dalam rangkaian ini kami telah menggunakan teknik multiplexing untuk antarmuka keypad untuk memasukkan kata sandi ke dalam sistem. Disini kami menggunakan keypad 4x4 yang berisi 16 tombol. Jika kita ingin menggunakan 16 kunci maka kita membutuhkan 16 pin untuk koneksi ke arduino tetapi dalam teknik multiplexing kita hanya perlu menggunakan 8 pin untuk menghubungkan 16 kunci. Sehingga ini adalah cara cerdas untuk membuat antarmuka modul keypad.
Teknik Multiplexing: Teknik multiplexing adalah cara yang sangat efisien untuk mengurangi jumlah pin yang digunakan mikrokontroler untuk memberikan masukan atau kata sandi atau angka. Pada dasarnya teknik ini digunakan dalam dua cara - satu pemindaian baris dan yang lainnya adalah pemindaian titik dua. Namun dalam proyek berbasis arduino ini kami telah menggunakan perpustakaan tombol sehingga kami tidak perlu membuat kode multiplexing untuk sistem ini. Kami hanya perlu menggunakan perpustakaan keypad untuk memberikan input.
Deskripsi Sirkuit
Rangkaian proyek ini sangat sederhana yang berisi Arduino, modul keypad, buzzer dan LCD. Arduino mengontrol proses lengkap seperti mengambil modul keypad bentuk kata sandi, membandingkan kata sandi, mengarahkan buzzer dan mengirim status ke layar LCD. Keypad digunakan untuk mengambil sandi. Buzzer digunakan untuk indikasi dan LCD digunakan untuk menampilkan status atau pesan di atasnya. Buzzer digerakkan dengan menggunakan transistor NPN.
Pin Kolom modul keypad terhubung langsung ke pin 4, 5, 6, 7 dan pin Baris terhubung ke 3, 2, 1, 0 dari arduino uno. LCD 16x2 dihubungkan dengan Arduino dalam mode 4-bit. Pin kontrol RS, RW dan En terhubung langsung ke pin arduino 13, GND dan 12. Dan pin data D4-D7 terhubung ke pin 11, 10, 9 dan 8 arduino. Dan satu buzzer dihubungkan pada pin 14 (A1) arduino melalui transistor BC547 NPN.
Kerja
Kami telah menggunakan EEPROM arduino yang ada di dalamnya untuk menyimpan kata sandi, jadi ketika kami menjalankan rangkaian ini pertama kali program membaca data sampah dari EEPROM arduino yang ada di dalamnya dan membandingkannya dengan kata sandi yang dimasukkan dan memberi pesan pada LCD bahwa Akses Ditolak karena kata sandi tidak cocok. Untuk mengatasi masalah ini kita perlu mengatur kata sandi default untuk pertama kalinya dengan menggunakan pemrograman yang diberikan di bawah ini:
untuk (int j = 0; j <4; j ++) EEPROM.write (j, j + 49);
lcd.print ("Masukkan Kode Sandi Ur:"); lcd.setCursor (0,1); untuk (int j = 0; j <4; j ++) pass = EEPROM.read (j);
Ini akan mengatur sandi "1234" ke EEPROM dari Arduino.
Setelah menjalankannya pertama kali kita perlu menghapus ini dari program dan sekali lagi menulis kode ke arduino dan menjalankan. Sekarang sistem Anda akan berjalan dengan baik. Dan untuk kedua kalinya, sandi yang digunakan sekarang adalah "1234". Sekarang Anda dapat mengubahnya dengan menekan tombol # dan kemudian masukkan kata sandi Anda saat ini dan kemudian masukkan kata sandi baru Anda.
Ketika Anda memasukkan kata sandi, sistem akan membandingkan kata sandi yang Anda masukkan dengan kata sandi yang disimpan di EEPROM arduino. Jika terjadi kecocokan maka LCD akan menampilkan “akses diberikan” dan jika password salah maka LCD akan “Access Denied” dan bel terus menerus berbunyi bip beberapa saat. Dan bel juga berbunyi bip satu kali setiap kali pengguna menekan tombol apa saja dari keypad.
Deskripsi Pemrograman
Dalam kode kami telah menggunakan perpustakaan keypad untuk menghubungkan keypad dengan arduino.
#include
const byte ROWS = 4; // empat baris const byte COLS = 4; // empat kolom char hexaKeys = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', ' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins = {3, 2, 1, 0}; // sambungkan ke pinout baris dari byte keypad colPins = {4, 5, 6, 7}; // menyambungkan ke pinout kolom keypad // menginisialisasi instance kelas NewKeypad Keypad customKeypad = Keypad (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
Kami telah menyertakan perpustakaan LCD untuk antarmuka LCD dan untuk antarmuka EEPROM kami telah menyertakan perpustakaan EEPROM.h., Dan kemudian menginisialisasi variabel dan pin yang ditentukan untuk komponen.
#define buzzer 15 LiquidCrystal lcd (13,12,11,10,9,8); sandi char; char pass, pass1; int i = 0; char customKey = 0;
Dan kemudian kami menginisialisasi LCD dan memberikan arahan ke pin dalam fungsi pengaturan
void setup () {lcd.begin (16,2); pinMode (led, OUTPUT); pinMode (buzzer, OUTPUT); pinMode (m11, OUTPUT); pinMode (m12, OUTPUT); lcd.print ("Elektronik"); lcd.setCursor (0,1); lcd.print ("Kunci Keypad"); penundaan (2000); lcd.clear (); lcd.print ("Masukkan Kode Sandi Ur:"); lcd.setCursor (0,1);
Setelah ini kita membaca fungsi keypad in loop
customKey = customKeypad.getKey (); jika (customKey == '#') change (); jika (customKey) {password = customKey; lcd.print (customKey); berbunyi(); }
Dan kemudian bandingkan kata sandi dengan menyimpan kata sandi menggunakan metode perbandingan string.
jika (i == 4) {penundaan (200); untuk (int j = 0; j <4; j ++) pass = EEPROM.read (j); if (! (strncmp (password, pass, 4))) {digitalWrite (led, HIGH); berbunyi(); lcd.clear (); lcd.print ("Kode Sandi Diterima"); penundaan (2000); lcd.setCursor (0,1); lcd.print ("#. Ubah Kode Sandi"); penundaan (2000); lcd.clear (); lcd.print ("Masukkan Kode Sandi:"); lcd.setCursor (0,1); i = 0; digitalWrite (led, LOW); }
Ini adalah fungsi perubahan kata sandi dan fungsi bip bel
batal perubahan () {int j = 0; lcd.clear (); lcd.print ("UR Current Passk"); lcd.setCursor (0,1); while (j <4) {char key = customKeypad.getKey (); jika (kunci) {pass1 = kunci; lcd.print (kunci); void bip () {digitalWrite (buzzer, HIGH); penundaan (20); digitalWrite (buzzer, LOW); }