Πίνακας περιεχομένων:

Arduino High Tech Safe: 6 βήματα
Arduino High Tech Safe: 6 βήματα

Βίντεο: Arduino High Tech Safe: 6 βήματα

Βίντεο: Arduino High Tech Safe: 6 βήματα
Βίντεο: Display input voltage as bargraph on LCD using Arduino and potentiometer 2024, Ιούλιος
Anonim
Arduino High Tech Safe
Arduino High Tech Safe

Αυτό είναι το χρηματοκιβώτιό μου υψηλής τεχνολογίας arduino. Πρέπει να σαρώσετε το δάχτυλό σας, να σαρώσετε την κάρτα σας και, στη συνέχεια, να εισαγάγετε έναν 4ψήφιο κωδικό πρόσβασης για να ξεκλειδώσετε το συρτάρι. Αυτό το έργο δεν συνιστάται για αρχάριους επειδή είναι πολύ προχωρημένο. Ο κώδικας είναι μακρύς, αλλά θα τον μοιραστώ σε αυτό το έργο. Το κόστος είναι περίπου 75 $ αν φτιάξετε το ίδιο χρηματοκιβώτιο με εμένα. Αυτό το έργο θα μπορούσε επίσης να διαρκέσει 1-3 ημέρες για να ολοκληρωθεί. Λοιπόν, ας ξεκινήσουμε!

Προμήθειες

Για να φτιάξετε το ίδιο χρηματοκιβώτιο με το δικό μου θα χρειαστείτε:

Arduino (Συνιστάται το Uno επειδή δεν έχω βήματα για arduino mega ή nano. Αλλά μπορείτε ακόμα να τα χρησιμοποιήσετε)

σανίδα ψωμιού

σερβο

καλώδια βραχυκυκλωτήρων

χειριστήριο

20*4 (μπορείτε να χρησιμοποιήσετε 16*4, αλλά θα πρέπει να αλλάξετε τον κωδικό)

σαρωτής δακτυλικών αποτυπωμάτων

mfrc522 σαρωτής καρτών rfid

ένας κουβάς legos

Βήμα 1: Χτίζοντας ένα κουτί

Χτίζοντας ένα κουτί
Χτίζοντας ένα κουτί

Πρώτα θα χρειαστείτε ένα κουτί για να βάλετε τα ηλεκτρονικά σας μέσα. Θα μπορούσατε να χρησιμοποιήσετε legos, ένα τρισδιάστατο τυπωμένο κουτί ή ακόμα και χαρτόνι! (Αν και αυτό μπορεί να είναι πιο δύσκολο) Μην ξεχάσετε να βάλετε τρύπες για ένα συρτάρι και τα ηλεκτρονικά σας. Εάν χρησιμοποιείτε το σαρωτή καρτών rfid, δεν χρειάζεται να βάλετε μια τρύπα για αυτό εάν οι τοίχοι σας είναι λεπτοί. Οι κάρτες εξακολουθούν να λειτουργούν, αλλά πρέπει να κλείσετε τα μπρελόκ, έτσι ώστε ο αισθητήρας της κάρτας rfid να μπορεί να τα διαβάσει. Αφήστε επίσης χώρο για το arduino και τα καλώδια σας στο εσωτερικό. ΣΗΜΕΙΩΣΗ: Όταν φτιάχνετε το συρτάρι, αφήστε μια τρύπα σε αυτό, ώστε ο σερβιτόρος σας να γυρίσει και να κλειδώσει το συρτάρι.

Βήμα 2: Καλωδίωση

Καλωδίωση!
Καλωδίωση!

Αυτό το βήμα μπορεί να είναι περίπλοκο επειδή πρέπει να συνδέσετε τα καλώδια στο ακριβές σημείο, διαφορετικά τα ηλεκτρονικά δεν θα λειτουργήσουν. Δεν έχω διάγραμμα καλωδίωσης, αλλά θα σας πω αν πάει το καθένα. Η καλωδίωση είναι μόνο για arduino uno. Θα πρέπει να ψάξετε για να βάλετε τα καλώδια εάν χρησιμοποιείτε arduino mega ή nano. Εάν δεν χρησιμοποιείτε όλα τα ηλεκτρονικά που έχω, μπορείτε απλά να παραλείψετε αυτήν την καλωδίωση.

Σαρωτής δακτυλικών αποτυπωμάτων: πράσινο σύρμα: λευκό σύρμα D2: μαύρο σύρμα D3: κόκκινο σύρμα GND: 5V

Χειριστήριο: 5V = 3.3V GND = GND X = A2 Y = A3 Switch = D4

rfid σαρωτής καρτών: 3.3V = 3.3V rst = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

LCD οθόνη: 5V = 5V GND = GND sda = A4 sck = A5

Servo: κόκκινο σύρμα: 5V Καφέ σύρμα: κίτρινο σύρμα GND: D6

ΣΗΜΕΙΩΣΗ: ΜΗΝ ΣΥΝΔΕΣΕΤΕ ΣΑΡΩΤΗ RFID CARD ΣΕ 5V. ΑΝ ΤΟ ΚΑΝΕΤΕ, ΘΑ ΣΠΑΣΕΙ !!!

Mayσως αναρωτιέστε γιατί είπα να συνδέσω την τροφοδοσία του joystick στα 3.3V όταν γράφει 5V στο πλάι. Αυτό συμβαίνει επειδή ο σερβο, η οθόνη και ο σαρωτής δακτυλικών αποτυπωμάτων χρειάζονται 5V. Εάν προσθέσετε το joystick σε αυτό, τα ηλεκτρονικά μπορεί να μην λειτουργούν επειδή όλα χρειάζονται 5V. Το joystick θα συνεχίσει να λειτουργεί με 3,3V. Απλώς η μέγιστη τιμή δεν θα είναι 1023, θα είναι 670 ~.

Βήμα 3: Λήψη Βιβλιοθηκών

Σε αυτό το έργο, θα χρειαστείτε 6 βιβλιοθήκες για να χρησιμοποιήσετε όλα τα ηλεκτρονικά. 1 για το σερβο, 1 για τον αισθητήρα δακτυλικών αποτυπωμάτων, 2 για σαρωτή καρτών rfid και 2 για την οθόνη. Το χειριστήριο δεν χρειάζεται βιβλιοθήκη. Τώρα, τι είναι βιβλιοθήκη; Είναι βασικά ένα αρχείο που περιέχει πολλούς κώδικες που μπορείτε να χρησιμοποιήσετε στο έργο σας με απλές εντολές. Για να αποκτήσετε αυτές τις βιβλιοθήκες, πρέπει να μεταβείτε σε ένα μέρος που ονομάζεται GitHub. Εάν γνωρίζετε πώς να κατεβάζετε και να αποσυμπιέζετε βιβλιοθήκες, απλώς μεταβείτε στους παρακάτω συνδέσμους για τις λήψεις. Εάν δεν γνωρίζετε πώς, μπορείτε να μεταβείτε στο εκπαιδευτικό μου, το οποίο μιλά για τον τρόπο λήψης μιας βιβλιοθήκης στο βήμα 3:

ή αναζητήστε ένα βίντεο στο YouTube σχετικά με τον τρόπο λήψης μιας βιβλιοθήκης arduino από το GitHub

ΣΥΝΔΕΣΜΟΙ ΣΕ ΛΙΡΑΡΙΕΣ:

Servo

αισθητήρας δακτυλικών αποτυπωμάτων:

spi

αισθητήρας κάρτας rfid

βιβλιοθήκη οθόνης 1

βιβλιοθήκη οθόνης 2

Βήμα 4: Ρύθμιση αισθητήρα δακτυλικών αποτυπωμάτων και αισθητήρα κάρτας Rfid

Αυτό το βήμα μιλά για τον τρόπο ρύθμισης του αισθητήρα δακτυλικών αποτυπωμάτων και του αισθητήρα κάρτας rfid. Αν δεν έχετε ήδη χρησιμοποιήσει τον αισθητήρα δακτυλικών αποτυπωμάτων σας, θα πρέπει να του δείξετε πώς φαίνεται το δακτυλικό σας αποτύπωμα, ώστε να μπορεί να το αποθηκεύσει στη μνήμη του. Ακόμα κι αν το έχετε χρησιμοποιήσει στο παρελθόν, θα πρέπει να κάνετε αυτό το βήμα. Θα σας πω πώς να το κάνετε εν συντομία, αλλά αν δεν έχει νόημα, πηγαίνετε στον ίδιο διδακτικό σύνδεσμο στο τελευταίο βήμα. Το περνάει πολύ καλά. Βασική απλώς ανοιχτή ιδέα arduino. Μεταβείτε στο αρχείο> παραδείγματα> αισθητήρας δακτυλικών αποτυπωμάτων adafruit> εγγραφή. Ανεβάστε κώδικα στο arduino, ανοίξτε σειριακή οθόνη και ακολουθήστε τα βήματα που σας λέει. Όταν σας λέει να του δώσετε έναν αριθμό. Πληκτρολογήστε 1#.

Τώρα για την κάρτα rfid, αυτό το βήμα είναι αρκετά εύκολο. Ανοίξτε το arduino ide. Μεταβείτε στο αρχείο> παραδείγματα> mfrc522> διαβάστε προσωπικά δεδομένα. Μεταφόρτωση στο arduino και άνοιγμα σειριακής οθόνης. Σαρώστε την κάρτα ή το μπρελόκ που θέλετε να χρησιμοποιήσετε που συνοδεύει τον αισθητήρα σας. Τότε θα σας δώσει κάποιες πληροφορίες. Αναζητήστε το αναγνωριστικό της κάρτας θα είναι 4 σετ των 2 ψηφίων. Κάπως έτσι: AB 45 2Y 45 αλλά ο κωδικός σας θα είναι διαφορετικός. Γράψτε αυτό σε ένα κομμάτι χαρτί. Θα το χρειαστείτε ξανά αργότερα. Αυτά για αυτό το βήμα.

Βήμα 5: Ο ΚΩΔΙΚΟΣ

Αυτό θα είναι το πιο δύσκολο βήμα για τους περισσότερους από εσάς, αλλά είναι αρκετά απλό. Αρχικά αντιγράψτε και επικολλήστε τον κώδικα στο arduino ide από κάτω. Δεύτερον, επεξεργαστείτε τις 2 ενότητες όπου αναφέρεται ΕΠΕΞΕΡΓΑΣΙΑ ΚΩΔΙΚΟΥ. 1 ενότητα είναι για το σαρωτή καρτών, 1 είναι για το χειριστήριο. Αυτά τα βήματα δεν μπορούν να παραλειφθούν. Μόλις τελειώσετε, ανεβάστε κώδικα στο arduino!

#include #include Fingerprint.h>

#περιλαμβάνω

#περιλαμβάνω

#περιλαμβάνω

#περιλαμβάνω

LiquidCrystal_I2C LCD (0x27, 2, 1, 0, 4, 5, 6, 7, 3, ΘΕΤΙΚΟ);

#define RST_PIN 9

#define SS_PIN 10

MFRC522 mfrc522 (SS_PIN, RST_PIN);

SoftwareSerial mySerial (2, 3);

Δακτυλικό αποτύπωμα Adafruit_Fingerprint = Adafruit_Fingerprint (& mySerial);

Servo servo?

char d1;

char d2;

char d3;

char d4;

void setup () {

servo.attach (6);

servo.write (170);

lcd.αρχή (20, 4);

Serial.begin (9600);

ενώ (! Σειριακό)?

SPI.begin ();

mfrc522. PCD_Init ();

καθυστέρηση (4)?

mfrc522. PCD_DumpVersionToSerial ();

καθυστέρηση (100)?

Serial.println ("\ n / nΔοκιμασία ανίχνευσης δακτύλων adafruit");

finger.begin (57600);

καθυστέρηση (5)?

if (finger.verifyPassword ()) {

Serial.println ("Όλα τα συστήματα λειτουργούν",);

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Σαρώστε το δάχτυλό σας");

} αλλο {

Serial.println ("ΣΦΑΛΜΑ: Ο αισθητήρας δακτυλικού αποτυπώματος δεν βρέθηκε!");

lcd.setCursor (0, 0);

lcd.print ("ERROR: Finger print");

lcd.setCursor (1, 1);

lcd.print ("ο αισθητήρας δεν βρέθηκε!");

ενώ (1) {καθυστέρηση (1)? }

}

finger.getTemplateCount ();

Serial.print ("Ο αισθητήρας περιέχει"); Serial.print (finger.templateCount); Serial.println ("πρότυπα"); Serial.println ("Αναμονή έγκυρου δακτύλου …"); }

void (* resetFunc) (void) = 0;

void loop () {

getFingerprintIDez ();

καθυστέρηση (50)?

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

διακόπτης (p) {

περίπτωση FINGERPRINT_OK:

Serial.println ("Η εικόνα λήφθηκε");

Διακοπή;

θήκη FINGERPRINT_NOFINGER:

Serial.println ("Δεν εντοπίστηκε δάχτυλο");

επιστροφή p?

θήκη FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Σφάλμα επικοινωνίας");

επιστροφή p?

θήκη FINGERPRINT_IMAGEFAIL:

Serial.println ("Σφάλμα απεικόνισης");

επιστροφή p?

Προκαθορισμένο:

Serial.println ("Άγνωστο σφάλμα");

επιστροφή p?

}

p = finger.image2Tz ();

διακόπτης (p) {

περίπτωση FINGERPRINT_OK:

Serial.println ("Η εικόνα μετατράπηκε");

Διακοπή;

θήκη FINGERPRINT_IMAGEMESS:

Serial.println ("Η εικόνα είναι πολύ ακατάστατη");

επιστροφή p?

θήκη FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Σφάλμα επικοινωνίας");

επιστροφή p?

θήκη FINGERPRINT_FEATUREFAIL:

Serial.println ("Δεν βρέθηκαν δυνατότητες δακτυλικών αποτυπωμάτων");

επιστροφή p?

θήκη FINGERPRINT_INVALIDIMAGE:

Serial.println ("Δεν βρέθηκαν δυνατότητες δακτυλικών αποτυπωμάτων");

επιστροφή p?

Προκαθορισμένο:

Serial.println ("Άγνωστο σφάλμα");

επιστροφή p?

}

p = finger.fingerFastSearch ();

εάν (p == FINGERPRINT_OK) {

Serial.println ("Βρέθηκε αντιστοιχία εκτύπωσης!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Σφάλμα επικοινωνίας");

επιστροφή p?

} else if (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Δεν βρέθηκε αντιστοιχία");

επιστροφή p?

} αλλο {

Serial.println ("Άγνωστο σφάλμα");

επιστροφή p?

}

Serial.print ("Found ID #"); Serial.print (finger.fingerID);

Serial.print ("με εμπιστοσύνη"); Serial.println (finger.confidence);

επιστροφή δακτύλου.fingerID;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

εάν (p! = FINGERPRINT_OK) επιστροφή -1;

p = finger.image2Tz ();

εάν (p! = FINGERPRINT_OK) επιστροφή -1;

p = finger.fingerFastSearch ();

εάν (p! = FINGERPRINT_OK) επιστροφή -1;

Serial.print ("Found ID #"); Serial.print (finger.fingerID);

Serial.print ("με εμπιστοσύνη"); Serial.println (finger.confidence);

εάν (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Αποδεκτό το δάχτυλο");

lcd.setCursor (2, 0);

lcd.print ("τώρα σάρωση κάρτας …");

lcd.setCursor (0, 3);

lcd.print ("==================>>");

ενώ (! mfrc522. PICC_IsNewCardPresent ());

ενώ (! mfrc522. PICC_ReadCardSerial ());

if (mfrc522.uid.uidByte [0] == 0x92 && // ======================== ΕΠΕΞΕΡΓΑΣΙΑ ΚΩΔΙΚΟΥ ======== ===============

mfrc522.uid.uidByte [1] == 0xAB && // Πάρτε αυτό το κομμάτι χαρτί με το αναγνωριστικό επάνω, υπήρχαν 4 σετ των 2 ψηφίων

mfrc522.uid.uidByte [2] == 0x90 && // Κοιτάξτε τον κωδικό, δείτε πού γράφει 0x92, 0xAB, 0x90, 0x1c; Εισαγάγετε το καθένα

mfrc522.uid.uidByte [3] == 0x1C) {// του διψήφιου τμήματος μετά το 0x. Για παράδειγμα, το τμήμα της ταυτότητας λέει

lcd.clear (); // 3E, στη συνέχεια εισάγετε το 3E μετά το 0x για να κάνετε 0x3E. Κάντε το για κάθε τμήμα

lcd.setCursor (3, 0);

lcd.print ("Τέλος, εισάγετε");

lcd.setCursor (1, 1);

lcd.print ("κωδικός χειριστηρίου");

ενώ (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.setCursor (8, 4);

lcd.print ("*"); εάν (analogRead (A2) <= 100) {

d1 = L;

}

εάν (analogRead (A2)> = 670) {

d1 = R;

}

εάν (analogRead (A3) <= 100) {

d1 = U;

}

εάν (analogRead (A3)> = 670) {

d1 = D;

}

καθυστέρηση (500)?

ενώ (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

εάν (analogRead (A2) <= 100) {

d2 = L;

}

εάν (analogRead (A2)> = 670) {

d2 = R;

}

εάν (analogRead (A3) <= 100) {

d2 = U;

}

εάν (analogRead (A3)> = 670) {

d2 = D;

}

καθυστέρηση (500)?

ενώ (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

εάν (analogRead (A2) <= 100) {

d3 = L;

}

εάν (analogRead (A2)> = 670) {

d3 = R;

}

εάν (analogRead (A3) <= 100) {

d3 = U;

}

εάν (analogRead (A3)> = 670) {

d3 = D;

}

καθυστέρηση (500)?

ενώ (analogRead (A2)> = 10 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

εάν (analogRead (A2) <= 100) {

d4 = L;

}

εάν (analogRead (A2)> = 670) {

d4 = R;

}

εάν (analogRead (A3) <= 100) {

d4 = U;

}

εάν (analogRead (A3)> = 670) {

d4 = D;

}

καθυστέρηση (500)?

εάν (d1 == L && d2 == U && d3 == L && d4 == R) {// ================= ΕΠΕΞΕΡΓΑΣΙΑ ΚΩΔΙΚΟΥ ====== =================

lcd.clear (); // Αυτή η ενότητα είναι όπου μπορείτε να επεξεργαστείτε τον κωδικό πρόσβασης με το χειριστήριο

lcd.setCursor (2, 0); // ο κωδικός πρόσβασης έχει οριστεί σε αριστερά, πάνω αριστερά, δεξιά. Αν θέλετε να αλλάξετε

lcd.print ("Η πρόσβαση παραχωρήθηκε!"); // αυτό, βάλτε ένα L για αριστερά, R για δεξιά, U για πάνω ή D για κάτω σε οποιοδήποτε από τα

lcd.setCursor (2, 1); // 4 ενότητες με ένα γράμμα μετά τα σύμβολα ==.

lcd.print ("Το συρτάρι ξεκλείδωτο.");

lcd.setCursor (2, 2);

lcd.print ("Όταν τελειώσετε, μετακινήστε");

lcd.setCursor (1, 3);

lcd.print ("joystick to relock");

servo.write (90);

ενώ (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print ("Συρτάρι κλειδωμένο");

καθυστέρηση (3000)?

resetFunc ();

}αλλού{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCESS DENIED !!!");

lcd.setCursor (0, 2);

lcd.print ("Επανεκκίνηση συστήματος …");

καθυστέρηση (3000)?

resetFunc ();

}

}αλλού{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCESS DENIED !!!");

lcd.setCursor (0, 2);

lcd.print ("Επανεκκίνηση συστήματος …");

καθυστέρηση (3000)?

resetFunc ();

}

}αλλού{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCESS DENIED !!!");

lcd.setCursor (0, 2);

lcd.print ("Επανεκκίνηση συστήματος …");

καθυστέρηση (3000)?

resetFunc ();

}

επιστροφή δακτύλου.fingerID; }

Βήμα 6: Τέλος

Ένα πράγμα που ξέχασα να σας πω, καλά 2 πράγματα είναι ότι το έφτιαξα πριν τραβήξω φωτογραφίες, οπότε δεν μπορούσα να σας δείξω πώς έφτιαξα το κουτί. Το άλλο είναι ότι συνιστάται να βιδώσετε το servo εξάρτημα στο τμήμα που γυρίζει. Εάν δεν το κάνετε, κάποιος θα μπορούσε να τραβήξει το συρτάρι ενώ είναι κλειδωμένο και να τραβήξει το κομμάτι. Αλλά προτού το βιδώσετε, βρείτε το σωστό σημείο που θα το βάλετε γιατί το σερβίς γυρίζει σε κάποιο βαθμό. Or μπορείτε απλά να το αλλάξετε στον κώδικα. Εάν ορισμένα από τα ηλεκτρονικά λειτουργούν αστεία, μπορεί να θέλετε να βρείτε έναν διαφορετικό τρόπο για να λάβετε 5V για μερικά από αυτά. Παρατήρησα όταν έλαμψε ο σαρωτής δακτυλικών αποτυπωμάτων μου, η οθόνη θα αναβοσβήνει ελαφρώς μαζί του και το σερβο θα έκανε θόρυβο. Όταν μετακινείτο το σερβο, η οθόνη θολώνει. Ελπίζω να σας άρεσε το έργο! Εάν έχετε οποιεσδήποτε ερωτήσεις, αφήστε τις στα σχόλια. Δεν είμαι σε πολλές οδηγίες, αλλά θα τους απαντήσω το συντομότερο δυνατό!

Συνιστάται: