Κύκλωμα κλειδώματος ασφαλείας κωδικού πρόσβασης χρησιμοποιώντας πληκτρολόγιο 4 × 4 και Arduino

Δοκιμάστε Το Όργανο Μας Για Την Εξάλειψη Των Προβλημάτων





Σε αυτήν την ανάρτηση πρόκειται να κατασκευάσουμε ένα κύκλωμα κλειδώματος ασφαλείας κωδικού πρόσβασης, στο οποίο μπορείτε να έχετε πρόσβαση με έναν 6ψήφιο κωδικό πρόσβασης. Για να είμαστε πιο ακριβείς, είναι άλφα αριθμητικός κωδικός πρόσβασης.

Υλικό για αυτό το έργο

Θα χρησιμοποιήσουμε το πληκτρολόγιο 4x4, το οποίο αποτελείται από 0 έως 9 δεκαδικές τιμές, δύο ειδικούς χαρακτήρες '#' και '*' και αλφάβητα Α έως Δ. Ο συνδυασμός αυτών των χαρακτήρων μπορεί να χρησιμοποιηθεί ως κωδικός πρόσβασης.



Το Arduino είναι ο εγκέφαλος του συστήματος, ένα ρελέ διασυνδέεται με το Arduino για ενεργοποίηση και απενεργοποίηση, όταν δοθεί εντολή για τον σωστό κωδικό πρόσβασης. Χρησιμοποιούνται δύο ενδεικτικές λυχνίες εδώ για να υποδείξουν την κατάσταση του συστήματος κλειδώματος.

Εάν δεν είστε εξοικειωμένοι με το πληκτρολόγιο 4x4, ανατρέξτε στο προηγούμενο άρθρο μου, το οποίο συζητήθηκε διεξοδικά βασικά στοιχεία του πληκτρολογίου 4x4 matrix



Το προτεινόμενο έργο έχει αρκετά μινιμαλιστικό σχεδιασμό υλικού. Αποτελείται απλώς από ένα πληκτρολόγιο, ρελέ, arduino και δύο LED, ακόμη και ένα noob στο arduino μπορεί να το επιτύχει με ευκολία.

Το μόνο μέρος που είναι ελαφρώς δύσκολο σε αυτό το έργο είναι η κωδικοποίηση, δεν χρειάζεται να ανησυχείτε ότι ο κώδικας δίνεται σε αυτό το έργο. Το πρόγραμμα πρέπει να είναι γραμμένο με τέτοιο τρόπο ώστε, είναι ανόητο και κανένας αεροπειρατής δεν μπορεί να χαράξει το σύστημα.

Ωστόσο, να είστε προσεκτικοί εάν εκθέσετε το υλικό ή το υλικό αυτού του έργου είναι εύκολα προσβάσιμο, το ρελέ μπορεί να χακαριστεί με ευκολία. Διατηρήστε λοιπόν αυτό το έργο σε καλά προστατευμένο πλαίσιο.

Πως δουλεύει

Σημείωση: Μια τρέχουσα περιοριστική αντίσταση 4.7K πρέπει να συνδεθεί στη βάση του τρανζίστορ, η οποία δεν φαίνεται στο διάγραμμα.

Τώρα ας δούμε πώς λειτουργεί αυτό το κύκλωμα κλειδώματος ασφαλείας κωδικού πρόσβασης Arduino, διαβάστε προσεκτικά τις οδηγίες που δίνονται παρακάτω, για να λειτουργήσετε το κύκλωμα.

Διάγραμμα κυκλώματος

Κύκλωμα κλειδώματος ασφαλείας Arduino Password χρησιμοποιώντας πληκτρολόγιο 4x4

Εδώ είναι οι δύο απεικονίσεις πώς να συνδέσετε το πληκτρολόγιο και το Arduino:

Αποτελέσματα δοκιμής κλειδώματος ασφαλείας Arduino Password

• Όταν το κύκλωμα είναι ενεργοποιημένο, ζητά κωδικό πρόσβασης, μπορείτε να το δείτε στη σειριακή οθόνη (η σειριακή οθόνη δεν είναι υποχρεωτική, αλλά μπορεί να χρησιμοποιηθεί για σκοπούς δοκιμής).

• Εισαγάγετε τον κωδικό πρόσβασης που εισαγάγατε στο πρόγραμμα πριν τον συντάξετε.

• Ενώ πατάτε τα πλήκτρα, η πράσινη λυχνία LED αναβοσβήνει για το ένα δέκατο του δευτερολέπτου, υποδηλώνοντας ότι κάποιο πλήκτρο έχει πατηθεί από τον χρήστη.

• Μόλις εισαγάγετε τον 6ψήφιο κωδικό πρόσβασης, πατήστε «D» στο πληκτρολόγιο που λειτουργεί ως «Enter». Εάν ο κωδικός πρόσβασής σας είναι σωστός, ενεργοποιείται το ρελέ, ανάβει το πράσινο LED.

• Για να απενεργοποιήσετε το ρελέ, πατήστε «C» στο πληκτρολόγιο. Όταν ολοκληρωθεί, το πράσινο LED σβήνει και το ρελέ απενεργοποιείται. Κανένα άλλο κλειδί δεν μπορεί να απενεργοποιήσει το ρελέ.

• Εάν ο κωδικός πρόσβασης που εισάγεται από τον χρήστη είναι λανθασμένος, τότε ανάβει το κόκκινο LED και ο χρήστης πρέπει να περιμένει 30 δευτερόλεπτα για να εισέλθει στην επόμενη προσπάθεια. Όταν τελειώσουν τα 30 δευτερόλεπτα, το κόκκινο LED σβήνει, ενημερώνοντας τον χρήστη ότι, το σύστημα είναι έτοιμο να λάβει είσοδο από τον χρήστη.

• Όταν το ρελέ απενεργοποιηθεί μετά την επιτυχή ενεργοποίηση, για να ενεργοποιηθεί ξανά το ρελέ, ο χρήστης πρέπει να εισαγάγει ξανά τον κωδικό πρόσβασης και να πατήσει «D».

Εδώ είναι μια ειδική περίπτωση:

• Όταν εισαχθεί ο σωστός κωδικός πρόσβασης, το ρελέ ενεργοποιείται και μετά την επιτυχή απενεργοποίηση, όταν ο χρήστης πατήσει οποιοδήποτε λάθος πληκτρολόγηση (όχι ολόκληρος κωδικός πρόσβασης), το πρόγραμμα αναγνωρίζει ως λανθασμένο κωδικό πρόσβασης και ο χρήστης πρέπει να περιμένει άλλα 30 δευτερόλεπτα. Εάν αυτό ήταν αεροπειρατής, θα καθυστερήσει τον αριθμό των προσπαθειών που έκανε ο αεροπειρατής.

• Όταν πατηθεί το σωστό πάτημα πλήκτρου στην πρώτη προσπάθεια, μόνο τότε επιτρέπει την είσοδο στο επόμενο πλήκτρο. Αυτό ισχύει μόνο για την πρώτη πληκτρολόγηση και όχι για όλες τις διαδοχικές πατήσεις πλήκτρων.

• Το σύνθημα της παραπάνω εξηγηθείσας ιδέας είναι να καθυστερήσει ο αριθμός των προσπαθειών που έγιναν από τον αεροπειρατή.

Κωδικός προγράμματος:

//---------------------------------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

}
}
αλλού
{
πήγαινε χωματερή
}
ΠΡΟΣ ΤΗΝ:
key2 = keypad.waitForKey ()
εάν (key2 == pass [1])
{
digitalWrite (πράσινο, ΥΨΗΛΟ)
καθυστέρηση (100)
digitalWrite (πράσινο, χαμηλό)
{
z = 2
Serial.print ('*')
πήγα Β
}
}
αλλού
{
πήγαινε χωματερή
}
ΣΙ:
key3 = keypad.waitForKey ()
εάν (key3 == pass [2])
{
digitalWrite (πράσινο, ΥΨΗΛΟ)
καθυστέρηση (100)
digitalWrite (πράσινο, χαμηλό)
{
z = 3
Serial.print ('*')
πήγαινε Γ
}
}
αλλού
{
πήγαινε χωματερή
}
ΝΤΟ:
key4 = keypad.waitForKey ()
εάν (key4 == pass [3])
{
digitalWrite (πράσινο, ΥΨΗΛΟ)
καθυστέρηση (100)
digitalWrite (πράσινο, χαμηλό)
{
z = 4
Serial.print ('*')
πήγα Δ
}
}
αλλού
{
πήγαινε χωματερή
}
ΡΕ:
key5 = keypad.waitForKey ()
εάν (key5 == pass [4])
{
digitalWrite (πράσινο, ΥΨΗΛΟ)
καθυστέρηση (100)
digitalWrite (πράσινο, χαμηλό)
{
z = 5
Serial.print ('*')
πήγα Ε
}
}
αλλού
{
πήγαινε χωματερή
}
ΕΙΝΑΙ:
key6 = keypad.waitForKey ()
εάν (key6 == pass [5])
{
digitalWrite (πράσινο, ΥΨΗΛΟ)
καθυστέρηση (100)
digitalWrite (πράσινο, χαμηλό)
{
z = 6
Serial.print ('*')
πήγαινε εντάξει
}
}
αλλού
{
πήγαινε χωματερή
}
Εντάξει:
keyOK = keypad.waitForKey ()
αν (keyOK == εντάξει [0])
{
digitalWrite (OP, ΥΨΗΛΟ)
digitalWrite (πράσινο, ΥΨΗΛΟ)
Serial.println (')
Serial.println ('Relay Activated, Press' C 'to Deactivate.n')
}
αλλού
{
Serial.println (')
Serial.println ('Πατήστε' D 'για είσοδο')
πήγαινε εντάξει
}
μακριά από:
offkey = keypad.waitForKey ()
εάν (offkey == off [0])
{
digitalWrite (OP, LOW)
digitalWrite (πράσινο, χαμηλό)
Serial.println ('Relay Deactivated.n')
πήγαινε στην κορυφή
}
αλλού
{
Serial.println ('Πατήστε' C 'για απενεργοποίηση')
έφυγε
}
εγκαταλείπω:
εάν (z == 0)
{
digitalWrite (πράσινο, ΥΨΗΛΟ)
καθυστέρηση (100)
digitalWrite (πράσινο, χαμηλό)
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 ('*')
λάθος μετάβαση
}
εάν (z == 1)
{
digitalWrite (πράσινο, ΥΨΗΛΟ)
καθυστέρηση (100)
digitalWrite (πράσινο, χαμηλό)
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 ('*')
λάθος μετάβαση
}
εάν (z == 2)
{
digitalWrite (πράσινο, ΥΨΗΛΟ)
καθυστέρηση (100)
digitalWrite (πράσινο, χαμηλό)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
λάθος μετάβαση
}
εάν (z == 3)
{
digitalWrite (πράσινο, ΥΨΗΛΟ)
καθυστέρηση (100)
digitalWrite (πράσινο, χαμηλό)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
λάθος μετάβαση
}
εάν (z == 4)
{
digitalWrite (πράσινο, ΥΨΗΛΟ)
καθυστέρηση (100)
digitalWrite (πράσινο, χαμηλό)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
λάθος μετάβαση
}
εάν (z == 5)
{
digitalWrite (πράσινο, ΥΨΗΛΟ)
καθυστέρηση (100)
digitalWrite (πράσινο, χαμηλό)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
λάθος μετάβαση
}
λάθος:
Serial.println (')
Serial.print ('Λάθος κωδικός πρόσβασης, Περιμένετε 30 δευτερόλεπτα')
digitalWrite (κόκκινο, ΥΨΗΛΟ)
καθυστέρηση (10000)
καθυστέρηση (10000)
καθυστέρηση (10000)
digitalWrite (κόκκινο, ΧΑΜΗΛΟ)
πήγαινε στην κορυφή
}
// --------------------------------- Πρόγραμμα που αναπτύχθηκε από τον R.Girish --------- ----------------- //

ΣΗΜΕΙΩΣΗ: Για να ορίσετε κωδικό πρόσβασης: char pass [] = '123ABC' // 6ψήφιος κωδικός μόνο (όχι λιγότερο ή καθόλου)
Αλλάξτε το '123ABC' με τον δικό σας κωδικό πρόσβασης, εντός εισαγωγικού.

Βεβαιωθείτε ότι ο κωδικός πρόσβασης που έχει οριστεί στο πρόγραμμα είναι ΜΟΝΟ 6-ψήφιο, όχι λιγότερο ή όχι περισσότερο, αλλά ακριβώς 6-ψήφιο. Διαφορετικά, το πρόγραμμα δεν θα λειτουργήσει σωστά.

Εάν έχετε περαιτέρω αμφιβολίες σχετικά με το εξηγημένο κύκλωμα κλειδώματος ασφαλείας κωδικού πρόσβασης, μη διστάσετε να τα δημοσιεύσετε μέσω των σχολίων σας




Προηγούμενο: Κύκλωμα LED Sunrise Sunset Simulator Επόμενο: Κύκλωμα ελεγκτή κινητήρα Bluetooth