Rangkaian Kunci Keamanan Sandi Menggunakan Keypad 4x4 dan Arduino

Coba Instrumen Kami Untuk Menghilangkan Masalah





Dalam posting ini kita akan membuat rangkaian kunci keamanan kata sandi, yang dapat diakses dengan kata sandi 6 digit. Lebih tepatnya itu adalah kata sandi alfa numerik.

Perangkat keras untuk Proyek ini

Kita akan menggunakan keypad 4x4, yang terdiri dari 0 hingga 9 nilai desimal, dua karakter khusus ‘#’ dan ‘*’ serta huruf A ke D. Kombinasi karakter ini dapat digunakan sebagai sandi.



Arduino adalah otak dari sistem, sebuah relai dihubungkan dengan Arduino untuk mengaktifkan dan menonaktifkan, ketika kata sandi yang benar diperintahkan. Dua LED indikator digunakan di sini untuk menunjukkan status sistem kunci.

Jika Anda tidak terbiasa dengan keypad 4x4, silakan merujuk ke artikel saya sebelumnya, yang membahas secara komprehensif dasar-dasar keypad matriks 4x4



Proyek yang diusulkan memiliki desain perangkat keras yang cukup minimalis. Itu hanya terdiri dari keypad, relay, arduino dan beberapa LED, bahkan noob di arduino dapat melakukannya dengan mudah.

Satu-satunya bagian yang agak sulit dalam proyek ini adalah pengkodeannya, tidak perlu khawatir kode diberikan dalam proyek ini. Program harus ditulis sedemikian rupa sehingga, itu adalah bukti yang bodoh dan tidak ada pembajak yang dapat meretas sistem.

Tapi, hati-hati jika Anda mengekspos perangkat keras atau perangkat keras proyek ini dengan mudah diakses, relai dapat diretas dengan mudah. Jadi simpan proyek ini dalam sasis yang terlindungi dengan baik.

Bagaimana itu bekerja

Catatan: Resistor pembatas arus 4.7K harus dihubungkan ke basis transistor, yang tidak ditunjukkan dalam diagram.

Sekarang mari kita lihat bagaimana rangkaian kunci keamanan kata sandi Arduino ini berfungsi, silakan baca instruksi yang diberikan di bawah ini dengan hati-hati, untuk mengoperasikan rangkaian.

Diagram Sirkuit

Rangkaian Kunci Keamanan Sandi Arduino Menggunakan Keypad 4x4

Berikut adalah dua ilustrasi bagaimana antarmuka keyboard dan Arduino:

Hasil Uji Kunci Keamanan Sandi Arduino

• Ketika sirkuit dihidupkan, ia meminta kata sandi, Anda dapat melihat di monitor serial (monitor serial tidak wajib tetapi, dapat digunakan untuk tujuan pengujian).

• Masukkan kata sandi yang Anda masukkan dalam program sebelum menyusunnya.

• Saat Anda menekan tombol, LED hijau berkedip selama sepersepuluh detik, menunjukkan bahwa beberapa tombol ditekan oleh pengguna.

• Setelah Anda memasukkan kata sandi 6 digit, tekan 'D' di keypad yang berfungsi sebagai 'Enter'. Jika kata sandi Anda benar, relai diaktifkan, LED hijau AKTIF.

• Untuk menonaktifkan relai, tekan 'C' di keypad. Setelah selesai, LED hijau mati dan relai dinonaktifkan. Tidak ada kunci lain yang dapat menonaktifkan relai.

• Jika kata sandi yang dimasukkan oleh pengguna salah, maka LED merah menyala dan pengguna harus menunggu 30 detik untuk masuk ke percobaan berikutnya. Ketika 30 detik berakhir, LED merah mati, menginformasikan kepada pengguna bahwa, sistem siap untuk mendapatkan masukan dari pengguna.

• Jika relai dinonaktifkan setelah aktivasi berhasil, untuk mengaktifkan relai lagi, pengguna perlu memasukkan sandi lagi dan menekan 'D'.

Ini kasus khusus:

• Ketika kata sandi yang benar dimasukkan, relai akan diaktifkan dan setelah penonaktifan berhasil, ketika pengguna menekan salah satu tombol yang salah (bukan seluruh kata sandi), program mengenali sebagai kata sandi yang salah dan pengguna perlu menunggu 30 detik lagi. Jika ini adalah pembajak, itu akan menunda jumlah upaya yang dilakukan oleh pembajak.

• Saat penekanan tombol yang benar ditekan pada upaya pertama, barulah tombol tersebut memungkinkan untuk memasukkan tombol berikutnya. Ini hanya untuk penekanan tombol pertama saja dan bukan untuk semua penekanan tombol yang berurutan.

• Moto dari konsep yang dijelaskan di atas adalah untuk menunda jumlah upaya yang dilakukan oleh pembajak.

Kode Program:

//---------------------------------Program Developed by R.Girish--------------------------//
#include
const byte ROWS = 4
const byte COLS = 4
char pass[] = '123ABC' // 6 digit password only (no less or no more)
int OP=10
int green=12
int red=11
char key1
char key2
char key3
char key4
char key5
char key6
char dumpkey
char keyOK
char ok[]='D'
char offkey
char off[]='C'
int z
char keys[ROWS][COLS] =
{
{'D','#','0','*'},
{'C','9','8','7'},
{'B','6','5','4'},
{'A','3','2','1'}
}
byte rowPins[ROWS] = {6,7,8,9} //connect to the row pinouts of the keypad
byte colPins[COLS] = {2,3,4,5} //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS )
void setup()
{
Serial.begin(9600)
pinMode(OP,OUTPUT)
pinMode(green,OUTPUT)
pinMode(red,OUTPUT)
digitalWrite(OP,LOW)
}
void loop()
{
top:
Serial.println('')
Serial.println('[Press D = Enter]')
Serial.print('Enter the password: ')
key1=keypad.waitForKey()
if(key1 == pass[0])
{
digitalWrite(green,HIGH)
delay(100)
digitalWrite(green,LOW)
{
z=1
Serial.print('*')
goto A

}
}
lain
{
goto dump
}
UNTUK:
key2 = keypad.waitForKey ()
jika (key2 == lulus [1])
{
digitalWrite (hijau, TINGGI)
penundaan (100)
digitalWrite (hijau, RENDAH)
{
z = 2
Serial.print ('*')
pergi ke B
}
}
lain
{
goto dump
}
B:
key3 = keypad.waitForKey ()
jika (key3 == lulus [2])
{
digitalWrite (hijau, TINGGI)
penundaan (100)
digitalWrite (hijau, RENDAH)
{
z = 3
Serial.print ('*')
pergi ke C
}
}
lain
{
goto dump
}
C:
key4 = keypad.waitForKey ()
jika (key4 == lulus [3])
{
digitalWrite (hijau, TINGGI)
penundaan (100)
digitalWrite (hijau, RENDAH)
{
z = 4
Serial.print ('*')
pergi ke D
}
}
lain
{
goto dump
}
D:
key5 = keypad.waitForKey ()
jika (key5 == lulus [4])
{
digitalWrite (hijau, TINGGI)
penundaan (100)
digitalWrite (hijau, RENDAH)
{
z = 5
Serial.print ('*')
pergi ke E
}
}
lain
{
goto dump
}
AKU S:
key6 = keypad.waitForKey ()
jika (key6 == lulus [5])
{
digitalWrite (hijau, TINGGI)
penundaan (100)
digitalWrite (hijau, RENDAH)
{
z = 6
Serial.print ('*')
pergi ok
}
}
lain
{
goto dump
}
baik:
keyOK = keypad.waitForKey ()
jika (keyOK == ok [0])
{
digitalWrite (OP, HIGH)
digitalWrite (hijau, TINGGI)
Serial.println ('')
Serial.println ('Relay Activated, Tekan' C 'untuk Deactivate.n')
}
lain
{
Serial.println ('')
Serial.println ('Tekan' D 'untuk Masuk')
pergi ok
}
mati:
offkey = keypad.waitForKey ()
jika (offkey == off [0])
{
digitalWrite (OP, LOW)
digitalWrite (hijau, RENDAH)
Serial.println ('Relay Deactivated.n')
pergi ke atas
}
lain
{
Serial.println ('Tekan' C 'untuk Dinonaktifkan')
pergi
}
membuang:
jika (z == 0)
{
digitalWrite (hijau, TINGGI)
penundaan (100)
digitalWrite (hijau, RENDAH)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
goto error
}
jika (z == 1)
{
digitalWrite (hijau, TINGGI)
penundaan (100)
digitalWrite (hijau, RENDAH)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
goto error
}
jika (z == 2)
{
digitalWrite (hijau, TINGGI)
penundaan (100)
digitalWrite (hijau, RENDAH)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
goto error
}
jika (z == 3)
{
digitalWrite (hijau, TINGGI)
penundaan (100)
digitalWrite (hijau, RENDAH)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
goto error
}
jika (z == 4)
{
digitalWrite (hijau, TINGGI)
penundaan (100)
digitalWrite (hijau, RENDAH)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
goto error
}
jika (z == 5)
{
digitalWrite (hijau, TINGGI)
penundaan (100)
digitalWrite (hijau, RENDAH)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
goto error
}
kesalahan:
Serial.println ('')
Serial.print ('Kata sandi salah, Tunggu selama 30 detik.')
digitalWrite (merah, TINGGI)
penundaan (10000)
penundaan (10000)
penundaan (10000)
digitalWrite (merah, LOW)
pergi ke atas
}
// --------------------------------- Program yang Dikembangkan oleh R.Girish --------- ----------------- //

CATATAN: Untuk mengatur kata sandi: char pass [] = '123ABC' // 6 digit kata sandi saja (tidak kurang atau tidak lebih)
Ubah '123ABC' dengan password Anda sendiri, di dalam tanda kutip.

Pastikan password yang diatur dalam program HANYA 6 digit, tidak kurang atau tidak lebih tapi, tepat 6 digit. Jika tidak, program tidak akan berfungsi dengan benar.

Jika Anda memiliki keraguan lebih lanjut tentang rangkaian kunci keamanan kata sandi yang dijelaskan, jangan ragu untuk mempostingnya melalui komentar Anda




Sepasang: Sirkuit LED Sunrise Sunset Simulator Berikutnya: Sirkuit Pengontrol Motor Bluetooth