Litar Kunci Keselamatan Kata Laluan Menggunakan Pad Kekunci 4 × 4 dan Arduino

Cuba Instrumen Kami Untuk Menghapuskan Masalah





Dalam catatan ini kita akan membina litar kunci keselamatan kata laluan, yang dapat diakses dengan kata laluan 6 digit. Untuk lebih tepatnya ialah kata laluan angka alfa.

Perkakasan untuk Projek ini

Kami akan menggunakan pad kekunci 4x4, yang terdiri dari 0 hingga 9 nilai perpuluhan, dua watak khas ‘#’ dan ‘*’ dan huruf A hingga D. Kombinasi watak-watak ini boleh digunakan sebagai kata laluan.



Arduino adalah otak sistem, geganti dihubungkan dengan Arduino untuk mengaktifkan dan menyahaktifkan, apabila kata laluan yang betul diperintahkan. Dua LED penunjuk digunakan di sini untuk menunjukkan status sistem kunci.

Sekiranya anda tidak biasa dengan papan kekunci 4x4, sila rujuk artikel saya sebelumnya, yang telah dibincangkan secara menyeluruh asas pad kekunci matriks 4x4



Projek yang dicadangkan mempunyai reka bentuk perkakasan yang sangat minimalis. Ini hanya terdiri daripada papan kekunci, relay, arduino dan beberapa LED, bahkan noob di arduino dapat mencapainya dengan mudah.

Satu-satunya bahagian yang agak sukar dalam projek ini adalah pengekodan, tidak perlu risau kod diberikan dalam projek ini. Program ini harus ditulis sedemikian rupa sehingga, ini adalah bukti bodoh dan tidak ada perampas yang dapat menggodam sistem ini.

Tetapi, berhati-hatilah jika anda mendedahkan perkakasan atau perkakasan projek ini mudah diakses, geganti dapat digodam dengan mudah. Oleh itu, simpan projek ini di casis terlindung dengan baik.

Bagaimana ia berfungsi

Catatan: Perintang had 4.7K mesti disambungkan ke dasar transistor, yang tidak ditunjukkan dalam rajah.

Sekarang mari kita lihat bagaimana fungsi litar kunci keselamatan kata laluan Arduino ini, sila baca arahan yang diberikan di bawah dengan teliti, untuk mengendalikan litar.

Rajah Litar

Litar Kunci Keselamatan Kata Laluan Arduino Menggunakan Pad Kekunci 4x4

Berikut adalah dua ilustrasi bagaimana antara muka papan kekunci dan Arduino:

Keputusan Ujian Kunci Keselamatan Kata Laluan Arduino

• Apabila rangkaian dihidupkan, ia meminta kata laluan, anda dapat melihatnya di monitor bersiri (monitor bersiri tidak wajib tetapi, dapat digunakan untuk tujuan pengujian).

• Masukkan kata laluan yang anda masukkan dalam program sebelum menyusunnya.

• Semasa anda menekan kekunci, LED hijau berkedip sepersepuluh saat, menunjukkan bahawa beberapa kekunci ditekan oleh pengguna.

• Setelah anda memasukkan kata laluan 6 digit, tekan ‘D’ di papan kekunci yang berfungsi sebagai ‘Enter’. Sekiranya kata laluan anda betul, geganti akan diaktifkan, LED hijau menyala.

• Untuk mematikan relay, tekan ‘C’ di papan kekunci. Apabila ini selesai, LED hijau mati dan relay dinyahaktifkan. Tiada kunci lain yang boleh mematikan geganti.

• Sekiranya kata laluan yang dimasukkan oleh pengguna tidak betul, maka LED merah menyala dan pengguna harus menunggu 30 saat untuk memasuki percubaan seterusnya. Apabila 30 saat selesai, LED merah mati, memberitahu pengguna bahawa, sistem siap untuk mendapatkan input dari pengguna.

• Apabila geganti dinyahaktifkan setelah berjaya diaktifkan, untuk mengaktifkan geganti semula, pengguna perlu memasukkan kata laluan sekali lagi dan tekan 'D'.

Berikut adalah kes khas:

• Apabila kata laluan yang betul dimasukkan, geganti akan diaktifkan dan setelah penonaktifan berjaya, apabila pengguna menekan satu kekunci yang salah (bukan kata laluan keseluruhan), program mengenali kata laluan yang salah dan pengguna perlu menunggu 30 saat lagi. Sekiranya ini adalah perampas, ia akan melambatkan jumlah percubaan yang dilakukan oleh perampas.

• Apabila tekan kekunci yang betul ditekan pada percubaan pertama, barulah ia dapat memasukkan kekunci seterusnya. Ini hanya untuk penekanan kekunci pertama sahaja dan bukan untuk semua penekanan kekunci berturut-turut.

• Moto konsep yang dijelaskan di atas adalah menunda jumlah percubaan yang dilakukan oleh perampas.

Kod 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

}
}
yang lain
{
goto pembuangan
}
KE:
key2 = keypad.waitForKey ()
jika (key2 == lulus [1])
{
digitalWrite (hijau, TINGGI)
kelewatan (100)
digitalWrite (hijau, RENDAH)
{
z = 2
Cetakan bersiri ('*')
goto B
}
}
yang lain
{
goto pembuangan
}
B:
key3 = keypad.waitForKey ()
jika (key3 == lulus [2])
{
digitalWrite (hijau, TINGGI)
kelewatan (100)
digitalWrite (hijau, RENDAH)
{
z = 3
Cetakan bersiri ('*')
goto C
}
}
yang lain
{
goto pembuangan
}
C:
key4 = keypad.waitForKey ()
jika (key4 == lulus [3])
{
digitalWrite (hijau, TINGGI)
kelewatan (100)
digitalWrite (hijau, RENDAH)
{
z = 4
Cetakan bersiri ('*')
goto D
}
}
yang lain
{
goto pembuangan
}
D:
key5 = keypad.waitForKey ()
jika (key5 == lulus [4])
{
digitalWrite (hijau, TINGGI)
kelewatan (100)
digitalWrite (hijau, RENDAH)
{
z = 5
Cetakan bersiri ('*')
goto E
}
}
yang lain
{
goto pembuangan
}
ADALAH:
key6 = keypad.waitForKey ()
jika (key6 == lulus [5])
{
digitalWrite (hijau, TINGGI)
kelewatan (100)
digitalWrite (hijau, RENDAH)
{
z = 6
Cetakan bersiri ('*')
goto ok
}
}
yang lain
{
goto pembuangan
}
okey:
keyOK = keypad.waitForKey ()
jika (keyOK == ok [0])
{
digitalWrite (OP, TINGGI)
digitalWrite (hijau, TINGGI)
Serial.println ('')
Serial.println ('Relay Diaktifkan, Tekan' C 'untuk Nyahaktifkan.n')
}
yang lain
{
Serial.println ('')
Serial.println ('Tekan' D 'untuk Masuk')
goto ok
}
dimatikan:
offkey = keypad.waitForKey ()
jika (offkey == mati [0])
{
digitalWrite (OP, RENDAH)
digitalWrite (hijau, RENDAH)
Serial.println ('Relay Deactivated.n')
goto atas
}
yang lain
{
Serial.println ('Tekan' C 'untuk Menyahaktifkan')
pergi
}
pembuangan:
jika (z == 0)
{
digitalWrite (hijau, TINGGI)
kelewatan (100)
digitalWrite (hijau, RENDAH)
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
ralat goto
}
jika (z == 1)
{
digitalWrite (hijau, TINGGI)
kelewatan (100)
digitalWrite (hijau, RENDAH)
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
ralat goto
}
jika (z == 2)
{
digitalWrite (hijau, TINGGI)
kelewatan (100)
digitalWrite (hijau, RENDAH)
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
ralat goto
}
jika (z == 3)
{
digitalWrite (hijau, TINGGI)
kelewatan (100)
digitalWrite (hijau, RENDAH)
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
ralat goto
}
jika (z == 4)
{
digitalWrite (hijau, TINGGI)
kelewatan (100)
digitalWrite (hijau, RENDAH)
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
ralat goto
}
jika (z == 5)
{
digitalWrite (hijau, TINGGI)
kelewatan (100)
digitalWrite (hijau, RENDAH)
Cetakan bersiri ('*')
dumpkey = keypad.waitForKey ()
Cetakan bersiri ('*')
ralat goto
}
ralat:
Serial.println ('')
Serial.print ('Kata laluan salah, Tunggu selama 30 saat.')
digitalWrite (merah, TINGGI)
kelewatan (10000)
kelewatan (10000)
kelewatan (10000)
digitalWrite (merah, RENDAH)
goto atas
}
// --------------------------------- Program Dikembangkan oleh R.Girish --------- ----------------- //

CATATAN: Untuk menetapkan kata laluan: char pass [] = '123ABC' // kata laluan 6 digit sahaja (tidak kurang atau tidak lebih)
Tukar '123ABC' dengan kata laluan anda sendiri, di dalam tanda petik.

Pastikan kata laluan yang ditetapkan dalam program HANYA 6-digit, tidak kurang atau tidak lebih tetapi, tepat 6-digit. Jika tidak, program tidak akan berfungsi dengan betul.

Sekiranya anda mempunyai keraguan lebih lanjut mengenai litar kunci keselamatan kata laluan yang dijelaskan, jangan ragu untuk menghantarnya melalui komen anda




Sebelumnya: Litar LED Sunrise Sunset Simulator Seterusnya: Litar Pengawal Motor Bluetooth