Sisällysluettelo:

Arduino High Tech Safe: 6 vaihetta
Arduino High Tech Safe: 6 vaihetta

Video: Arduino High Tech Safe: 6 vaihetta

Video: Arduino High Tech Safe: 6 vaihetta
Video: Why Snatch Blocks are AWESOME (How Pulleys Work) - Smarter Every Day 228 2024, Heinäkuu
Anonim
Arduino High Tech Safe
Arduino High Tech Safe

Tämä on arduino -korkeatekninen tallelokeroni. Sinun on skannattava sormesi, skannattava korttisi ja annettava sitten 4 -numeroinen salasana avataksesi laatikon. Tätä projektia ei suositella aloittelijoille, koska se on hyvin edistynyt. Koodi on pitkä, mutta jaan sen tässä projektissa. Hinta on noin 75 dollaria, jos rakennat saman kassakaapin kuin minä. Tämä projekti voi myös kestää 1-3 päivää. Aloitetaan siis!

Tarvikkeet

Voit rakentaa saman kassakaapin kuin minun:

Arduino (Uno suositellaan, koska minulla ei ole askelia arduino mega- tai nano -ohjelmille. Mutta voit silti käyttää niitä)

leipälauta

servo

hyppyjohtimet

ohjaussauva

20*4 (voit käyttää 16*4, mutta sinun on vaihdettava koodi)

sormenjälkitunnistin

mfrc522 RFID -kortinlukija

ämpäri legoja

Vaihe 1: Laatikon rakentaminen

Laatikon rakentaminen
Laatikon rakentaminen

Ensin tarvitset laatikon, johon voit laittaa elektroniikkasi. Voit käyttää legoja, 3D -painettua laatikkoa tai jopa pahvia! (Vaikka tämä saattaa olla vaikeampaa) Älä unohda laittaa reikiä laatikkoon ja elektroniikkaan. Jos käytät RFID -kortinlukijaa, sinun ei tarvitse tehdä reikää, jos seinät ovat ohuet. Kortit toimivat edelleen, mutta sinun on asetettava avaimenperät kiinni, jotta RFID -kortin senori voi lukea ne. Jätä myös tilaa arduinoosi ja johtoihin. HUOMAUTUS: Kun rakennat laatikkoa, jätä siihen reikä, jotta servosi voi kääntää ja lukita laatikon.

Vaihe 2: Johdotus

Johdotus!
Johdotus!

Tämä vaihe voi olla monimutkainen, koska johdot on kytkettävä oikeaan paikkaan, tai elektroniikka ei toimi. Minulla ei ole kytkentäkaaviota, mutta kerron teille, että jokainen menee. Johdotus on tarkoitettu vain arduino unolle. Sinun on etsittävä johtojen asettamista, jos käytät arduino megaa tai nanoa. Jos et käytä kaikkea elektroniikkaani, voit ohittaa johdotuksen.

Sormenjälkilukija: vihreä lanka: D2 valkoinen lanka: D3 musta lanka: GND punainen lanka: 5 V.

Joystick: 5V = 3.3V GND = GND X = A2 Y = A3 Kytkin = D4

RFID -kortinlukija: 3.3V = 3.3V ensimmäinen = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

LCD -näyttö: 5V = 5V GND = GND sda = A4 sck = A5

Servo: punainen johto: 5 V Ruskea johto: GND keltainen lanka: D6

HUOMAUTUS: ÄLÄ KYTKE RFID -KORTIN SKANNERIA 5 V: hon. JOS TEET, SE RIKKUU !!!

Saatat ihmetellä, miksi sanoin kytkeä ohjaussauvan virran 3,3 V: een, kun sivulla lukee 5V. Tämä johtuu siitä, että servo, näyttö ja sormenjälkitunnistin tarvitsevat 5 V. Jos lisäät ohjaussauvan siihen, elektroniikka ei ehkä toimi, koska kaikki tarvitsee 5V. Ohjaussauva toimii edelleen 3.3V: n kanssa. Se on vain maksimiarvo ei 1023, se on ~ 670.

Vaihe 3: Kirjastojen lataaminen

Tässä projektissa tarvitset 6 kirjastoa kaiken elektroniikan käyttämiseksi. 1 servolle, 1 sormenjälkitunnistimelle, 2 RFID -kortinlukijalle ja 2 näytölle. Ohjaussauva ei tarvitse kirjastoa. Mikä nyt on kirjasto? Se on pohjimmiltaan tiedosto, joka sisältää paljon koodia, jota voit käyttää projektissasi yksinkertaisilla komennoilla. Näiden kirjastojen hankkimiseksi sinun on mentävä GitHub -nimiseen paikkaan. Jos osaat ladata ja purkaa kirjastoja, siirry latauksiin alla olevista linkeistä. Jos et tiedä miten, voit siirtyä ohjeeseeni, jossa kerrotaan kirjaston lataamisesta vaiheessa 3:

tai etsi youtube -video, miten voit ladata arduino -kirjaston GitHubista

LINKIT LIRARIOIHIN:

Servo

sormenjälkitunnistin:

spi

rfid -kortin anturi

näytön kirjasto 1

näytön kirjasto 2

Vaihe 4: Sormenjälkitunnistimen ja RFID -korttianturin asentaminen

Tässä vaiheessa kerrotaan, miten sormenjälkitunnistin ja RFID -korttianturi asetetaan. Ellet ole jo käyttänyt sormenjälkitunnistinta, sinun on näytettävä, miltä sormenjälkesi näyttää, jotta se voi tallentaa sen muistiin. Vaikka olisit käyttänyt sitä aiemmin, sinun pitäisi todennäköisesti tehdä tämä vaihe. Kerron lyhyesti, miten se tehdään, mutta jos se ei ole järkevää, siirry samaan ohjeeseen linkissä viimeisessä vaiheessa. Se menee hyvin sen yli. Perus vain avoin arduino ide. Siirry tiedostoon> esimerkit> adafruit -sormenjälkitunnistin> rekisteröidy. Lataa koodi arduinoon, avaa sarjamonitori ja noudata sen ohjeita. Kun se kehottaa sinua antamaan numeron. Kirjoita 1#.

Nyt RFID -kortille tämä vaihe on melko helppo. Avaa arduino ide. Siirry tiedostoon> esimerkit> mfrc522> lue henkilötietoja. Lataa arduinoon ja avaa sarjamonitori. Skannaa anturin mukana toimitettu kortti tai avaimenperä, jota haluat käyttää. Sitten se antaa sinulle joitain tietoja. Etsi kortin tunnus, se on 4 2 -numeroista sarjaa. Jotain tällaista: AB 45 2Y 45, mutta koodisi on erilainen. Kirjoita tämä paperille. Tarvitset sitä myöhemmin uudelleen. Siinä se tässä vaiheessa.

Vaihe 5: KOODI

Tämä tulee olemaan vaikein vaihe useimmille teistä, mutta se on melko yksinkertaista. Kopioi ja liitä koodi aluksi arduino ideiin. Toiseksi muokkaa 2 osaa, joissa lukee EDIT CODE. 1 osio on kortinlukija, 1 ohjaussauva. Näitä vaiheita ei voi ohittaa. Kun olet valmis, lataa koodi arduinoon!

#Sisällytä #Sisällytä sormenjälki. h>

#sisältää

#sisältää

#sisältää

#sisältää

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 -kiinnike (6);

servo.write (170);

lcd. alku (20, 4);

Sarja.alku (9600);

while (! Sarja);

SPI.begin ();

mfrc522. PCD_Init ();

viive (4);

mfrc522. PCD_DumpVersionToSerial ();

viive (100);

Serial.println ("\ n / nAdafruit -sormentunnistuskoe");

sormi. alku (57600);

viive (5);

if (finger.verifyPassword ()) {

Serial.println ("Kaikki järjestelmät toimivat");

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Ole hyvä ja skannaa sormi");

} muuta {

Serial.println ("VIRHE: Sormenjälkitunnistinta ei löydy!");

lcd.setCursor (0, 0);

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

lcd.setCursor (1, 1);

lcd.print ("anturia ei löydy!");

kun taas (1) {viive (1); }

}

finger.getTemplateCount ();

Serial.print ("Anturi sisältää"); Sarjajälki (sormen.malliLuku); Serial.println ("mallit"); Serial.println ("Odotetaan kelvollista sormea…"); }

void (* resetFunc) (void) = 0;

void loop () {

getFingerprintIDez ();

viive (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

kytkin (p) {

tapaus FINGERPRINT_OK:

Serial.println ("Kuva otettu");

tauko;

tapaus FINGERPRINT_NOFINGER:

Serial.println ("Sormia ei havaittu");

paluu p;

tapaus FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Tiedonsiirtovirhe");

paluu p;

tapaus FINGERPRINT_IMAGEFAIL:

Serial.println ("Kuvantamisvirhe");

paluu p;

oletus:

Serial.println ("Tuntematon virhe");

paluu p;

}

p = sormi.kuva2Tz ();

kytkin (p) {

tapaus FINGERPRINT_OK:

Serial.println ("Muunnettu kuva");

tauko;

tapaus FINGERPRINT_IMAGEMESS:

Serial.println ("Kuva liian sotkuinen");

paluu p;

tapaus FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Tiedonsiirtovirhe");

paluu p;

tapaus FINGERPRINT_FEATUREFAIL:

Serial.println ("Sormenjälkiominaisuuksia ei löytynyt");

paluu p;

tapaus FINGERPRINT_INVALIDIMAGE:

Serial.println ("Sormenjälkiominaisuuksia ei löytynyt");

paluu p;

oletus:

Serial.println ("Tuntematon virhe");

paluu p;

}

p = sormi.sormiFastSearch ();

jos (p == FINGERPRINT_OK) {

Serial.println ("Löysin tulostushaun!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Tiedonsiirtovirhe");

paluu p;

} muu jos (p == SORMAALLINEN_LUETTELO) {

Serial.println ("En löytänyt osumaa");

paluu p;

} muuta {

Serial.println ("Tuntematon virhe");

paluu p;

}

Serial.print ("Löydetty tunnus #"); Sarjajälki (sormen.sormen tunnus);

Serial.print ("luottavaisin mielin"); Serial.println (sormi.luottamus);

palauta sormi. sormen tunnus;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

if (p! = FINGERPRINT_OK) return -1;

p = sormi.kuva2Tz ();

if (p! = FINGERPRINT_OK) return -1;

p = sormi.sormiFastSearch ();

if (p! = FINGERPRINT_OK) return -1;

Serial.print ("Löydetty tunnus #"); Sarjajälki (sormen.sormen tunnus);

Serial.print ("luottavaisin mielin"); Serial.println (sormi.luottamus);

jos (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Sormi hyväksytty");

lcd.setCursor (2, 0);

lcd.print ("skannaa nyt kortti …");

lcd.setCursor (0, 3);

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

while (! mfrc522. PICC_IsNewCardPresent ());

while (! mfrc522. PICC_ReadCardSerial ());

if (mfrc522.uid.uidByte [0] == 0x92 && // ======================== MUOKKAA KOODI ======== ==============

mfrc522.uid.uidByte [1] == 0xAB && // Ota paperi, jossa on tunnus, siinä oli 4 2 -numeroista sarjaa

mfrc522.uid.uidByte [2] == 0x90 && // Katso koodista, missä lukee 0x92, 0xAB, 0x90, 0x1c? Anna jokainen

mfrc522.uid.uidByte [3] == 0x1C) {// 2 -numeroisesta osasta 0x: n jälkeen. Esimerkiksi ID -osiossa sanotaan

lcd.clear (); // 3E, kirjoita sitten 3E 0x: n jälkeen ja muodosta 0x3E. Tee tämä jokaiselle osalle

lcd.setCursor (3, 0);

lcd.print ("Kirjoita lopuksi");

lcd.setCursor (1, 1);

lcd.print ("ohjaussauvan salasana");

kun taas (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.setCursor (8, 4);

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

dl = L;

}

if (analogRead (A2)> = 670) {

dl = R;

}

if (analogRead (A3) <= 100) {

d1 = U;

}

if (analogRead (A3)> = 670) {

d1 = D;

}

viive (500);

kun taas (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;

}

viive (500);

kun taas (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;

}

viive (500);

kun taas (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;

}

viive (500);

jos (d1 == L && d2 == U && d3 == L && d4 == R) {// ================= MUOKKAA KOODI ====== ================

lcd.clear (); // Tässä osiossa voit muokata salasanaa ohjaussauvalla

lcd.setCursor (2, 0); // salasana on asetettu vasemmalle, ylös vasemmalle, oikealle. Jos haluat muuttaa

lcd.print ("Käyttöoikeus myönnetty!"); // se, laita L vasemmalle, R oikealle, U ylös, tai D alas missä tahansa

lcd.setCursor (2, 1); // 4 osaa, joissa on kirjain == -merkkien jälkeen.

lcd.print ("Laatikon lukitus auki");

lcd.setCursor (2, 2);

lcd.print ("Kun olet valmis, siirrä");

lcd.setCursor (1, 3);

lcd.print ("ohjaussauva uudelleenlukittamiseksi");

servo.write (90);

kun taas (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analoginen luku (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print ("Laatikko lukittu");

viive (3000);

resetFunc ();

}muu{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("KÄYTTÖÖN EHDOTTU !!!");

lcd.setCursor (0, 2);

lcd.print ("Käynnistä järjestelmä uudelleen …");

viive (3000);

resetFunc ();

}

}muu{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("KÄYTTÖÖN EHDOTTU !!!");

lcd.setCursor (0, 2);

lcd.print ("Käynnistä järjestelmä uudelleen …");

viive (3000);

resetFunc ();

}

}muu{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("KÄYTTÖÖN EHDOTTU !!!");

lcd.setCursor (0, 2);

lcd.print ("Käynnistä järjestelmä uudelleen …");

viive (3000);

resetFunc ();

}

palauta sormi. sormen tunnus; }

Vaihe 6: Viimeistele

Yksi asia, jonka unohdin kertoa teille, no kaksi asiaa on se, että rakensin tämän ennen kuin otin kuvia, joten en voinut näyttää teille, miten rakensin laatikon. Toinen on se, että on suositeltavaa ruuvata servo -osa kääntyvään osaan. Jos et, joku voi vetää laatikosta sen ollessa lukittuna ja vetää kappaleen irti. Mutta ennen kuin ruuvaat sen kiinni, etsi oikea paikka, johon se laitetaan, koska servo kääntyy tietyssä määrin. Tai voit vain muuttaa sen koodissa. Jos jotkut elektroniikasta toimivat hassusti, saatat haluta löytää toisen tavan saada 5 V joillekin niistä. Huomasin, kun sormenjälkitunnistin välkkyi, näyttö vilkkuu hieman sen kanssa ja servo teki melua. Kun servo liikkui, näyttö himmeni. Toivottavasti piditte projektista! Jos sinulla on kysyttävää, jätä ne kommentteihin. En ole kovin ohjeellisia, mutta vastaan niihin heti kun voin!

Suositeltava: