Η ασφάλεια αποτελεί μείζον μέλημα στην καθημερινή μας ζωή και οι ψηφιακές κλειδαριές έχουν γίνει σημαντικό μέρος αυτών των συστημάτων ασφαλείας. Ένα τέτοιο ψηφιακό κλείδωμα κώδικα μιμείται σε αυτό το έργο χρησιμοποιώντας την πλακέτα arduino και ένα πληκτρολόγιο matrix.
Συστατικά
- Arduino
- Ενότητα πληκτρολογίου
- Βομβητής
- LCD 16x2
- Τρανζίστορ BC547
- Αντίσταση (1k)
- Πίνακας ψωμιού
- Εξουσία
- Σύνδεση καλωδίων
Σε αυτό το κύκλωμα χρησιμοποιήσαμε τεχνική πολυπλεξίας για τη διασύνδεση του πληκτρολογίου για την εισαγωγή του κωδικού πρόσβασης στο σύστημα. Εδώ χρησιμοποιούμε το πληκτρολόγιο 4x4 που περιέχει 16 πλήκτρα. Αν θέλουμε να χρησιμοποιήσουμε 16 πλήκτρα τότε χρειαζόμαστε 16 ακίδες για σύνδεση στο arduino, αλλά στην τεχνική πολυπλεξίας πρέπει να χρησιμοποιήσουμε μόνο 8 ακίδες για διασύνδεση 16 πλήκτρων. Για να είναι ένας έξυπνος τρόπος διασύνδεσης μιας μονάδας πληκτρολογίου.
Τεχνική πολυπλεξίας: Η τεχνική πολυπλεξίας είναι ένας πολύ αποτελεσματικός τρόπος για τη μείωση του αριθμού των ακίδων που χρησιμοποιούνται με τον μικροελεγκτή για την παροχή εισόδου ή κωδικού πρόσβασης ή αριθμών. Βασικά, αυτή η τεχνική χρησιμοποιείται με δύο τρόπους - ο ένας είναι η σάρωση σειράς και ο άλλος είναι η σάρωση παχέος εντέρου. Αλλά σε αυτό το έργο που βασίζεται στο arduino χρησιμοποιήσαμε τη βιβλιοθήκη πληκτρολογίων, οπότε δεν χρειάζεται να δημιουργήσουμε κώδικα πολυπλεξίας για αυτό το σύστημα. Αρκεί να χρησιμοποιήσουμε τη βιβλιοθήκη πληκτρολογίων μόνο για την παροχή εισόδου.
Περιγραφή κυκλώματος
Το κύκλωμα αυτού του έργου είναι πολύ απλό και περιέχει Arduino, μονάδα πληκτρολογίου, buzzer και LCD. Το Arduino ελέγχει τις ολοκληρωμένες διαδικασίες όπως τη λήψη κωδικού πρόσβασης από τη μονάδα πληκτρολογίου, τη σύγκριση κωδικών πρόσβασης, την οδήγηση βομβητή και την αποστολή κατάστασης στην οθόνη LCD Το πληκτρολόγιο χρησιμοποιείται για τη λήψη κωδικού πρόσβασης. Το Buzzer χρησιμοποιείται για ενδείξεις και το LCD χρησιμοποιείται για την εμφάνιση της κατάστασης ή των μηνυμάτων σε αυτό. Το Buzzer οδηγείται χρησιμοποιώντας ένα τρανζίστορ NPN.
Οι ακίδες στήλης της μονάδας του πληκτρολογίου συνδέονται απευθείας με τους ακροδέκτες 4, 5, 6, 7 και οι ακίδες γραμμής συνδέονται με 3, 2, 1, 0 του arduino uno. Μια οθόνη LCD 16x2 συνδέεται με το arduino σε λειτουργία 4-bit. Ο πείρος ελέγχου RS, RW και En συνδέονται απευθείας με τον πείρο arduino 13, GND και 12. Και ο πείρος δεδομένων D4-D7 συνδέεται με τους πείρους 11, 10, 9 και 8 του arduino. Και ένας βομβητής συνδέεται στον ακροδέκτη 14 (A1) του arduino μέσω ενός τρανζίστορ BC547 NPN.
Εργαζόμενος
Έχουμε χρησιμοποιήσει το EEPROM του ενσωματωμένου arduino για να αποθηκεύσουμε τον κωδικό πρόσβασης, οπότε όταν τρέχουμε αυτό το πρόγραμμα για πρώτη φορά, διαβάστε δεδομένα σκουπιδιών από το EEPROM του ενσωματωμένου arduino και τα συγκρίνετε με κωδικό πρόσβασης εισαγωγής και δώστε ένα μήνυμα στην οθόνη LCD που δεν επιτρέπεται η πρόσβαση επειδή ο κωδικός πρόσβασης δεν ταιριάζει. Για την επίλυση αυτού του προβλήματος πρέπει να ορίσουμε έναν προεπιλεγμένο κωδικό πρόσβασης για πρώτη φορά χρησιμοποιώντας τον προγραμματισμό που δίνεται παρακάτω:
για (int j = 0; j <4; j ++) EEPROM.write (j, j + 49);
lcd.print ("Enter Ur Passkey:"); lcd.setCursor (0,1); για (int j = 0; j <4; j ++) pass = EEPROM.read (j);
Αυτό θα ορίσει τον κωδικό πρόσβασης "1234" στο EEPROM του Arduino.
Αφού το εκτελέσετε την πρώτη φορά πρέπει να το αφαιρέσουμε από το πρόγραμμα και να γράψουμε ξανά τον κωδικό στο arduino και να τρέξουμε. Τώρα το σύστημά σας θα λειτουργεί καλά. Και για δεύτερη φορά, ο χρησιμοποιημένος κωδικός πρόσβασης είναι τώρα "1234". Τώρα μπορείτε να τον αλλάξετε πατώντας το κουμπί # και, στη συνέχεια, εισαγάγετε τον τρέχοντα κωδικό πρόσβασης και, στη συνέχεια, εισαγάγετε τον νέο κωδικό πρόσβασης
Όταν εισαγάγετε τον κωδικό πρόσβασής σας, το σύστημα θα συγκρίνει τον κωδικό πρόσβασης που έχετε εισαγάγει με αυτόν τον κωδικό πρόσβασης που είναι αποθηκευμένος στο EEPROM του arduino. Εάν συμβεί αντιστοίχιση, τότε η οθόνη LCD θα δείξει «η πρόσβαση παραχωρήθηκε» και εάν ο κωδικός πρόσβασης είναι λανθασμένος, τότε η οθόνη LCD «Δεν επιτρέπεται η πρόσβαση» και ο βομβητής θα ηχήσει συνεχώς για κάποιο χρονικό διάστημα. Και ο βομβητής είναι επίσης μπιπ μία φορά κάθε φορά που ο χρήστης θα πατήσει οποιοδήποτε κουμπί από το πληκτρολόγιο.
Περιγραφή προγραμματισμού
Στον κώδικα χρησιμοποιήσαμε τη βιβλιοθήκη πληκτρολογίων για τη διασύνδεση του πληκτρολογίου με το arduino.
#περιλαμβάνω
const byte ROWS = 4; // τέσσερις σειρές const byte COLS = 4; // τέσσερις στήλες char hexaKeys = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', ' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins = {3, 2, 1, 0}; // συνδεθείτε στα pinouts της γραμμής του πληκτρολογίου byte colPins = {4, 5, 6, 7}; // σύνδεση στα pinouts στήλης του πληκτρολογίου // αρχικοποίηση μιας παρουσίας της τάξης NewKeypad Keypad customKeypad = Keypad (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS).
Έχουμε συμπεριλάβει βιβλιοθήκη LCD για διασύνδεση LCD και για διασύνδεση EEPROM, έχουμε συμπεριλάβει τη βιβλιοθήκη EEPROM.h., Και στη συνέχεια αρχικοποιήσαμε μεταβλητές και καθορισμένες καρφίτσες για στοιχεία.
#define buzzer 15 LiquidCrystal lcd (13,12,11,10,9,8); κωδικός πρόσβασης char; char pass, pass1; int i = 0; char customKey = 0;
Και στη συνέχεια αρχικοποιήσαμε την οθόνη LCD και δώσαμε κατεύθυνση στους ακροδέκτες στη λειτουργία εγκατάστασης
άκυρη ρύθμιση () {lcd.begin (16,2); pinMode (led, OUTPUT); pinMode (βομβητής, ΕΞΟΔΟΣ); pinMode (m11, OUTPUT); pinMode (m12, OUTPUT); lcd.print ("Ηλεκτρονικό"); lcd.setCursor (0,1); lcd.print ("Κλείδωμα πληκτρολογίου"); καθυστέρηση (2000); lcd.clear (); lcd.print ("Enter Ur Passkey:"); lcd.setCursor (0,1);
Μετά από αυτό διαβάζουμε το πληκτρολόγιο σε λειτουργία βρόχου
customKey = customKeypad.getKey (); εάν (customKey == '#') αλλαγή (); εάν (customKey) {password = customKey; lcd.print (customKey); μπιπ (); }
Στη συνέχεια, συγκρίνετε τον κωδικό πρόσβασης με την αποθήκευση κωδικού πρόσβασης χρησιμοποιώντας τη μέθοδο σύγκρισης συμβολοσειρών
αν (i == 4) {καθυστέρηση (200); για (int j = 0; j <4; j ++) pass = EEPROM.read (j); εάν (! (strncmp (κωδικός πρόσβασης, πέρασμα, 4))) {digitalWrite (led, HIGH); μπιπ (); lcd.clear (); lcd.print ("Αποδεκτό κλειδί πρόσβασης"); καθυστέρηση (2000); lcd.setCursor (0,1); lcd.print ("#. Αλλαγή κωδικού πρόσβασης"); καθυστέρηση (2000); lcd.clear (); lcd.print ("Enter Passkey:"); lcd.setCursor (0,1); i = 0; digitalWrite (led, LOW); }
Πρόκειται για λειτουργία αλλαγής κωδικού πρόσβασης και λειτουργία βομβητή βομβητή
άκυρη αλλαγή () {int j = 0; lcd.clear (); lcd.print ("UR Current Passk"); lcd.setCursor (0,1); ενώ (j <4) {char key = customKeypad.getKey (); if (κλειδί) {pass1 = κλειδί; lcd.print (κλειδί); άκυρο ηχητικό σήμα () {digitalWrite (βομβητής, ΥΨΗΛΟΣ); καθυστέρηση (20) digitalWrite (βομβητής, LOW); }