תוכן עניינים:

כספת Arduino High Tech: 6 שלבים
כספת Arduino High Tech: 6 שלבים

וִידֵאוֹ: כספת Arduino High Tech: 6 שלבים

וִידֵאוֹ: כספת Arduino High Tech: 6 שלבים
וִידֵאוֹ: 16 Amazing Security Gadgets That Will Blow Your Mind 2024, נוֹבֶמבֶּר
Anonim
כספת Arduino High Tech
כספת Arduino High Tech

זהו כספת ההייטק הארדואינו שלי. עליך לסרוק את האצבע, לסרוק את הכרטיס שלך ולאחר מכן להזין סיסמה בת 4 ספרות כדי לבטל את נעילת המגירה. פרויקט זה אינו מומלץ למתחילים מכיוון שהוא מתקדם מאוד. הקוד ארוך, אך אשתף אותו בפרויקט זה. העלות היא בסביבות 75 $ אם אתה בונה את אותה כספת כמוני. פרויקט זה עשוי להימשך גם 1-3 ימים. אז בואו נתחיל!

אספקה

כדי לבנות את אותו כספת תצטרך:

Arduino (מומלץ Uno כי אין לי שלבים עבור arduino mega או nano. אבל אתה עדיין יכול להשתמש בהם)

קרש לחם

סרוו

חוטי מגשר

מַקֵל נוֹעַם

20*4 (ניתן להשתמש ב- 16*4, אך יהיה עליך לשנות את הקוד)

סורק טביעת אצבע

סורק כרטיסי rfid mfrc522

דלי לגו

שלב 1: בניית קופסה

בניית קופסה
בניית קופסה

ראשית תזדקק לקופסה להכנסת האלקטרוניקה שלך. תוכל להשתמש בלגו, קופסה מודפסת תלת מימד או אפילו קרטון! (אם כי זה עשוי להיות קשה יותר) אל תשכח לשים בה חורים למגירה ולאלקטרוניקה שלך. אם אתה משתמש בסורק כרטיסי ה- rfid, אינך צריך לשים לזה חור אם הקירות שלך דקים. הכרטיסים עדיין עובדים, אך עליך לסגור את מחזיקי המפתחות כדי שסנור כרטיס ה- rfid יוכל לקרוא אותם. השאר גם מקום לארדואינו ולחוטים שלך בפנים. הערה: כאשר אתה בונה את המגירה, השאר בו חור כדי שהסרוו שלך יוכל להסתובב ולנעל את המגירה.

שלב 2: חיבור

חיבור!
חיבור!

שלב זה יכול להיות מסובך מכיוון שאתה צריך לחבר חוטים במקום המדויק או שהאלקטרוניקה לא תעבוד. אין לי תרשים חיווט, אבל אני אגיד לך שכל אחד יעבור. החיווט מיועד לאו ארדואינו בלבד. יהיה עליך לחפש כדי לשים את החוטים אם אתה משתמש במגה או ננו ארדואינו. אם אתה לא משתמש בכל האלקטרוניקים שיש לי, אתה יכול פשוט לדלג על החיווט הזה.

סורק הדפסה באצבע: חוט ירוק: חוט לבן D2: חוט שחור D3: חוט אדום GND: 5V

ג'ויסטיק: 5V = 3.3V GND = GND X = A2 Y = A3 מתג = 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

סרוו: חוט אדום: 5V חוט חום: חוט צהוב GND: D6

הערה: אין לחבר סורק כרטיס RFID ל- 5V. אם אתה עושה, זה יישבר !!!

יתכן שאתה תוהה מדוע אמרתי לחבר את כוח הג'ויסטיק ל -3.3V כאשר כתוב 5V בצד. זה בגלל שסרוו, המסך וסורק טביעות האצבע צריכים 5V. אם תוסיף לזה את הג'ויסטיק, ייתכן שהאלקטרוניקה לא תפעל כי הכל צריך 5V. הג'ויסטיק עדיין יעבוד עם 3.3V. זה רק שהערך המרבי לא יעמוד על 1023, הוא יהיה ~ 670.

שלב 3: הורדת ספריות

בפרויקט זה, תזדקק ל -6 ספריות לשימוש בכל האלקטרוניקה. 1 לסרוו, 1 לחיישן טביעות האצבע, 2 לסורק כרטיסי rfid ו- 2 למסך. הג'ויסטיק אינו זקוק לספרייה. עכשיו, מהי ספריה? זהו בעצם קובץ המכיל הרבה קוד שתוכל להשתמש בו בפרויקט שלך באמצעות פקודות פשוטות. כדי להשיג את הספריות האלה, עליך ללכת למקום שנקרא GitHub. אם אתה יודע כיצד להוריד ולחלץ ספריות, פשוט עבור אל הקישורים למטה להורדות. אם אתה לא יודע איך, אתה יכול ללכת למדריך שלי שמדבר על איך להוריד ספרייה בשלב 3:

או חפש סרטון יוטיוב כיצד להוריד ספריית arduino מ- GitHub

קישורים ל LIRARIES:

סרוו

חיישן טביעות אצבע:

spi

חיישן כרטיס rfid

ספריית מסך 1

ספריית מסך 2

שלב 4: הגדרת חיישן טביעות אצבע וחיישן כרטיס RFID

שלב זה מדבר על אופן ההתקנה של חיישן טביעות אצבע וחיישן כרטיס rfid. אלא אם כן השתמשת כבר בחיישן טביעות האצבע שלך, יהיה עליך להראות לו כיצד נראית טביעת האצבע שלך כדי שתוכל לשמור אותה בזיכרון שלה. גם אם השתמשת בו בעבר, אתה כנראה עדיין צריך לעשות את השלב הזה. אני אגיד לך איך לעשות את זה בקצרה, אבל אם זה לא הגיוני עבור לאותו קישור להוראה בשלב האחרון. זה עובר את זה טוב מאוד. הבסיס פשוט לפתוח ארדואינו. עבור לקובץ> דוגמאות> חיישן טביעות אצבע של adafruit> הירשם. העלה קוד ל- arduino, פתח צג סדרתי ובצע את השלבים שהוא אומר לך. כשהוא אומר לך לתת לו מספר. הקלד 1#.

עכשיו לגבי כרטיס ה- rfid, שלב זה די קל. ארדואינו פתוח. עבור לקובץ> דוגמאות> mfrc522> קרא נתונים אישיים. העלה ל- arduino ופתח צג סדרתי. סרוק את הכרטיס או את מחזיק המפתחות שברצונך להשתמש בו שהגיע עם החיישן שלך. ואז זה ייתן לך קצת מידע. חפש את תעודת הזהות של הכרטיס זה יהיה 4 סטים של 2 ספרות. משהו כזה: AB 45 2Y 45 אבל הקוד שלך יהיה שונה. רשום זאת על פיסת נייר. תזדקק לזה שוב מאוחר יותר. זהו זה לשלב הזה.

שלב 5: הקוד

זה יהיה הצעד הקשה ביותר עבור רובכם, אך הוא די פשוט. העתק והדבק את הקוד תחילה ברעיון הארדואינו מלמטה. שנית, ערוך את 2 החלקים שבהם כתוב ערוך קוד. חלק אחד מיועד לסורק הכרטיסים, 1 לג'ויסטיק. לא ניתן לדלג על שלבים אלה. לאחר סיום, העלה קוד ל- arduino!

#include #include Fingerprint.h>

#לִכלוֹל

#לִכלוֹל

#לִכלוֹל

#לִכלוֹל

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

#הגדר RST_PIN 9

#הגדר SS_PIN 10

MFRC522 mfrc522 (SS_PIN, RST_PIN);

SoftwareSerial mySerial (2, 3);

Adafruit_Fingerprint finger = Adafruit_Fingerprint (& mySerial);

סרוו סרוו;

char d1;

char d2;

char d3;

char d4;

הגדרת בטל () {

servo.attach (6);

servo.write (170);

lcd.begin (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 ("שגיאה: הדפסת אצבע");

lcd.setCursor (1, 1);

lcd.print ("חיישן לא נמצא!");

בעוד (1) {עיכוב (1); }

}

finger.getTemplateCount ();

Serial.print ("החיישן מכיל"); Serial.print (finger.templateCount); Serial.println ("תבניות"); Serial.println ("מחכה לאצבע תקפה …"); }

void (* resetFunc) (void) = 0;

לולאת חלל () {

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 ("מצאתי התאמת הדפסה!");

} אחרת אם (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("שגיאת תקשורת");

החזרה p;

} אחר אם (p == FINGERPRINT_NOTFOUND) {

Serial.println ("לא מצאתי התאמה");

החזרה p;

} אחר {

Serial.println ("שגיאה לא ידועה");

החזרה p;

}

Serial.print ("מזהה מספר נמצא"); Serial.print (finger.fingerID);

Serial.print ("בביטחון של"); Serial.println (אצבע.בטחון);

החזר אצבע.אצבע מזהה;

}

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 ("מזהה מספר נמצא"); Serial.print (finger.fingerID);

Serial.print ("בביטחון של"); Serial.println (אצבע.בטחון);

if (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("התקבל אצבע");

lcd.setCursor (2, 0);

lcd.print ("כעת סרוק כרטיס …");

lcd.setCursor (0, 3);

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

while (! mfrc522. PICC_IsNewCardPresent ());

while (! 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 ("סיסמת ג'ויסטיק");

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.setCursor (8, 4);

lcd.print ("*"); אם (analogRead (A2) <= 100) {

d1 = L;

}

if (analogRead (A2)> = 670) {

d1 = R;

}

if (analogRead (A3) <= 100) {

d1 = U;

}

if (analogRead (A3)> = 670) {

d1 = D;

}

עיכוב (500);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

אם (analogRead (A2) <= 100) {

d2 = L;

}

if (analogRead (A2)> = 670) {

d2 = R;

}

if (analogRead (A3) <= 100) {

d2 = U;

}

if (analogRead (A3)> = 670) {

d2 = D;

}

עיכוב (500);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

אם (analogRead (A2) <= 100) {

d3 = L;

}

if (analogRead (A2)> = 670) {

d3 = R;

}

if (analogRead (A3) <= 100) {

d3 = U;

}

if (analogRead (A3)> = 670) {

d3 = D;

}

עיכוב (500);

while (analogRead (A2)> = 10 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

אם (analogRead (A2) <= 100) {

d4 = L;

}

if (analogRead (A2)> = 670) {

d4 = R;

}

if (analogRead (A3) <= 100) {

d4 = U;

}

if (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 ("ג'ויסטיק לנעילה מחדש");

servo.write (90);

while (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 ("הגישה נדחתה !!!");

lcd.setCursor (0, 2);

lcd.print ("הפעלה מחדש של המערכת …");

עיכוב (3000);

resetFunc ();

}

}אַחֵר{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("הגישה נדחתה !!!");

lcd.setCursor (0, 2);

lcd.print ("הפעלה מחדש של המערכת …");

עיכוב (3000);

resetFunc ();

}

}אַחֵר{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("הגישה נדחתה !!!");

lcd.setCursor (0, 2);

lcd.print ("הפעלה מחדש של המערכת …");

עיכוב (3000);

resetFunc ();

}

החזר אצבע.אצבע מזהה; }

שלב 6: סיים

דבר אחד שכחתי לומר לך, ובכן 2 דברים הם שבניתי את זה לפני שצילמתי, כך שלא יכולתי להראות לך כיצד בניתי את הקופסה. השני הוא שמומלץ להבריג חלק סרוו על החלק שהופך. אם לא, מישהו יכול למשוך את המגירה כשהיא נעולה ולמשוך את החלק. אבל לפני שאתה מברג אותו, מצא את המקום הנכון להניח אותו מכיוון שהסרוו מסתובב במידה מסוימת. או שאתה יכול פשוט לשנות את זה בקוד. אם חלק מהאלקטרוניקה מתנהגים מצחיקים, ייתכן שתרצה למצוא דרך אחרת להשיג 5V לחלקם. שמתי לב שכאשר סורק טביעות האצבע שלי מהבהב, המסך היה מהבהב איתו מעט והסרוו היה עושה רעש. כשהסרוו זז המסך היה מעומעם. אני מקווה שנהניתם מהפרויקט! אם יש לך שאלות, השאר אותן בתגובות. אני לא הרבה על מדריכים, אבל אענה עליהם בהקדם האפשרי!

מוּמלָץ: