- Συστατικά:
- Επεξήγηση κυκλώματος:
- Διατροφή μοτίβο χτύπημα στο Arduino:
- Επεξήγηση εργασίας:
- Επεξήγηση προγραμματισμού:
Η ασφάλεια αποτελεί μείζον μέλημα στην καθημερινή μας ζωή και οι ψηφιακές κλειδαριές έχουν καταστεί σημαντικό μέρος αυτών των συστημάτων ασφαλείας. Υπάρχουν πολλοί τύποι συστημάτων ασφαλείας για τη διασφάλιση του χώρου μας. Μερικά παραδείγματα είναι το σύστημα ασφαλείας με βάση το PIR, το σύστημα ασφαλείας με βάση RFID, το σύστημα ψηφιακής κλειδαριάς, τα συστήματα βιο-μήτρας, το ηλεκτρονικό κλείδωμα κώδικα. Σε αυτήν την ανάρτηση, ας δημιουργήσουμε ένα μυστικό κλείδωμα πόρτας ανίχνευσης κρουσμάτων χρησιμοποιώντας το Arduino το οποίο μπορεί να ανιχνεύσει το μοτίβο των χτυπημάτων σας στην πόρτα και θα ανοίξει το κλείδωμα μόνο εάν το μοτίβο χτυπήματος ταιριάζει με το σωστό μοτίβο. Για τη σωστή λειτουργία επίδειξης, ελέγξτε το βίντεο στο τέλος.
Συστατικά:
- Arduino Uno
- Πλήκτρο
- Βομβητής
- Αντίσταση 1M
- Εξουσία
- Σύνδεση καλωδίων
- Κουτί
- Βοηθητικό μοτέρ
Επεξήγηση κυκλώματος:
Το διάγραμμα κυκλώματος αυτού του ανιχνευτή μοτίβων Knocking είναι πολύ απλό που περιέχει Arduino για τον έλεγχο ολόκληρης της διαδικασίας του έργου, του μπουτόν, του βομβητή και του Servo Motor. Το Arduino ελέγχει τις ολοκληρωμένες διαδικασίες, όπως τη λήψη κωδικού πρόσβασης Buzzer ή Sensor, τη σύγκριση μοτίβων, την οδήγηση του Servo για άνοιγμα και κλείσιμο της πύλης και αποθήκευση του μοτίβου στο Arduino.
Το μπουτόν συνδέεται απευθείας με τον πείρο D7 του Arduino σε σχέση με τη γείωση. Και ένας βομβητής συνδέεται στον αναλογικό πείρο Α0 του Arduino σε σχέση με τη γείωση και με αντίσταση 1Μ μεταξύ Α0 και γείωσης επίσης. Ένας σερβοκινητήρας συνδέεται επίσης με τον ακροδέκτη PWM D3 του Arduino.
Διατροφή μοτίβο χτύπημα στο Arduino:
Σε αυτό το κύκλωμα, χρησιμοποιήσαμε το Buzzer ή το Peizo Sensor για να πάρουμε μοτίβο εισόδου στο σύστημα. Εδώ χρησιμοποιούμε ένα κουμπί για να επιτρέψουμε τη λήψη εισόδου από τον αισθητήρα και επίσης να το αποθηκεύσουμε στο Arduino. Αυτό το σύστημα έχει σχεδιαστεί λαμβάνοντας ιδέα από το μοτίβο κώδικα Morse αλλά δεν είναι ακριβώς παρόμοιο με αυτό.
Εδώ χρησιμοποιήσαμε ένα κουτί από χαρτόνι για επίδειξη. Για να λάβουμε είσοδο, χτυπάμε τον πίνακα μετά το πάτημα του κουμπιού. Εδώ έχουμε χτυπήσει έχοντας κατά νου μια χρονική περίοδο που είναι 500ms. Αυτά τα 500ms είναι επειδή το έχουμε διορθώσει σε κώδικα και το μοτίβο εισόδου εξαρτάται από αυτό. Αυτή η χρονική περίοδος 500 ms θα καθορίσει ότι η είσοδος ήταν 1 ή 0. Ελέγξτε τον παρακάτω κώδικα για να καταλάβετε αυτό το πράγμα.
Όταν το χτυπήσουμε, ο Arduino αρχίζει να παρακολουθεί την ώρα του πρώτου χτυπήματος στο δεύτερο χτύπημα και το βάζει σε μια σειρά. Εδώ σε αυτό το σύστημα, παίρνουμε 6 χτυπήματα. Αυτό σημαίνει ότι θα λάβουμε 5 χρονικές περιόδους.
Τώρα ελέγχουμε τη χρονική περίοδο ένα προς ένα. Πρώτον, ελέγχουμε τη χρονική περίοδο μεταξύ του πρώτου χτυπήματος και του δεύτερου χτυπήματος εάν η διαφορά χρόνου μεταξύ αυτών λιγότερο από τα 500ms τότε θα είναι 0 και εάν μεγαλύτερη από 500ms θα είναι 1 και θα αποθηκευτεί σε μια μεταβλητή. Τώρα μετά, ελέγχουμε τη χρονική περίοδο μεταξύ δεύτερου και τρίτου χτυπήματος και ούτω καθεξής.
Τέλος, θα έχουμε 5 ψηφία έξοδο σε μορφή 0 και 1 (δυαδική).
Επεξήγηση εργασίας:
Η εργασία του Smart Lock Project βασίζεται σε Knock είναι απλή. Πρώτα πρέπει να αποθηκεύσουμε ένα μοτίβο στο σύστημα. Πρέπει λοιπόν να πατήσουμε και να κρατήσουμε το κουμπί ώσπου να χτυπήσουμε 6 φορές. Εδώ σε αυτό το έργο, έχω χρησιμοποιήσει 6 χτυπήματα, αλλά ο χρήστης μπορεί να το αλλάξει όπως θέλει. Μετά από έξι φορές χτύπημα, ο Arduino βρήκε το μοτίβο χτυπήματος και σώσε το στην EEPROM. Τώρα αφού αποθηκεύσετε το μοτίβο εισόδου, πατήστε και αφήστε αμέσως το πλήκτρο για λήψη εισόδου από τον αισθητήρα στο Arduino για να ανοίξετε το κλείδωμα. Τώρα πρέπει να χτυπήσουμε 6 φορές. Μετά από αυτό, το Arduino το αποκωδικοποιεί και συγκρίνεται με το αποθηκευμένο μοτίβο. Εάν συμβεί ένας αγώνας, τότε ο Arduino ανοίγει την πύλη οδηγώντας σερβο μοτέρ.
Σημείωση: όταν πατάμε ή πατάμε και κρατούμε πατημένο το κουμπί Arduino ξεκινήστε ένα χρονόμετρο 10 δευτερολέπτων για να πάρετε και τα 6 χτυπήματα. Σημαίνει ότι ο χρήστης πρέπει να χτυπήσει εντός 10 λεπτών. Και ο χρήστης μπορεί να ανοίξει το Serial monitor για να δει το αρχείο καταγραφής.
Επεξήγηση προγραμματισμού:
Σε ένα πρόγραμμα πρώτα απ 'όλα συμπεριλαμβάνουμε το αρχείο κεφαλίδας και ορίζουμε την καρφίτ εισόδου και εξόδου και ορίζουμε τη μακροεντολή και τις δηλωμένες μεταβλητές όπως μπορείτε να δείτε στην ενότητα Πλήρης κώδικας στον κώδικα παρακάτω.
Μετά από αυτό, στη λειτουργία ρύθμισης , δίνουμε κατεύθυνση στον καθορισμένο πείρο και ξεκινάμε τον σερβοκινητήρα.
άκυρη ρύθμιση () {pinMode (sw, INPUT_PULLUP); myServo.attach (servoPin); myServo.write (180); Serial.begin (9600); }
Μετά από αυτό, παίρνουμε είσοδο και αποθηκεύουμε το μοτίβο εισόδου ή χτυπάμε χρόνο σε έναν πίνακα.
κενός βρόχος () {int i = 0; if (digitalRead (sw) == LOW) {Serial.println ("Έναρξη"); καθυστέρηση (1000) μακρύ stt = millis (); ενώ (millis () <(stt + patternInputTime)) {int temp = analogRead (A0); if (temp> ευαισθησία && flag == 0 && i <= patternLenth) {…………..
Μετά από αυτό, αποκωδικοποιήσαμε το μοτίβο εισόδου
για (int i = 0; i
Και, στη συνέχεια, αποθηκεύστε εάν πατήσετε το κουμπί
if (digitalRead (sw) == 0) {για (int i = 0; i
Και εάν δεν πατηθεί ακόμα το κουμπί, τότε το Arduino θα συγκρίνει το αποκωδικοποιημένο μοτίβο εισόδου με το αποθηκευμένο μοτίβο.
αλλιώς {if (knok == 1) {για (int i = 0; i
Εάν κάποιος κωδικός πρόσβασης ταιριάζει, τότε ο Servo ανοίγει την πύλη, διαφορετικά δεν συνέβη τίποτα, αλλά ο χρήστης μπορεί να δει το αποτέλεσμα μέσω της σειριακής οθόνης.
Serial.println (acceptFlag); if (acceptFlag> = patternLenth-1) {Serial.println ("Αποδεκτό"); myServo.write (openGate); καθυστέρηση (5000) myServo.write (closeGate); } άλλο Serial.println ("Απορρίφθηκε"); }
Μπορείτε να ελέγξετε τον πλήρη κώδικα παρακάτω με ένα δοκιμαστικό βίντεο.