- Υλικά που χρησιμοποιούνται
- Ενότητα EM18 RFID Reader
- Ανακαλύψτε τον μοναδικό 12ψήφιο κωδικό RFID Tag χρησιμοποιώντας το Arduino
- Διάγραμμα κυκλώματος
- Μονάδα αισθητήρα δακτυλικών αποτυπωμάτων
- Προγραμματισμός για ανάφλεξη χωρίς κλειδί RFID
Σήμερα, το μεγαλύτερο μέρος του αυτοκινήτου έρχεται με σύστημα εισόδου χωρίς κλειδί και σύστημα ανάφλεξης με κουμπιά, στο οποίο χρειάζεται μόνο να μεταφέρετε το κλειδί στην τσέπη σας και απλά να βάλετε το δάχτυλό σας στον αισθητήρα χωρητικότητας στη λαβή της πόρτας για να ανοίξετε την πόρτα του αυτοκινήτου. Εδώ σε αυτό το έργο, προσθέτουμε μερικά ακόμη χαρακτηριστικά ασφαλείας σε αυτό το σύστημα χρησιμοποιώντας RFID και αισθητήρα δακτυλικών αποτυπωμάτων. Ο αισθητήρας RFID θα επικυρώσει την άδεια του χρήστη και ο αισθητήρας δακτυλικών αποτυπωμάτων θα επιτρέψει μόνο εξουσιοδοτημένο άτομο στο όχημα.
Για αυτό το σύστημα ανάφλεξης με βάση δακτυλικά αποτυπώματα, χρησιμοποιούμε το Arduino με έναν αισθητήρα δακτυλικών αποτυπωμάτων R305 και έναν αναγνώστη EM18 RFID.
Υλικά που χρησιμοποιούνται
- Arduino Nano
- R305 Αισθητήρας δακτυλικών αποτυπωμάτων
- Αναγνώστης EM18 RFID
- 16 * 2 αλφαριθμητική LCD
- Κινητήρες DC
- L293D Κινητήρας IC
- Veroboard ή Breadboard (Όποιο είναι διαθέσιμο)
- Σύνδεση καλωδίων
- Μπαταρία 12V DC
Ενότητα EM18 RFID Reader
Το RFID σημαίνει αναγνώριση ραδιοσυχνοτήτων. Αναφέρεται σε μια τεχνολογία, όπου τα ψηφιακά δεδομένα κωδικοποιούνται σε ετικέτες RFID και μπορούν να αποκωδικοποιηθούν από έναν αναγνώστη RFID χρησιμοποιώντας ραδιοκύματα. Το RFID είναι παρόμοιο με το barcoding στο οποίο δεδομένα από μια ετικέτα αποκωδικοποιούνται από μια συσκευή. Η τεχνολογία RFID χρησιμοποιείται σε διάφορες εφαρμογές όπως το σύστημα ασφαλείας, το σύστημα παρακολούθησης υπαλλήλων, το κλείδωμα πόρτας RFID, το μηχάνημα ψηφοφορίας βάσει RFID, το σύστημα συλλογής διοδίων κ.λπ.
Το EM18 Reader είναι μια ενότητα που μπορεί να διαβάσει τις πληροφορίες ταυτότητας που είναι αποθηκευμένες στις ετικέτες RFID. Οι ετικέτες RFID αποθηκεύουν έναν 12ψήφιο μοναδικό αριθμό που μπορεί να αποκωδικοποιηθεί από μια μονάδα ανάγνωσης EM18, όταν η ετικέτα έρχεται σε εμβέλεια με τον Αναγνώστη. Αυτή η μονάδα λειτουργεί με συχνότητα 125 kHz, η οποία διαθέτει ενσωματωμένη κεραία και λειτουργεί χρησιμοποιώντας τροφοδοτικό DC 5 volt.
Δίνει σειριακή έξοδο δεδομένων και έχει εύρος 8-12 cm. Οι παράμετροι σειριακής επικοινωνίας είναι 8 bit δεδομένων, 1 bit διακοπής και 9600 baud rate.
Χαρακτηριστικά EM18:
- Τάση λειτουργίας: + 4,5V έως + 5,5V DC
- Τρέχουσα κατανάλωση: 50mA
- Συχνότητα λειτουργίας: 125KHZ
- Θερμοκρασία λειτουργίας: 0-80 βαθμός C
- Ποσοστό επικοινωνίας Baud: 9600
- Απόσταση ανάγνωσης: 8-12 cm
- Κεραία: Ενσωματωμένη
Pin Pin EM18:
Περιγραφή καρφιτσώματος:
VCC: Είσοδος τάσης 4,5 - 5V DC
GND: Καρφίτσα γείωσης
Buzzer: Buzzer ή LED pin
TX: Καρφίτσα πομπού σειριακών δεδομένων EM18 για RS232 (Έξοδος)
SEL: Αυτό πρέπει να είναι ΥΨΗΛΟ για τη χρήση RS232 (ΧΑΜΗΛΗ εάν χρησιμοποιείτε WEIGAND)
Δεδομένα 0: Δεδομένα WEIGAND 0
Δεδομένα 1: Δεδομένα WEIGAND 1
Για να μάθετε περισσότερα σχετικά με το RFID και τις ετικέτες, ελέγξτε τα προηγούμενα έργα με βάση το RFID.
Ανακαλύψτε τον μοναδικό 12ψήφιο κωδικό RFID Tag χρησιμοποιώντας το Arduino
Πριν προγραμματίσουμε το σύστημα ανάφλεξης αυτοκινήτου Arduino για Arduino, πρώτα, πρέπει να μάθουμε τον 12ψήφιο κωδικό μοναδικού κωδικού RFID. Όπως συζητήσαμε προηγουμένως, οι ετικέτες RFID περιέχουν έναν μοναδικό κωδικό 12 ψηφίων και μπορούν να αποκωδικοποιηθούν χρησιμοποιώντας έναν αναγνώστη RFID. Όταν σύρετε την ετικέτα RFID κοντά στον Αναγνώστη, ο Αναγνώστης θα δώσει τους μοναδικούς κωδικούς μέσω της σειριακής θύρας εξόδου. Πρώτα, συνδέστε το Arduino στη συσκευή ανάγνωσης RFID σύμφωνα με το διάγραμμα κυκλώματος και μετά ανεβάστε παρακάτω τον κωδικό που δίνεται στο Arduino.
int count = 0; κάρτα char_no; άκυρη ρύθμιση () {Serial.begin (9600); } άκυρος βρόχος () {if (Serial.available ()) {count = 0; ενώ (Serial.available () && count <12) {card_no = Serial.read (); μέτρηση ++; καθυστέρηση (5) } Serial.print (card_no); }}
Αφού ανεβάσετε με επιτυχία τον κωδικό, ανοίξτε τη σειριακή οθόνη και ρυθμίστε το ρυθμό baud σε 9600. Στη συνέχεια, σύρετε την κάρτα κοντά στον Αναγνώστη. Στη συνέχεια, ο 12ψήφιος κωδικός θα αρχίσει να εμφανίζεται στη σειριακή οθόνη. Κάντε αυτήν τη διαδικασία για όλες τις χρησιμοποιημένες ετικέτες RFID και σημειώστε την για μελλοντικές αναφορές.
Διάγραμμα κυκλώματος
Το διάγραμμα κυκλώματος για αυτό το σύστημα ανάφλεξης βάσει δακτυλικών αποτυπωμάτων δίνεται παρακάτω:
Στην περίπτωσή μου, έχω κολλήσει το πλήρες κύκλωμα στον πίνακα αρωμάτων όπως φαίνεται παρακάτω:
Μονάδα αισθητήρα δακτυλικών αποτυπωμάτων
Το Finger Print Sensor Module ή το Finger Print Scanner είναι μια μονάδα που συλλαμβάνει την εικόνα εκτύπωσης του δακτύλου και στη συνέχεια τη μετατρέπει στο αντίστοιχο πρότυπο και τα αποθηκεύει στη μνήμη της σε επιλεγμένο αναγνωριστικό (τοποθεσία) από τον Arduino. Εδώ όλη η διαδικασία διοικείται από τον Arduino όπως η λήψη μιας εικόνας δακτυλικού αποτυπώματος, η μετατροπή του σε πρότυπα και η αποθήκευση τοποθεσίας κ.λπ.
Χρησιμοποιήσαμε προηγουμένως τον ίδιο αισθητήρα R305 για να κατασκευάσουμε ένα μηχάνημα ψηφοφορίας, ένα σύστημα παρακολούθησης, ένα σύστημα ασφαλείας κ.λπ. Μπορείτε να ελέγξετε όλα τα έργα με βάση τα δακτυλικά αποτυπώματα εδώ.
Εγγραφή δακτυλικών αποτυπωμάτων στον αισθητήρα:
Πριν προχωρήσουμε στο πρόγραμμα, πρέπει να εγκαταστήσουμε τις απαιτούμενες βιβλιοθήκες για τον αισθητήρα δακτυλικών αποτυπωμάτων. Εδώ χρησιμοποιήσαμε το " Adafruit_Fingerprint.h " για τη χρήση του αισθητήρα δακτυλικών αποτυπωμάτων R305. Λοιπόν, κατεβάστε πρώτα τη βιβλιοθήκη χρησιμοποιώντας τον παρακάτω σύνδεσμο:
- Βιβλιοθήκη αισθητήρων δακτυλικών αποτυπωμάτων Adafruit
Μετά την επιτυχή λήψη, στο Arduino IDE, μεταβείτε στο Αρχείο > Εργαλεία> Συμπερίληψη βιβλιοθήκης> Προσθήκη βιβλιοθήκης.zip και, στη συνέχεια, επιλέξτε τη θέση του αρχείου zip για να εγκαταστήσετε τη βιβλιοθήκη.
Μετά την επιτυχή εγκατάσταση της βιβλιοθήκης, ακολουθήστε τα παρακάτω βήματα για να εγγράψετε ένα νέο δακτυλικό αποτύπωμα στη μνήμη του αισθητήρα.
1. Στο Arduino IDE, μεταβείτε στο Αρχείο > Παραδείγματα > Adafruit Fingerprint Sensor Library > Εγγραφή.
2. Μεταφορτώστε τον κωδικό στο Arduino και ανοίξτε το Serial monitor με ρυθμό baud 9600.
Σημαντικό: Αλλάξτε τον σειριακό πείρο του λογισμικού στο πρόγραμμα σε SoftwareSerial mySerial (12, 11).
3. Πρέπει να εισαγάγετε ένα αναγνωριστικό για το δακτυλικό αποτύπωμα στο οποίο θέλετε να αποθηκεύσετε το δακτυλικό σας αποτύπωμα. Καθώς αυτό είναι το πρώτο μου δακτυλικό αποτύπωμα, πληκτρολόγησα 1 στην επάνω αριστερή γωνία και μετά, κάντε κλικ στο κουμπί Αποστολή.
4. Στη συνέχεια, η λυχνία στον αισθητήρα δακτυλικών αποτυπωμάτων θα αναβοσβήνει, η οποία υποδεικνύει ότι πρέπει να τοποθετήσετε το δάχτυλό σας στον αισθητήρα και στη συνέχεια ακολουθήστε τα βήματα που εμφανίζονται στη σειριακή οθόνη μέχρι να σας αναγνωρίσει για την επιτυχή εγγραφή.
Προγραμματισμός για ανάφλεξη χωρίς κλειδί RFID
Ο πλήρης κωδικός για αυτό το σύστημα βιομετρικής ανάφλεξης δίνεται στο τέλος του σεμιναρίου. Εδώ εξηγούμε μερικά σημαντικά μέρη του κώδικα.
Το πρώτο πράγμα είναι να συμπεριλάβετε όλες τις απαιτούμενες βιβλιοθήκες. Εδώ στην περίπτωσή μου, έχω συμπεριλάβει το " Adafruit_Fingerprint.h " για τη χρήση αισθητήρα δακτυλικών αποτυπωμάτων R305. Στη συνέχεια, διαμορφώστε τη σειριακή θύρα στην οποία θα συνδεθεί ο αισθητήρας δακτυλικών αποτυπωμάτων. Στην περίπτωσή μου, έχω δηλώσει 12 ως RX Pin και 11 ως TX pin.
# συμπερίληψη # συμπερίληψη
Στο επόμενο βήμα, δηλώστε όλες τις μεταβλητές, οι οποίες θα χρησιμοποιηθούν σε ολόκληρο τον κώδικα. Στη συνέχεια, ορίστε τις ακίδες σύνδεσης LCD με το Arduino ακολουθούμενη από τη δήλωση ενός αντικειμένου της κλάσης LiquidCrystal .
είσοδος char; int count = 0; int a = 0; const int rs = 6, en = 7, d4 = 2, d5 = 3, d6 = 4, d7 = 5; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
Στη συνέχεια, μέσα στον βρόχο (), γράφεται κωδικός για τη λήψη των μοναδικών 12 ψηφίων κωδικών των ετικετών RFID και αποθηκεύονται σε έναν πίνακα. Εδώ τα στοιχεία της συστοιχίας θα ταιριάζουν με τους αποθηκευμένους μοναδικούς κωδικούς στη μνήμη, για να λάβετε τις λεπτομέρειες του πιστοποιημένου ατόμου.
μέτρηση = 0; ενώ (Serial.available () && count <12) { input = Serial.read (); μέτρηση ++; καθυστέρηση (5) }
Στη συνέχεια, ο ληφθείς πίνακας συγκρίνεται με τους αποθηκευμένους κωδικούς ετικετών. Εάν ο κωδικός ταιριάζει, τότε η άδεια θεωρείται έγκυρη, γεγονός που επιτρέπει στο χρήστη να τοποθετήσει έγκυρο δακτυλικό αποτύπωμα. Διαφορετικά, θα εμφανίσει μια άκυρη άδεια.
if ((strncmp (input, "3F009590566C", 12) == 0) && (a == 0)) { lcd.setCursor (0, 0); lcd.print ("Άδεια έγκρισης"); lcd.setCursor (0, 1); lcd.print ("Καλώς ήλθατε"); καθυστέρηση (1000) a = 1; δακτυλικό αποτύπωμα(); }
Στο επόμενο βήμα, γράφεται μια συνάρτηση getFingerprintID η οποία θα επιστρέψει ένα έγκυρο αναγνωριστικό δακτυλικού αποτυπώματος για ένα ήδη εγγεγραμμένο δακτυλικό αποτύπωμα.
int getFingerprintID () { uint8_t p = finger.getImage (); εάν (p! = FINGERPRINT_OK) επιστροφή -1; p = finger.image2Tz (); εάν (p! = FINGERPRINT_OK) επιστροφή -1; p = finger.fingerFastSearch (); εάν (p! = FINGERPRINT_OK) επιστροφή -1; επιστροφή finger.fingerID; }
Εσωτερική λειτουργία δακτυλικού αποτυπώματος () , η οποία καλείται μετά από επιτυχημένη αντιστοίχιση RFID, η συνάρτηση getFingerprintID καλείται για λήψη έγκυρου αναγνωριστικού δακτυλικού αποτυπώματος. Στη συνέχεια συγκρίνεται με τη χρήση του βρόχου if-else για να λάβετε τις πληροφορίες σχετικά με τα δεδομένα πιστοποιημένων ατόμων και αν τα δεδομένα ταιριάζουν, τότε το όχημα ανάβει, διαφορετικά, θα ζητήσει λάθος δακτυλικό αποτύπωμα.
int fingerprintID = getFingerprintID (); καθυστέρηση (50) εάν (fingerprintID == 1) { lcd.setCursor (0, 0); lcd.print ("Επιτρέπεται η πρόσβαση"); lcd.setCursor (0, 1); lcd.print ("Το όχημα ξεκίνησε"); digitalWrite (9, ΥΨΗΛΟΣ); digitalWrite (10, LOW); ενώ (1); }
Έτσι λειτουργεί αυτό το σύστημα ανάφλεξης αυτοκινήτου RFID το οποίο προσθέτει δύο επίπεδα ασφάλειας στο αυτοκίνητό σας.
Ο πλήρης κώδικας και το βίντεο επίδειξης δίνονται παρακάτω.