Სარჩევი:

Arduino High Tech Safe: 6 ნაბიჯი
Arduino High Tech Safe: 6 ნაბიჯი

ვიდეო: Arduino High Tech Safe: 6 ნაბიჯი

ვიდეო: Arduino High Tech Safe: 6 ნაბიჯი
ვიდეო: Amazing arduino project 2024, ნოემბერი
Anonim
Arduino მაღალტექნოლოგიური უსაფრთხო
Arduino მაღალტექნოლოგიური უსაფრთხო

ეს არის ჩემი arduino მაღალტექნოლოგიური უსაფრთხო. თქვენ უნდა დაასკანიროთ თითი, დაათვალიეროთ თქვენი ბარათი, შემდეგ შეიყვანოთ 4 ციფრიანი პაროლი უჯრის განსაბლოკად. ეს პროექტი არ არის რეკომენდებული დამწყებთათვის, რადგან ის ძალიან მოწინავეა. კოდი გრძელია, მაგრამ მე მას გავუზიარებ ამ პროექტს. ღირებულება დაახლოებით 75 დოლარია, თუ თქვენ ააშენებთ იგივე სეიფს, როგორც მე. ამ პროექტს ასევე შეიძლება 1-3 დღე დასჭირდეს. მაშ, დავიწყოთ!

მარაგები

ჩემი და იგივე სეიფის ასაშენებლად დაგჭირდებათ:

Arduino (Uno რეკომენდირებულია, რადგან არ მაქვს ნაბიჯები arduino mega ან nano. მაგრამ მაინც შეგიძლიათ მათი გამოყენება)

პურის დაფა

სერვო

ჯუმბერის მავთულები

ჯოისტიკი

20*4 (შეგიძლიათ გამოიყენოთ 16*4, მაგრამ მოგიწევთ კოდის შეცვლა)

თითის ანაბეჭდის სკანერი

mfrc522 rfid ბარათის სკანერი

ვედრო ლეგო

ნაბიჯი 1: ყუთის შექმნა

ყუთის მშენებლობა
ყუთის მშენებლობა

პირველ რიგში დაგჭირდებათ ყუთი თქვენი ელექტრონიკის ჩასადებად. თქვენ შეგიძლიათ გამოიყენოთ ლეგოები, 3D დაბეჭდილი ყუთი, ან თუნდაც მუყაო! (თუმცა ეს შეიძლება იყოს უფრო რთული) არ დაგავიწყდეთ მასში ჩადოთ უჯრა და თქვენი ელექტრონიკა. თუ თქვენ იყენებთ rfid ბარათის სკანერს, თქვენ არ გჭირდებათ ხვრელის გაკეთება, თუ თქვენი კედლები თხელია. ბარათები ჯერ კიდევ მუშაობს, მაგრამ თქვენ უნდა დახუროთ კლავიშები ისე, რომ rfid ბარათის სენორმა შეძლოს მათი წაკითხვა. ასევე დატოვეთ ადგილი თქვენი არდუინოსა და სადენების შიგნით. შენიშვნა: უჯრის აშენებისას დატოვეთ მასში ხვრელი, რათა თქვენსმა სერვომ შეძლოს უჯრის გადაბრუნება და ჩაკეტვა.

ნაბიჯი 2: გაყვანილობა

გაყვანილობა!
გაყვანილობა!

ეს ნაბიჯი შეიძლება გართულდეს, რადგან თქვენ უნდა შეაერთოთ მავთულები ზუსტად იმ ადგილას, წინააღმდეგ შემთხვევაში ელექტრონიკა არ იმუშავებს. მე არ მაქვს გაყვანილობის სქემა, მაგრამ გეტყვით, რომ თითოეული მიდის. გაყვანილობა განკუთვნილია მხოლოდ arduino uno– სთვის. თქვენ უნდა მოძებნოთ სადენების დაყენება თუ იყენებთ არდუინოს მეგა ან ნანოს. თუ თქვენ არ იყენებთ ჩემს ყველა ელექტრონულ მოწყობილობას, შეგიძლიათ უბრალოდ გამოტოვოთ ეს გაყვანილობა.

თითის ანაბეჭდის სკანერი: მწვანე მავთული: 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.3 ვ -ზე, როდესაც გვერდით 5 ვ აწერია. ეს იმიტომ ხდება, რომ სერვო, ეკრანი და თითის ანაბეჭდის სკანერი საჭიროებს 5 ვ. თუ ამას ჯოისტიკს დაამატებთ, ელექტრონიკა შეიძლება არ იმუშაოს, რადგან ყველაფერს 5V სჭირდება. ჯოისტიკი კვლავ იმუშავებს 3.3 ვ. უბრალოდ მაქსიმალური ღირებულება არ იქნება 1023, ეს იქნება 670 ფუნტი.

ნაბიჯი 3: ჩამოტვირთეთ ბიბლიოთეკები

ამ პროექტში დაგჭირდებათ 6 ბიბლიოთეკა, რომ გამოიყენოთ ყველა ელექტრონიკა. 1 სერვოზე, 1 თითის ანაბეჭდის სენსორზე, 2 rfid ბარათის სკანერზე და 2 ეკრანზე. ჯოისტიკს არ სჭირდება ბიბლიოთეკა. ახლა რა არის ბიბლიოთეკა? ეს არის ძირითადად ფაილი, რომელიც შეიცავს უამრავ კოდს, რომელიც შეგიძლიათ გამოიყენოთ თქვენს პროექტში მარტივი ბრძანებებით. ამ ბიბლიოთეკების მისაღებად, თქვენ უნდა წახვიდეთ იმ ადგილას, რომელსაც ჰქვია GitHub. თუ იცით როგორ ჩამოტვირთოთ და გახსნათ ბიბლიოთეკები, გადმოსაწერად გადადით ქვემოთ მოცემულ ბმულებზე. თუ არ იცით როგორ, შეგიძლიათ მიხვიდეთ ჩემს ინსტრუქტაჟში, რომელიც საუბრობს ბიბლიოთეკის გადმოწერის შესახებ მე –3 საფეხურზე:

ან მოძებნეთ youtube ვიდეო, თუ როგორ ჩამოტვირთოთ arduino ბიბლიოთეკა GitHub– დან

ბმულები ლირიასთან:

სერვო

თითის ანაბეჭდის სენსორი:

spi

rfid ბარათის სენსორი

ეკრანის ბიბლიოთეკა 1

ეკრანის ბიბლიოთეკა 2

ნაბიჯი 4: თითის ანაბეჭდის სენსორის და Rfid ბარათის სენსორის დაყენება

ეს ნაბიჯი საუბრობს იმაზე, თუ როგორ უნდა შეიქმნას თითის ანაბეჭდის სენსორი და rfid ბარათის სენსორი. თუ თქვენ უკვე არ გამოიყენეთ თითის ანაბეჭდის სენსორი, თქვენ უნდა აჩვენოთ ის, თუ როგორ გამოიყურება თქვენი თითის ანაბეჭდი, რათა შეინახოთ იგი მეხსიერებაში. მაშინაც კი, თუ თქვენ მას ადრე იყენებდით, ალბათ მაინც უნდა გადადგათ ეს ნაბიჯი. მე გეტყვით მოკლედ, თუ როგორ უნდა გააკეთოთ ეს, მაგრამ თუ აზრი არ აქვს, გადადით იმავე სასწავლო ბმულზე ბოლო ეტაპზე. ეს ძალიან კარგად გადის მასზე. ძირითადი მხოლოდ ღია arduino იდეა. გადადით ფაილზე> მაგალითები> adafruit თითის ანაბეჭდის სენსორი> დარეგისტრირდით. ატვირთეთ კოდი arduino– ზე, გახსენით სერიული მონიტორი და მიჰყევით იმ ნაბიჯებს, რასაც ის გეუბნებათ. როდესაც ის გეუბნებათ მიეცით ნომერი. ჩაწერეთ 1#.

რაც შეეხება rfid ბარათს, ეს ნაბიჯი საკმაოდ მარტივია. გახსენით არდუინოს იდეა. გადადით ფაილზე> მაგალითები> mfrc522> წაიკითხეთ პერსონალური მონაცემები. ატვირთეთ arduino– ზე და გახსენით სერიული მონიტორი. დაასკანირეთ ბარათი ან საკვანძო ჯაჭვი, რომლის გამოყენებაც გსურთ, თქვენს სენსორთან ერთად. შემდეგ ის მოგაწვდით გარკვეულ ინფორმაციას. მოძებნეთ ბარათის პირადობის მოწმობა, ის იქნება 4 ციფრის 2 კომპლექტი. მსგავსი რამ: AB 45 2Y 45, მაგრამ თქვენი კოდი განსხვავებული იქნება. ჩაწერეთ ეს ფურცელზე. მოგვიანებით ისევ დაგჭირდებათ. ეს არის ეს ნაბიჯი.

ნაბიჯი 5: კოდი

ეს უმძიმესი ნაბიჯი იქნება თქვენი უმრავლესობისთვის, მაგრამ საკმაოდ მარტივია. ჯერ დააკოპირეთ და ჩასვით კოდი არდუინოს იდეაში ქვემოდან. მეორე, შეასწორეთ 2 განყოფილება, სადაც ნათქვამია, რომ შეცვალო კოდი. 1 განყოფილება განკუთვნილია ბარათის სკანერისთვის, 1 - ჯოისტიკისთვის. ამ ნაბიჯების გამოტოვება შეუძლებელია. დასრულების შემდეგ, ატვირთეთ კოდი arduino– ში!

#მოიცავს #მოიცავს თითის ანაბეჭდს. h>

#ჩართეთ

#ჩართეთ

#ჩართეთ

#ჩართეთ

LiquidCrystal_I2C LCD (0x27, 2, 1, 0, 4, 5, 6, 7, 3, პოზიტიური);

#განსაზღვრეთ RST_PIN 9

#განსაზღვრეთ SS_PIN 10

MFRC522 mfrc522 (SS_PIN, RST_PIN);

პროგრამული უზრუნველყოფა სერიული mySerial (2, 3);

Adafruit_Fingerprint finger = Adafruit_Fingerprint (& mySerial);

სერვო სერვო;

char d1;

char d2;

char d3;

char d4;

void setup () {

servo.attach (6);

servo.write (170);

lcd. დასაწყისი (20, 4);

სერიული.დაწყება (9600);

ხოლო (! სერიული);

SPI. დასაწყისი ();

mfrc522. PCD_Init ();

დაგვიანება (4);

mfrc522. PCD_DumpVersionToSerial ();

დაგვიანება (100);

Serial.println ("\ n / nAdafruit თითის გამოვლენის ტესტი");

თითის დაწყება (57600);

დაგვიანება (5);

if (finger.verifyPassword ()) {

Serial.println ("ყველა სისტემა მუშაობს");

lcd. წმინდა ();

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 ("ნაპოვნია ბეჭდური შესატყვისი!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("კომუნიკაციის შეცდომა");

დაბრუნება p;

} სხვა თუ (p == FINGERPRINT_NOTFOUND) {

Serial.println ("შესატყვისი ვერ ვიპოვე");

დაბრუნება p;

} სხვა {

Serial.println ("უცნობი შეცდომა");

დაბრუნება p;

}

Serial.print ("ნაპოვნია ID #"); Serial.print (finger.fingerID);

Serial.print ("ნდობით"); Serial.println (თითი. თავდაჯერებულობა);

დაბრუნების თითი. 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 ("ნაპოვნია ID #"); Serial.print (finger.fingerID);

Serial.print ("ნდობით"); Serial.println (თითი. თავდაჯერებულობა);

თუ (finger.fingerID == 1) {

lcd. წმინდა ();

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) {// 2 ციფრიანი მონაკვეთის 0x შემდეგ. მაგალითად, პირადობის მოწმობის განყოფილებაში წერია

lcd. წმინდა (); // 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 ("*"); if (analogRead (A2) <= 100) {

d1 = L;

}

if (analogRead (A2)> = 670) {

d1 = R;

}

if (analogRead (A3) <= 100) {

d1 = U;

}

if (analogRead (A3)> = 670) {

d1 = D;

}

დაგვიანება (500);

ხოლო (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

if (analogRead (A2) <= 100) {

d2 = L;

}

if (analogRead (A2)> = 670) {

d2 = R;

}

if (analogRead (A3) <= 100) {

d2 = U;

}

if (analogRead (A3)> = 670) {

d2 = D;

}

დაგვიანება (500);

ხოლო (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

if (analogRead (A2) <= 100) {

d3 = L;

}

if (analogRead (A2)> = 670) {

d3 = R;

}

if (analogRead (A3) <= 100) {

d3 = U;

}

if (analogRead (A3)> = 670) {

d3 = D;

}

დაგვიანება (500);

ხოლო (analogRead (A2)> = 10 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

if (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. წმინდა (); // ეს განყოფილება არის სადაც შეგიძლიათ პაროლის რედაქტირება ჯოისტიკით

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);

ხოლო (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print ("უჯრა ჩაკეტილია");

დაგვიანება (3000);

resetFunc ();

} სხვა {

lcd. წმინდა ();

lcd.setCursor (2, 0);

lcd.print ("წვდომა უარყოფილია !!!");

lcd.setCursor (0, 2);

lcd.print ("სისტემის გადატვირთვა …");

დაგვიანება (3000);

resetFunc ();

}

} სხვა {

lcd. წმინდა ();

lcd.setCursor (2, 0);

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

lcd.setCursor (0, 2);

lcd.print ("სისტემის გადატვირთვა …");

დაგვიანება (3000);

resetFunc ();

}

} სხვა {

lcd. წმინდა ();

lcd.setCursor (2, 0);

lcd.print ("წვდომა უარყოფილია !!!");

lcd.setCursor (0, 2);

lcd.print ("სისტემის გადატვირთვა …");

დაგვიანება (3000);

resetFunc ();

}

დაბრუნების თითი. FingerID; }

ნაბიჯი 6: დაასრულეთ

ერთი რამ დამავიწყდა გითხრათ, ასევე 2 რამ არის ის, რაც მე ავაშენე სანამ სურათებს ვიღებდი, ასე რომ მე ვერ გაჩვენებდი როგორ ავაშენე ყუთი. მეორე ის არის, რომ რეკომენდირებულია სერვო ნაწილის ხრახნი იმ ნაწილზე, რომელიც ბრუნდება. თუ არა, ვიღაცას შეუძლია უჯრა გაიყვანოს ჩაკეტილ მდგომარეობაში და ამოიღოს ნაჭერი. სანამ გააფუჭებ, იპოვე სწორი ადგილი, სადაც უნდა ჩაიცვი, რადგან სერვო გარკვეულ ხარისხში იქცევა. ან შეგიძლიათ უბრალოდ შეცვალოთ იგი კოდში. თუ ზოგიერთი ელექტრონიკა სასაცილოდ მოქმედებს, თქვენ შეიძლება მოინდომოთ სხვა გზების პოვნა ზოგიერთ მათგანზე. მე შევამჩნიე, როდესაც ჩემი თითის ანაბეჭდის სკანერი გაანათა, ეკრანი ოდნავ ანათებდა და სერვო ხმაურს გამოსცემდა. როდესაც სერვო გადავიდა, ეკრანი დაბნელდა. იმედი მაქვს მოგეწონათ პროექტი! თუ თქვენ გაქვთ რაიმე შეკითხვები, დატოვეთ ისინი კომენტარებში. ბევრს არ ვსწავლობ, მაგრამ როგორც კი შევძლებ, მათ ვპასუხობ!

გირჩევთ: