Arduino augsto tehnoloģiju seifs: 6 soļi
Arduino augsto tehnoloģiju seifs: 6 soļi
Anonim
Arduino augsto tehnoloģiju seifs
Arduino augsto tehnoloģiju seifs

Šis ir mans arduino augsto tehnoloģiju seifs. Lai atbloķētu atvilktni, jums jānoskenē pirksts, jāpārbauda karte un pēc tam jāievada 4 ciparu parole. Šis projekts nav ieteicams iesācējiem, jo tas ir ļoti progresīvs. Kods ir garš, bet es dalīšos ar to šajā projektā. Izmaksas ir aptuveni 75 ASV dolāri, ja jūs uzbūvējat tādu pašu seifu kā es. Šī projekta pabeigšana var aizņemt arī 1-3 dienas. Tātad, sāksim!

Piegādes

Lai izveidotu tādu pašu seifu kā mans, jums būs nepieciešams:

Arduino (Uno ieteicams, jo man nav soļu arduino mega vai nano. Bet jūs joprojām varat tos izmantot)

maizes dēlis

servo

džemperu vadi

kursorsviru

20*4 (varat izmantot 16*4, bet jums būs jāmaina kods)

pirkstu nospiedumu skeneris

mfrc522 RFID karšu skeneris

spainis lego

1. darbība: kastes izveide

Kastes veidošana
Kastes veidošana

Vispirms jums būs nepieciešama kaste, kur ievietot elektroniku. Jūs varētu izmantot lego, 3D drukātu kastīti vai pat kartonu! (Lai gan tas varētu būt grūtāk) Neaizmirstiet tajā ievietot caurumus atvilktnei un elektronikai. Ja izmantojat RFID karšu skeneri, jums nav jāizveido caurums, ja jūsu sienas ir plānas. Kartes joprojām darbojas, taču atslēgu piekariņi ir jānovieto tuvu, lai RFID kartes senors tos varētu izlasīt. Arī atstājiet vietu savam arduino un vadiem iekšā. PIEZĪME. Veidojot atvilktni, atstājiet tajā caurumu, lai jūsu servo varētu pagriezt un bloķēt atvilktni.

2. solis: elektroinstalācija

Elektroinstalācija!
Elektroinstalācija!

Šis solis var būt sarežģīts, jo jums ir jāpievieno vadi tieši vietā, pretējā gadījumā elektronika nedarbosies. Man nav elektroinstalācijas shēmas, bet es jums pastāstīšu, vai katrs no tiem ies. Elektroinstalācija ir paredzēta tikai arduino uno. Jums būs jāmeklē vadi, ja izmantojat arduino mega vai nano. Ja jūs neizmantojat visu elektroniku, kas man ir, varat vienkārši izlaist šo vadu.

Pirkstu nospiedumu skeneris: zaļš vads: D2 balts vads: D3 melns vads: GND sarkans vads: 5V

Kursorsvira: 5V = 3.3V GND = GND X = A2 Y = A3 slēdzis = D4

RFID karšu skeneris: 3.3V = 3.3V pirmais = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

LCD ekrāns: 5V = 5V GND = GND sda = A4 sck = A5

Servo: sarkans vads: 5V Brūns vads: GND dzeltenais vads: D6

PIEZĪME: NEVIENOJIET RFID KARTES SKENERI 5V. JA JŪS DARĪT, LŪS !!!

Jums var rasties jautājums, kāpēc es teicu pieslēgt kursorsviras jaudu pie 3.3V, ja sānos ir rakstīts 5V. Tas ir tāpēc, ka servo, ekrānam un pirkstu nospiedumu skenerim ir nepieciešami 5 V. Ja tam pievienosiet kursorsviru, elektronika var nedarboties, jo visam ir nepieciešams 5 V. Kursorsvira joprojām darbosies ar 3.3V. Vienkārši maksimālā vērtība nebūs 1023, tā būs ~ 670.

3. darbība: bibliotēku lejupielāde

Šajā projektā jums būs nepieciešamas 6 bibliotēkas, lai izmantotu visu elektroniku. 1 servo, 1 pirkstu nospiedumu sensors, 2 RFID karšu skeneris un 2 ekrāns. Kursorsvirai nav nepieciešama bibliotēka. Tagad, kas ir bibliotēka? Tas būtībā ir fails, kurā ir daudz kodu, ko varat izmantot savā projektā ar vienkāršām komandām. Lai iegūtu šīs bibliotēkas, jums jādodas uz vietu ar nosaukumu GitHub. Ja jūs zināt, kā lejupielādēt un izpakot bibliotēkas, vienkārši dodieties uz tālāk esošajām saitēm, lai lejupielādētu. Ja jūs nezināt, kā, varat doties uz manu pamācību, kurā ir aprakstīts, kā lejupielādēt bibliotēku 3. darbībā:

vai meklējiet YouTube videoklipu par to, kā lejupielādēt arduino bibliotēku no GitHub

SAITES UZ LĪRIJĀM:

Servo

pirkstu nospiedumu sensors:

spi

rfid kartes sensors

ekrāna bibliotēka 1

ekrāna bibliotēka 2

4. darbība: pirkstu nospiedumu sensora un RFID kartes sensora iestatīšana

Šis solis runā par to, kā iestatīt pirkstu nospiedumu sensoru un RFID kartes sensoru. Ja vien neesat jau izmantojis pirkstu nospiedumu sensoru, jums būs jāparāda, kā izskatās jūsu pirkstu nospiedums, lai tas varētu to saglabāt atmiņā. Pat ja esat to izmantojis iepriekš, jums, iespējams, vajadzētu veikt šo darbību. Es jums īsi pastāstīšu, kā to izdarīt, bet, ja tam nav jēgas, pēdējā solī dodieties uz to pašu pamācāmo saiti. Tam ļoti labi iet pāri. Basic vienkārši atvērt arduino ide. Atveriet failu> piemēri> adafruit pirkstu nospiedumu sensors> reģistrēties. Augšupielādējiet kodu arduino, atveriet sērijas monitoru un izpildiet tajā norādītās darbības. Kad tiek teikts, ka jāsniedz tam skaitlis. Ierakstiet 1#.

Tagad RFID kartei šis solis ir diezgan vienkāršs. Atvērt arduino ide. Atveriet failu> piemēri> mfrc522> lasiet personas datus. Augšupielādējiet arduino un atveriet seriālo monitoru. Skenējiet karti vai atslēgu piekariņu, ko vēlaties izmantot kopā ar sensoru. Tad tas sniegs jums zināmu informāciju. Atrodiet kartes ID, tas būs 4 2 ciparu komplekti. Kaut kas līdzīgs šim: AB 45 2Y 45, bet jūsu kods būs atšķirīgs. Pierakstiet to uz papīra lapas. Vēlāk jums tas būs vajadzīgs vēlreiz. Tas ir šis solis.

5. darbība: KODS

Lielākajai daļai no jums tas būs grūtākais solis, taču tas ir diezgan vienkārši. Vispirms nokopējiet un ielīmējiet kodu arduino ide no apakšas. Otrkārt, rediģējiet 2 sadaļas, kurās teikts EDIT CODE. 1 sadaļa paredzēta karšu skenerim, 1 - kursorsvirai. Šīs darbības nevar izlaist. Kad esat pabeidzis, augšupielādējiet kodu arduino!

#include #include Fingerprint.h>

#iekļaut

#iekļaut

#iekļaut

#iekļaut

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

#define RST_PIN 9

#define SS_PIN 10

MFRC522 mfrc522 (SS_PIN, RST_PIN);

SoftwareSerial mySerial (2, 3);

Adafruit_Fingerprint finger = Adafruit_Fingerprint (& mySerial);

Servo servo;

char d1;

char d2;

char d3;

char d4;

void setup () {

servo.attach (6);

servo.write (170);

lcd. sākums (20, 4);

Sērijas sākums (9600);

kamēr (! Seriāls);

SPI.begin ();

mfrc522. PCD_Init ();

kavēšanās (4);

mfrc522. PCD_DumpVersionToSerial ();

kavēšanās (100);

Serial.println ("\ n / nAdafruit pirkstu noteikšanas tests");

pirksts.sākums (57600);

kavēšanās (5);

if (finger.verifyPassword ()) {

Serial.println ("Visas sistēmas darbojas");

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Lūdzu, skenējiet pirkstu");

} vēl {

Serial.println ("KĻŪDA: pirkstu nospiedumu sensors nav atrasts!");

lcd.setCursor (0, 0);

lcd.print ("KĻŪDA: pirkstu nospiedums");

lcd.setCursor (1, 1);

lcd.print ("sensors nav atrasts!");

kamēr (1) {kavēšanās (1); }

}

finger.getTemplateCount ();

Serial.print ("Sensors satur"); Serial.print (finger.templateCount); Serial.println ("veidnes"); Serial.println ("Gaida derīgu pirkstu …"); }

void (* resetFunc) (void) = 0;

void loop () {

getFingerprintIDez ();

kavēšanās (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

slēdzis (p) {

gadījums FINGERPRINT_OK:

Serial.println ("Attēls uzņemts");

pārtraukums;

gadījums FINGERPRINT_NOFINGER:

Serial.println ("Nav atrasts pirksts");

atgriezties p;

gadījums FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Komunikācijas kļūda");

atgriezties p;

gadījums FINGERPRINT_IMAGEFAIL:

Serial.println ("Attēlveidošanas kļūda");

atgriezties p;

noklusējums:

Serial.println ("Nezināma kļūda");

atgriezties p;

}

p = pirksts.attēls2Tz ();

slēdzis (p) {

gadījums FINGERPRINT_OK:

Serial.println ("Attēls pārveidots");

pārtraukums;

gadījums FINGERPRINT_IMAGEMESS:

Serial.println ("Attēls pārāk netīrs");

atgriezties p;

gadījums FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Komunikācijas kļūda");

atgriezties p;

gadījums FINGERPRINT_FEATUREFAIL:

Serial.println ("Nevarēja atrast pirkstu nospiedumu funkcijas");

atgriezties p;

gadījums FINGERPRINT_INVALIDIMAGE:

Serial.println ("Nevarēja atrast pirkstu nospiedumu funkcijas");

atgriezties p;

noklusējums:

Serial.println ("Nezināma kļūda");

atgriezties p;

}

p = pirksts.pirkstsFastSearch ();

ja (p == FINGERPRINT_OK) {

Serial.println ("Atrasts drukas atbilstība!");

} cits if (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Saziņas kļūda");

atgriezties p;

} cits, ja (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Neatradu atbilstību");

atgriezties p;

} vēl {

Serial.println ("Nezināma kļūda");

atgriezties p;

}

Serial.print ("Atrasts ID #"); Sērijas nospiedums (finger.fingerID);

Serial.print ("ar pārliecību"); Serial.println (pirkstu pārliecība);

atgriezt pirkstu.pirksta ID;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

ja (p! = FINGERPRINT_OK) atgriežas -1;

p = pirksts.attēls2Tz ();

ja (p! = FINGERPRINT_OK) atgriežas -1;

p = pirksts.pirkstsFastSearch ();

ja (p! = FINGERPRINT_OK) atgriežas -1;

Serial.print ("Atrasts ID #"); Sērijas nospiedums (finger.fingerID);

Serial.print ("ar pārliecību"); Serial.println (pirkstu pārliecība);

ja (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Pirksts pieņemts");

lcd.setCursor (2, 0);

lcd.print ("tagad skenēt karti …");

lcd.setCursor (0, 3);

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

while (! mfrc522. PICC_IsNewCardPresent ());

while (! mfrc522. PICC_ReadCardSerial ());

if (mfrc522.uid.uidByte [0] == 0x92 && // ======================== REDIĢĒT KODU ======== ==============

mfrc522.uid.uidByte [1] == 0xAB && // Paņemiet to papīra lapu ar ID, un tajā bija 4 2 ciparu komplekti

mfrc522.uid.uidByte [2] == 0x90 && // Paskatieties pēc koda un redziet, kur tas ir 0x92, 0xAB, 0x90, 0x1c? Ievadiet katru

mfrc522.uid.uidByte [3] == 0x1C) {// no 2 ciparu sadaļas aiz 0x. Piemēram, ID sadaļā ir teikts

lcd.clear (); // 3E, pēc tam ievadiet 3E aiz 0x, lai izveidotu 0x3E. Dariet to katrai sadaļai

lcd.setCursor (3, 0);

lcd.print ("Visbeidzot, ievadiet");

lcd.setCursor (1, 1);

lcd.print ("kursorsviras parole");

kamēr (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.setCursor (8, 4);

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

d1 = L;

}

ja (analogRead (A2)> = 670) {

d1 = R;

}

ja (analogRead (A3) <= 100) {

d1 = U;

}

ja (analogRead (A3)> = 670) {

d1 = D;

}

kavēšanās (500);

kamēr (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

ja (analogRead (A2) <= 100) {

d2 = L;

}

ja (analogRead (A2)> = 670) {

d2 = R;

}

ja (analogRead (A3) <= 100) {

d2 = U;

}

ja (analogRead (A3)> = 670) {

d2 = D;

}

kavēšanās (500);

kamēr (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

ja (analogRead (A2) <= 100) {

d3 = L;

}

ja (analogRead (A2)> = 670) {

d3 = R;

}

ja (analogRead (A3) <= 100) {

d3 = U;

}

ja (analogRead (A3)> = 670) {

d3 = D;

}

kavēšanās (500);

kamēr (analogRead (A2)> = 10 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

ja (analogRead (A2) <= 100) {

d4 = L;

}

ja (analogRead (A2)> = 670) {

d4 = R;

}

ja (analogRead (A3) <= 100) {

d4 = U;

}

ja (analogRead (A3)> = 670) {

d4 = D;

}

kavēšanās (500);

ja (d1 == L && d2 == U && d3 == L && d4 == R) {// ================= Rediģēt kodu ====== ================

lcd.clear (); // Šī sadaļa ir vieta, kur jūs varat rediģēt paroli, izmantojot kursorsviru

lcd.setCursor (2, 0); // parole ir iestatīta pa kreisi, augšup pa kreisi, pa labi. Ja vēlaties mainīties

lcd.print ("Piekļuve piešķirta!"); // it, ielieciet L pa kreisi, R pa labi, U uz augšu vai D uz leju jebkurā no

lcd.setCursor (2, 1); // 4 sadaļas ar burtu aiz == zīmēm.

lcd.print ("Atvilktne atbloķēta.");

lcd.setCursor (2, 2);

lcd.print ("Kad esat pabeidzis, pārvietojiet");

lcd.setCursor (1, 3);

lcd.print ("kursorsvira, lai atbloķētu");

servo.write (90);

kamēr (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print ("Atvilktne bloķēta");

kavēšanās (3000);

resetFunc ();

} vēl {

lcd.clear ();

lcd.setCursor (2, 0);

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

lcd.setCursor (0, 2);

lcd.print ("Sistēmas restartēšana …");

kavēšanās (3000);

resetFunc ();

}

} vēl {

lcd.clear ();

lcd.setCursor (2, 0);

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

lcd.setCursor (0, 2);

lcd.print ("Sistēmas restartēšana …");

kavēšanās (3000);

resetFunc ();

}

} vēl {

lcd.clear ();

lcd.setCursor (2, 0);

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

lcd.setCursor (0, 2);

lcd.print ("Sistēmas restartēšana …");

kavēšanās (3000);

resetFunc ();

}

atgriezt pirkstu.pirksta ID; }

6. solis: pabeidziet

Vienu lietu, ko es aizmirsu jums pateikt, ir divas lietas: es to uzbūvēju pirms fotografēju, tāpēc nevarēju jums parādīt, kā es uzbūvēju kastīti. Otrs ir tas, ka ieteicams pieskrūvēt servo daļu pie tās daļas, kas griežas. Ja jūs to nedarīsit, kāds varētu atvilkt atvilktni, kad tā ir aizslēgta, un izvilkt gabalu. Bet pirms ieskrūvēšanas atrodiet īsto vietu, kur to uzlikt, jo servo pagriežas līdz noteiktai pakāpei. Vai arī jūs varat to vienkārši mainīt kodā. Ja daži elektronikas elementi darbojas smieklīgi, iespējams, vēlēsities atrast citu veidu, kā dažiem no tiem iegūt 5 V spriegumu. Es pamanīju, kad mirgo pirkstu nospiedumu skeneris, ekrāns ar to nedaudz mirgos un servo radīs troksni. Kad servo kustējās, ekrāns kļuva blāvs. Es ceru, ka jums patika projekts! Ja jums ir kādi jautājumi, atstājiet tos komentāros. Es neesmu daudz pamācību, bet es atbildēšu uz tiem, cik drīz vien iespējams!

Ieteicams: