Obsah:

High -tech trezor Arduino: 6 krokov
High -tech trezor Arduino: 6 krokov

Video: High -tech trezor Arduino: 6 krokov

Video: High -tech trezor Arduino: 6 krokov
Video: Arduino UNO - trezor 2024, November
Anonim
High -tech trezor Arduino
High -tech trezor Arduino

Toto je môj bezpečný trezor arduino. Odomknite zásuvku tak, že naskenujete prst, naskenujete kartu a potom zadáte 4 -miestne heslo. Tento projekt sa neodporúča začiatočníkom, pretože je veľmi pokročilý. Kód je dlhý, ale zdieľam ho v tomto projekte. Ak postavíte rovnaký trezor ako ja, náklady sa pohybujú okolo 75 dolárov. Dokončenie tohto projektu môže tiež trvať 1-3 dni. Začnime teda!

Zásoby

Na vybudovanie rovnakého trezoru ako ja budem potrebovať:

Arduino (odporúča sa Uno, pretože nemám kroky pre arduino mega alebo nano. Ale stále ich môžete použiť)

breadboard

servo

prepojovacie vodiče

joystick

20*4 (môžete použiť 16*4, ale budete musieť zmeniť kód)

snímač odtlačkov prstov

mfrc522 skener karty rfid

vedro lega

Krok 1: Zostavenie krabice

Budovanie krabice
Budovanie krabice

Najprv budete potrebovať krabicu, do ktorej vložíte elektroniku. Môžete použiť lego, 3D tlačenú škatuľu alebo dokonca kartón! (Aj keď to môže byť ťažšie) Nezabudnite do nej vložiť otvory pre zásuvku a elektroniku. Ak používate skener kariet rfid, v prípade tenkých stien nemusíte vytvárať diery. Karty stále fungujú, ale kľúčenky musíte dať blízko, aby ich mohol prečítať čítačka kariet RFID. Vnútri tiež nechajte miesto pre arduino a drôty. POZNÁMKA: Keď zostavujete zásuvku, nechajte v nej otvor, aby sa vaše servo mohlo zásuvku otočiť a uzamknúť.

Krok 2: Zapojenie

Zapojenie!
Zapojenie!

Tento krok môže byť komplikovaný, pretože musíte zapojiť vodiče na presné miesto, inak elektronika nebude fungovať. Nemám schému zapojenia, ale poviem vám, že každá pôjde. Zapojenie je len pre arduino uno. Ak používate arduino mega alebo nano, budete musieť vyhľadať umiestnenie káblov. Ak nepoužívate všetky elektróny, ktoré mám, môžete toto zapojenie jednoducho preskočiť.

Skener odtlačkov prstov: zelený vodič: D2 biely vodič: D3 čierny vodič: GND červený vodič: 5V

Joystick: 5V = 3,3V GND = GND X = A2 Y = A3 Prepínač = D4

skener RFID kariet: 3,3 V = 3,3 V prvý = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

LCD obrazovka: 5V = 5V GND = GND sda = A4 sck = A5

Servo: červený vodič: 5V Hnedý vodič: GND žltý vodič: D6

POZNÁMKA: NENAPÁJAJTE SKENER RFID KARTY DO 5V. AK ROBÍTE, ROZlomí sa !!!

Možno sa čudujete, prečo som povedal, aby som zapojil napájanie joysticku na 3,3 V, keď na boku je napísané 5 V. Je to preto, že servo, obrazovka a snímač odtlačkov prstov potrebujú 5V. Ak k tomu pridáte joystick, elektronika nemusí fungovať, pretože všetko potrebuje 5V. Joystick bude stále fungovať s napätím 3,3 V. Je to len maximálna hodnota, ktorá nebude 1023, ale bude ~ 670.

Krok 3: Sťahovanie knižníc

V tomto projekte budete potrebovať 6 knižníc, aby ste mohli používať všetku elektroniku. 1 pre servo, 1 pre snímač odtlačkov prstov, 2 pre skener kariet rfid a 2 pre obrazovku. Joystick nepotrebuje knižnicu. Teraz, čo je knižnica? Je to v podstate súbor, ktorý obsahuje veľa kódu, ktorý môžete použiť vo svojom projekte pomocou jednoduchých príkazov. Ak chcete získať tieto knižnice, musíte ísť na miesto s názvom GitHub. Ak viete, ako sťahovať a rozbaľovať knižnice, stiahnite si ich pomocou odkazov nižšie. Ak neviete ako, môžete ísť na môj návod, ktorý hovorí o tom, ako stiahnuť knižnicu v kroku 3:

alebo vyhľadajte na youtube video, ako stiahnuť arduino knižnicu z GitHubu

ODKAZY NA LIRARIES:

Servo

snímač odtlačkov prstov:

spi

snímač karty rfid

knižnica obrazovky 1

knižnica obrazovky 2

Krok 4: Nastavenie snímača odtlačkov prstov a snímača karty Rfid

Tento krok hovorí o tom, ako nastaviť snímač odtlačkov prstov a snímač karty rfid. Pokiaľ ste snímač odtlačkov prstov ešte nepoužili, budete mu musieť ukázať, ako vyzerá váš odtlačok prsta, aby si ho mohol uložiť do pamäte. Aj keď ste ho už použili, pravdepodobne by ste mali urobiť tento krok. Stručne vám poviem, ako to urobiť, ale ak to nedáva zmysel, v poslednom kroku prejdite na rovnaký odkaz s pokynmi. Ide to veľmi dobre. Základné stačí otvoriť arduino ide. Prejdite do súboru> príklady> snímač odtlačkov prstov adafruit> zaregistrovať sa. Nahrajte kód do arduina, otvorte sériový monitor a postupujte podľa pokynov. Keď vám povie, aby ste mu dali číslo. Zadajte 1#.

Teraz pre kartu rfid je tento krok veľmi jednoduchý. Otvorte arduino ide. Prejdite do súboru> príklady> mfrc522> prečítajte si osobné údaje. Nahrajte na arduino a otvorte sériový monitor. Naskenujte kartu alebo kľúčenku, ktorú chcete použiť, dodanú so senzorom. Potom vám poskytne niekoľko informácií. Vyhľadajte ID karty, budú to 4 sady 2 číslic. Niečo také: AB 45 2Y 45, ale váš kód bude iný. Napíšte to na kúsok papiera. Neskôr to budete potrebovať znova. To je k tomuto kroku všetko.

Krok 5: KÓD

Toto bude pre väčšinu z vás najťažší krok, ale je to veľmi jednoduché. Najprv skopírujte a prilepte kód do arduino ide zospodu. Za druhé, upravte 2 sekcie, kde je napísané UPRAVIŤ KÓD. 1 časť je pre skener kariet, 1 pre joystick. Tieto kroky nemožno preskočiť. Akonáhle budete hotoví, nahrajte kód do arduina!

#include #include Fingerprint.h>

#zahrnúť

#zahrnúť

#zahrnúť

#zahrnúť

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POZITÍVNE);

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

znak d1;

znak d2;

char d3;

char d4;

neplatné nastavenie () {

servo.attach (6);

servo.pis (170);

lcd.begin (20, 4);

Serial.begin (9600);

while (! Serial);

SPI.begin ();

mfrc522. PCD_Init ();

oneskorenie (4);

mfrc522. PCD_DumpVersionToSerial ();

oneskorenie (100);

Serial.println ("\ n / nAdafruit test na detekciu prsta");

finger.begin (57600);

oneskorenie (5);

if (finger.verifyPassword ()) {

Serial.println („Všetky systémy fungujú“);

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print („Naskenujte prst“);

} else {

Serial.println ("CHYBA: Snímač odtlačkov prstov nebol nájdený!");

lcd.setCursor (0, 0);

lcd.print ("CHYBA: Odtlačok prsta");

lcd.setCursor (1, 1);

lcd.print ("snímač nebol nájdený!");

while (1) {delay (1); }

}

finger.getTemplateCount ();

Serial.print ("Senzor obsahuje"); Serial.print (finger.templateCount); Serial.println ("šablóny"); Serial.println ("Čakanie na platný prst …"); }

void (* resetFunc) (void) = 0;

prázdna slučka () {

getFingerprintIDez ();

oneskorenie (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

prepínač (p) {

prípad FINGERPRINT_OK:

Serial.println ("Obrázok urobený");

prestávka;

prípad FINGERPRINT_NOFINGER:

Serial.println ("Nebol zistený žiadny prst");

vrátiť p;

prípad FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Chyba komunikácie");

vrátiť p;

prípad FINGERPRINT_IMAGEFAIL:

Serial.println ("Chyba zobrazovania");

vrátiť p;

predvolené:

Serial.println ("Neznáma chyba");

vrátiť p;

}

p = finger.image2Tz ();

prepínač (p) {

prípad FINGERPRINT_OK:

Serial.println ("Obrázok skonvertovaný");

prestávka;

prípad FINGERPRINT_IMAGEMESS:

Serial.println ("Obrázok je príliš chaotický");

vrátiť p;

prípad FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Chyba komunikácie");

vrátiť p;

prípad FINGERPRINT_FEATUREFAIL:

Serial.println ("Nepodarilo sa nájsť funkcie odtlačkov prstov");

vrátiť p;

prípad FINGERPRINT_INVALIDIMAGE:

Serial.println ("Nepodarilo sa nájsť funkcie odtlačkov prstov");

vrátiť p;

predvolené:

Serial.println ("Neznáma chyba");

vrátiť p;

}

p = prst.fingerFastSearch ();

ak (p == FINGERPRINT_OK) {

Serial.println („Našla sa zhoda s tlačou!“);

} else if (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Chyba komunikácie");

vrátiť p;

} else if (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Nenašiel som zhodu");

vrátiť p;

} else {

Serial.println ("Neznáma chyba");

vrátiť p;

}

Serial.print ("Nájdené ID #"); Serial.print (finger.fingerID);

Serial.print ("s dôverou"); Serial.println (finger.confidence);

vrátiť finger.fingerID;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

ak (p! = FINGERPRINT_OK) vráti -1;

p = finger.image2Tz ();

ak (p! = FINGERPRINT_OK) vráti -1;

p = prst.fingerFastSearch ();

ak (p! = FINGERPRINT_OK) vráti -1;

Serial.print ("Nájdené ID #"); Serial.print (finger.fingerID);

Serial.print ("s dôverou"); Serial.println (finger.confidence);

if (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print („Prst prijatý“,);

lcd.setCursor (2, 0);

lcd.print („teraz naskenujte kartu …“);

lcd.setCursor (0, 3);

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

while (! mfrc522. PICC_IsNewCardPresent ());

while (! mfrc522. PICC_ReadCardSerial ());

if (mfrc522.uid.uidByte [0] == 0x92 && // ============================ UPRAVIŤ KÓD ========= ===============

mfrc522.uid.uidByte [1] == 0xAB && // Vezmite ten kus papiera s ID, boli tam 4 sady 2 číslic

mfrc522.uid.uidByte [2] == 0x90 && // Pozrite sa podľa kódu a zistite, kde je napísané 0x92, 0xAB, 0x90, 0x1c? Zadajte každú

mfrc522.uid.uidByte [3] == 0x1C) {// 2 -miestnu sekciu za 0x. Napríklad časť ID uvádza

lcd.clear (); // 3E, potom zadajte 3E za 0x, aby ste vytvorili 0x3E. Vykonajte to pre každú sekciu

lcd.setCursor (3, 0);

lcd.print („Nakoniec zadajte“);

lcd.setCursor (1, 1);

lcd.print („heslo joysticku“);

while (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) {

dl = U;

}

if (analogRead (A3)> = 670) {

dl = D;

}

oneskorenie (500);

while (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;

}

oneskorenie (500);

while (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;

}

oneskorenie (500);

while (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;

}

oneskorenie (500);

ak (d1 == L && d2 == U && d3 == L && d4 == R) {// =================== UPRAVIŤ KÓD ====== =================

lcd.clear (); // V tejto sekcii môžete heslo upravovať pomocou joysticku

lcd.setCursor (2, 0); // heslo je nastavené doľava, hore doľava, doprava. Ak sa chceš zmeniť

lcd.print („Prístup povolený!“); // v ktoromkoľvek z nich umiestnite L doľava, R doprava, U hore alebo D dolu

lcd.setCursor (2, 1); // 4 sekcie s písmenom za znakmi ==.

lcd.print ("Zásuvka odomknutá.");

lcd.setCursor (2, 2);

lcd.print („Keď skončíte, presuňte sa“);

lcd.setCursor (1, 3);

lcd.print ("joystick na opätovné uzamknutie");

servo.write (90);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.pis (170);

lcd.setCursor (3, 0);

lcd.print ("Zásuvka uzamknutá");

oneskorenie (3000);

resetFunc ();

} else {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print („PRÍSTUP ODMIETNUTÝ !!!“);

lcd.setCursor (0, 2);

lcd.print („Reštartovací systém …“);

oneskorenie (3000);

resetFunc ();

}

} else {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print („PRÍSTUP ODMIETNUTÝ !!!“);

lcd.setCursor (0, 2);

lcd.print („Reštartovací systém …“);

oneskorenie (3000);

resetFunc ();

}

} else {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print („PRÍSTUP ODMIETNUTÝ !!!“);

lcd.setCursor (0, 2);

lcd.print („Reštartovací systém …“);

oneskorenie (3000);

resetFunc ();

}

vrátiť finger.fingerID; }

Krok 6: Dokončite

Jedna vec, ktorú som vám zabudol povedať, 2 veci je, že som to postavil predtým, ako som fotografoval, takže som vám nemohol ukázať, ako som postavil krabicu. Druhým je, že sa odporúča naskrutkovať servo časť na časť, ktorá sa otáča. Ak to neurobíte, niekto môže vytiahnuť zásuvku, keď je uzamknutá, a vytiahnuť kus. Ale skôr, ako ho zašroubujete, nájdite správne miesto, kam ho nasadiť, pretože servo sa do určitej miery otáča. Alebo to môžete jednoducho zmeniť v kóde. Ak sa časť elektroniky chová vtipne, možno budete chcieť nájsť iný spôsob, ako pre niektoré z nich získať napätie 5 V. Všimol som si, keď mi skener odtlačkov prstov zablikal, obrazovka s ním mierne zabliká a servo zašumí. Keď sa servo pohlo, obrazovka stmavla. Dúfam, že sa vám projekt páčil! Ak máte akékoľvek otázky, nechajte ich v komentároch. Nejde mi veľa o pokynoch, ale odpoviem im hneď, ako to bude možné!

Odporúča: