Բովանդակություն:

Arduino High Tech Safe: 6 քայլ
Arduino High Tech Safe: 6 քայլ

Video: Arduino High Tech Safe: 6 քայլ

Video: Arduino High Tech Safe: 6 քայլ
Video: Amazing arduino project 2024, Հուլիսի
Anonim
Arduino High Tech Անվտանգ
Arduino High Tech Անվտանգ

Սա իմ arduino բարձր տեխնոլոգիական պահարանն է: Դուք պետք է սկանավորեք ձեր մատը, սկանավորեք ձեր քարտը, այնուհետև մուտքագրեք 4 նիշանոց գաղտնաբառ ՝ դարակը բացելու համար: Այս նախագիծը խորհուրդ չի տրվում սկսնակների համար, քանի որ այն շատ առաջադեմ է: Կոդը երկար է, բայց ես այն կկիսեմ այս նախագծում: Արժեքը մոտ $ 75 է, եթե դուք կառուցեք ինձ հետ նույն պահարանը: Այս նախագիծը նույնպես կարող է տևել 1-3 օր: Այսպիսով, եկեք սկսենք:

Պարագաներ

Իմ և նույն պահարանի կառուցման համար ձեզ հարկավոր է.

Arduino (Uno- ն խորհուրդ է տրվում, քանի որ arduino mega կամ nano- ի համար քայլեր չունեմ: Բայց դուք դեռ կարող եք դրանք օգտագործել)

տախտակ

ծառայություն

jumper լարերը

ջոյստիկ

20*4 (կարող եք օգտագործել 16*4, բայց ստիպված կլինեք փոխել կոդը)

մատնահետքերի սկաներ

mfrc522 rfid քարտերի սկաներ

մի դույլ լեգո

Քայլ 1: Արկղ կառուցելը

Արկղ կառուցելը
Արկղ կառուցելը

Սկզբում ձեզ հարկավոր է տուփ ՝ ձեր էլեկտրոնիկան տեղադրելու համար: Դուք կարող եք օգտագործել լեգոներ, 3d տպագիր տուփ կամ նույնիսկ ստվարաթուղթ: (Թեև դա կարող է ավելի դժվար լինել) Մի մոռացեք դրա մեջ անցքեր տեղադրել դարակի համար և ձեր էլեկտրոնիկան: Եթե դուք օգտագործում եք rfid քարտերի սկաները, ապա դրա պատերը պետք չէ դնել, եթե պատերը բարակ են: Քարտերը դեռ աշխատում են, բայց դուք պետք է փակագծերը փակեք այնպես, որ rfid քարտի սենսորը կարողանա դրանք կարդալ: Նաև տեղ թողեք ներսում ձեր արդուինոյի և լարերի համար: Ո NOTՇԱԴՐՈԹՅՈՆ. Երբ կառուցում եք գզրոցը, դրա մեջ մի անցք թողեք, որպեսզի ձեր սերվոն կարողանա պտտել և կողպել դարակը:

Քայլ 2: Միացում

Միացում
Միացում

Այս քայլը կարող է բարդ լինել, քանի որ անհրաժեշտ է լարերը միացնել ճշգրիտ տեղում, հակառակ դեպքում էլեկտրոնիկան չի աշխատի: Ես էլեկտրագծերի դիագրամ չունեմ, բայց ես ձեզ կասեմ, եթե յուրաքանչյուրը գնա: Էլեկտրագծերը միայն arduino uno- ի համար են: Եթե դուք օգտագործում եք arduino մեգա կամ նանո, դուք պետք է փնտրեք լարերը տեղադրելու համար: Եթե դուք չեք օգտագործում իմ ունեցած բոլոր էլեկտրոնները, կարող եք պարզապես բաց թողնել այդ լարերը:

Մատնահետքի սկաներ `կանաչ մետաղալար` D2 սպիտակ մետաղալար `D3 սև մետաղալար` GND կարմիր մետաղալար `5V

Oyոյստիկ `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

Servo: կարմիր մետաղալար ՝ 5V Շագանակագույն մետաղալար ՝ GND դեղին մետաղալար ՝ D6

ՈEՇԱԴՐՈԹՅՈՆ. ՄԻ ՄՏԱԵՔ RFID ՔԱՐՏԻ ՍԿԱՆԵՐԸ 5 Վ ԼՈՅՍ: ԵԹԵ ԱՆԵԼՈ,, ԿԿՏԱՍԻ !!!

Ձեզ կարող է հետաքրքրել, թե ինչու ես ասացի, որ ջոյսթիկի հոսանքը միացրեք 3.3 Վ -ին, երբ կողքին գրված է 5 Վ: Դա պայմանավորված է նրանով, որ սերվոյին, էկրանին և մատնահետքի սկաների համար անհրաժեշտ է 5 Վ: Եթե դրան գումարեք նաև ջոյսթիկը, էլեկտրոնիկան կարող է չաշխատել, քանի որ ամեն ինչ 5 Վ -ի կարիք ունի: Joyոյստիկը դեռ կաշխատի 3.3 Վ լարման դեպքում: Պարզապես առավելագույն արժեքը չի լինի 1023, այն կլինի 670 ֆունտ:

Քայլ 3. Գրադարանների ներբեռնում

Այս նախագծում ձեզ անհրաժեշտ կլինեն 6 գրադարաններ ՝ ամբողջ էլեկտրոնիկայից օգտվելու համար: 1 -ը servo- ի համար, 1 -ը `մատնահետքի տվիչի համար, 2 -ը` rfid քարտերի սկաների համար և 2 -ը `էկրանի համար: Joyոյստիկին գրադարան պետք չէ: Հիմա ի՞նչ է գրադարանը: Դա հիմնականում ֆայլ է, որը պարունակում է բազմաթիվ կոդեր, որոնք կարող եք օգտագործել ձեր նախագծում ՝ պարզ հրամաններով: Այս գրադարանները ձեռք բերելու համար հարկավոր է գնալ մի վայր, որը կոչվում է GitHub: Եթե գիտեք, թե ինչպես ներբեռնել և բացել գրադարանները, պարզապես ներբեռնման համար անցեք ստորև բերված հղումներով: Եթե չգիտեք, թե ինչպես, կարող եք գնալ իմ հրահանգին, որը խոսում է գրադարան ներլցնելու մասին 3-րդ քայլում ՝

կամ փնտրեք youtube տեսանյութ, թե ինչպես ներբեռնել arduino գրադարանը GitHub- ից

ՀԻՄՆԵՐ ԼԻՐԱՅԻՆՆԵՐԻՆ.

Սերվո

մատնահետքի ցուցիչ ՝

spi

rfid քարտի տվիչ

էկրանի գրադարան 1

էկրանի գրադարան 2

Քայլ 4. Մատնահետքի ցուցիչի և Rfid քարտի տվիչի տեղադրում

Այս քայլը խոսում է այն մասին, թե ինչպես տեղադրել մատնահետքի սենսոր և rfid քարտի տվիչ: Եթե դուք արդեն չեք օգտագործել ձեր մատնահետքի սենսորը, ապա ձեզ հարկավոր է ցույց տալ, թե ինչպիսին է ձեր մատնահետքը, որպեսզի այն կարողանա պահպանել այն իր հիշողության մեջ: Նույնիսկ եթե նախկինում այն օգտագործել եք, միևնույն է, հավանաբար, պետք է կատարեք այս քայլը: Ես ձեզ կասեմ, թե ինչպես դա անել համառոտ, բայց եթե իմաստ չունի անցեք նույն խրատական հղմանը վերջին քայլին: Դա շատ լավ է անցնում: Հիմնական պարզապես բաց arduino ide. Գնացեք ֆայլ> օրինակներ> adafruit մատնահետքի ցուցիչ> գրանցվեք: Վերբեռնեք կոդը arduino- ում, բացեք սերիական մոնիտորը և հետևեք այն ձեզ տրված քայլերին: Երբ ձեզ ասում է, որ համար տվեք: Մուտքագրեք 1#:

Այժմ rfid քարտի համար այս քայլը բավականին հեշտ է: Բացեք arduino ide- ը: Գնալ դեպի ֆայլ> օրինակներ> mfrc522> կարդալ անձնական տվյալները: Վերբեռնեք arduino- ում և բացեք սերիական մոնիտորը: Սկանավորեք այն քարտը կամ բանալիի շղթան, որը ցանկանում եք օգտագործել ձեր սենսորի հետ միասին: Այնուհետև դա ձեզ որոշ տեղեկություններ կտա: Փնտրեք քարտի ID- ն, այն կլինի 2 նիշից բաղկացած 4 հավաքածու: Նման բան ՝ AB 45 2Y 45, բայց ձեր կոդը այլ կլինի: Գրեք սա թղթի վրա: Ավելի ուշ ձեզ նորից պետք կգա: Այսքանը այս քայլի համար:

Քայլ 5: ԿՈԴ

Սա ձեզանից շատերի համար կդառնա ամենադժվար քայլը, բայց դա բավականին պարզ է: Սկզբից պատճենեք և տեղադրեք կոդը arduino ide- ի մեջ ներքևից: Երկրորդ, խմբագրեք 2 բաժինները, որտեղ գրված է Խմբագրել ծածկագիրը: 1 բաժինը քարտերի սկաների համար է, 1 -ը `ջոյսթիկի համար: Այս քայլերը չեն կարող շրջանցվել: Ավարտելուց հետո վերբեռնեք կոդը arduino- ում:

#ներառել #ներառել մատնահետքը.հ>

#ներառում

#ներառում

#ներառում

#ներառում

LiquidCrystal_I2C LCD (0x27, 2, 1, 0, 4, 5, 6, 7, 3, ԴՐԱԿԱՆ);

#սահմանի RST_PIN 9

#սահմանել 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 Ադաֆրուտի մատների հայտնաբերման թեստ");

մատը.սկսել (57600);

ուշացում (5);

եթե (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 («Սպասում է վավեր մատի …»); }

դատարկ (* resetFunc) (անվավեր) = 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 && // Վերցրեք այդ թուղթը, որի վրա կա ID- ն, կար 2 թվանշանի 4 հավաքածու

mfrc522.uid.uidByte [2] == 0x90 && // Նայեք ծածկագրին, տեսեք, թե որտեղ է գրված ՝ 0x92, 0xAB, 0x90, 0x1c: Մուտքագրեք յուրաքանչյուրը

mfrc522.uid.uidByte [3] == 0x1C) {// 0x- ից հետո երկնիշ հատվածից: Օրինակ, ID- ի բաժնում ասվում է

lcd. հստակ (); // 3E, այնուհետև 0x- ից հետո մուտքագրեք 3E ՝ 0x3E ստանալու համար: Դա արեք յուրաքանչյուր հատվածի համար

lcd.setCursor (3, 0);

lcd.print («Վերջապես, մուտքագրեք»);

lcd.setCursor (1, 1);

lcd.print («joystick գաղտնաբառ»);

իսկ (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. հստակ (); // Այս բաժինը այն է, որտեղ դուք կարող եք գաղտնաբառը խմբագրել ջոյսթիքով

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 ("ՄՈՏՔԸ ENԱՆENՎԱ !!! Է !!!");

lcd.setCursor (0, 2);

lcd.print («Համակարգի վերագործարկում …»);

ուշացում (3000);

resetFunc ();

}

} ուրիշ {

lcd. հստակ ();

lcd.setCursor (2, 0);

lcd.print ("ՄՈՏՔԸ ENԱՆENՎԱ !!! Է !!!");

lcd.setCursor (0, 2);

lcd.print («Համակարգի վերագործարկում …»);

ուշացում (3000);

resetFunc ();

}

} ուրիշ {

lcd. հստակ ();

lcd.setCursor (2, 0);

lcd.print ("ՄՈՏՔԸ ENԱՆENՎԱ !!! Է !!!");

lcd.setCursor (0, 2);

lcd.print («Համակարգի վերագործարկում …»);

ուշացում (3000);

resetFunc ();

}

վերադարձի մատը. FingerID; }

Քայլ 6: Ավարտեք

Մի բան, որ ես մոռացա ասել ձեզ, լավ 2 բան այն է, որ ես սա կառուցել եմ նկարելուց առաջ, այնպես որ ես չէի կարող ձեզ ցույց տալ, թե ինչպես եմ կառուցել տուփը: Մյուսն այն է, որ խորհուրդ է տրվում պտուտակավորել սերվոյի հատվածը պտտվող մասի վրա: Եթե դա չեք անում, ինչ -որ մեկը կարող է քաշել դարակը կողպված վիճակում և հանել կտորը: Բայց նախքան այն պտուտակելը, գտեք այն ճիշտ տեղը, որտեղ պետք է այն դնել, քանի որ սերվոն շրջվում է որոշակի աստիճանի: Կամ պարզապես կարող եք փոխել այն ծածկագրում: Եթե էլեկտրոնիկայի որոշ տեսակներ ծիծաղելի են գործում, գուցե ցանկանաք նրանցից ոմանց համար 5V լարման այլ տարբերակ գտնել: Ես նկատեցի, երբ մատնահետքի սկաներիս առկայծումը փայլեց, էկրանը փոքր -ինչ կփայլեր դրա հետ, և սերվոն աղմուկ կբարձրացներ: Երբ servo- ն շարժվում էր, էկրանը մթագնում էր: Հուսով եմ, որ ձեզ դուր եկավ նախագիծը: Եթե ունեք հարցեր, թողեք դրանք մեկնաբանություններում: Ես շատ հրահանգների չեմ ենթարկվում, բայց կպատասխանեմ դրանց, որքան հնարավոր է շուտ:

Խորհուրդ ենք տալիս: