Obsah:

High Tech Safe Arduino: 6 kroků
High Tech Safe Arduino: 6 kroků

Video: High Tech Safe Arduino: 6 kroků

Video: High Tech Safe Arduino: 6 kroků
Video: Amazing arduino project 2024, Červenec
Anonim
High -tech trezor Arduino
High -tech trezor Arduino

Toto je můj vysoce technologický trezor arduino. K odemčení zásuvky musíte naskenovat prst, naskenovat kartu a poté zadat 4místné heslo. Tento projekt není vhodný pro začátečníky, protože je velmi pokročilý. Kód je dlouhý, ale v tomto projektu se o něj podělím. Cena je kolem 75 USD, pokud stavíte stejný trezor jako já. Dokončení tohoto projektu může také trvat 1–3 dny. Pojďme tedy začít!

Zásoby

Chcete -li postavit stejný trezor jako já, budete potřebovat:

Arduino (Uno doporučeno, protože nemám kroky pro arduino mega nebo nano. Ale stále je můžete použít)

prkénko

servo

propojovací vodiče

joystick

20*4 (můžete použít 16*4, ale budete muset změnit kód)

snímač otisků prstů

mfrc522 skener karty rfid

kýbl lega

Krok 1: Sestavení krabice

Stavba krabice
Stavba krabice

Nejprve budete potřebovat krabici, do které vložíte elektroniku. Můžete použít lego, 3D tištěnou krabici nebo dokonce lepenku! (I když to může být těžší) Nezapomeňte do něj vložit otvory pro zásuvku a elektroniku. Pokud používáte skener karet rfid, nemusíte pro něj vytvářet díru, pokud jsou vaše stěny tenké. Karty stále fungují, ale klíčenky musíte zavřít, aby je mohl přečíst čtečka karet RFID. Nechejte uvnitř také prostor pro vaše arduino a dráty. POZNÁMKA: Když stavíte zásuvku, nechte v ní díru, aby se vaše servo mohlo zásuvku otočit a zamknout.

Krok 2: Zapojení

Zapojení!
Zapojení!

Tento krok může být komplikovaný, protože musíte zapojit vodiče na přesné místo, jinak nebude elektronika fungovat. Nemám schéma zapojení, ale řeknu vám, že každý půjde. Zapojení je pouze pro arduino uno. Pokud používáte arduino mega nebo nano, budete muset hledat kabely. Pokud nepoužíváte všechny elektrony, které mám, můžete toto zapojení jednoduše přeskočit.

Skener otisků prstů: zelený vodič: bílý vodič D2: černý vodič D3: červený vodič GND: 5V

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

skener karet RFID: 3,3 V = 3,3 V první = 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 Hnědý vodič: GND žlutý vodič: D6

POZNÁMKA: NEZAPOJUJTE SKENER RFID KARTY DO 5V. POKUD UDĚLÁTE, ZRUSÍ se to !!!

Možná si říkáte, proč jsem řekl, abych připojil napájení joysticku na 3,3 V, když na boku je uvedeno 5 V. Důvodem je, že servo, obrazovka a snímač otisků prstů potřebují 5V. Pokud k tomu přidáte joystick, elektronika nemusí fungovat, protože vše potřebuje 5V. Joystick bude stále fungovat s 3,3 V. Je to jen maximální hodnota, která nebude 1023, ale bude ~ 670.

Krok 3: Stažení knihoven

V tomto projektu budete potřebovat 6 knihoven, abyste mohli využívat veškerou elektroniku. 1 pro servo, 1 pro snímač otisků prstů, 2 pro čtečku karet rfid a 2 pro obrazovku. Joystick nepotřebuje knihovnu. Co je tedy knihovna? Je to v podstatě soubor, který obsahuje spoustu kódu, který můžete použít ve svém projektu pomocí jednoduchých příkazů. Chcete -li získat tyto knihovny, musíte jít na místo zvané GitHub. Pokud víte, jak stahovat a rozbalovat knihovny, přejděte na níže uvedené odkazy pro stahování. Pokud nevíte jak, můžete přejít na můj instruktáž, který hovoří o tom, jak stáhnout knihovnu v kroku 3:

nebo vyhledejte na youtube video, jak stáhnout arduino knihovnu z GitHubu

ODKAZY NA LIRÁRNY:

Servo

snímač otisku prstu:

spi

snímač karty rfid

knihovna obrazovky 1

knihovna obrazovky 2

Krok 4: Nastavení snímače otisku prstu a snímače karty Rfid

Tento krok hovoří o tom, jak nastavit snímač otisku prstu a snímač karty rfid. Pokud jste snímač otisků prstů ještě nepoužili, budete mu muset ukázat, jak vypadá váš otisk prstu, aby si jej mohl uložit do své paměti. I když jste to již použili, měli byste pravděpodobně tento krok udělat. Stručně vám řeknu, jak to udělat, ale pokud to nedává smysl, přejděte v posledním kroku na stejný instrukovatelný odkaz. Jde to velmi dobře. Základní stačí otevřít arduino ide. Přejděte do souboru> příklady> snímač otisku prstu adafruit> zaregistrujte se. Nahrajte kód do arduina, otevřete sériový monitor a postupujte podle pokynů, které vám sdělí. Když vám řekne, abyste mu dali číslo. Zadejte 1#.

Nyní pro kartu rfid je tento krok docela snadný. Otevřete arduino ide. Přejděte do souboru> příklady> mfrc522> číst osobní údaje. Nahrajte na arduino a otevřete sériový monitor. Naskenujte kartu nebo klíčenku, kterou chcete použít, dodanou se senzorem. Pak vám poskytne nějaké informace. Vyhledejte ID karty, budou to 4 sady po 2 číslicích. Něco takového: AB 45 2Y 45, ale váš kód bude jiný. Zapište si to na kousek papíru. Budete to potřebovat znovu později. To je pro tento krok vše.

Krok 5: KÓD

Pro většinu z vás to bude nejtěžší krok, ale je to docela jednoduché. Nejprve zkopírujte a vložte kód do arduino ide zespodu. Za druhé, upravte 2 sekce, kde je uvedeno UPRAVIT KÓD. 1 část je pro čtečku karet, 1 je pro joystick. Tyto kroky nelze přeskočit. Až budete hotovi, nahrajte kód do arduina!

#include #include Fingerprint.h>

#zahrnout

#zahrnout

#zahrnout

#zahrnout

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

#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é nastavení () {

servo.attach (6);

servo.write (170);

lcd.begin (20, 4);

Serial.begin (9600);

while (! Serial);

SPI.begin ();

mfrc522. PCD_Init ();

zpoždění (4);

mfrc522. PCD_DumpVersionToSerial ();

zpoždění (100);

Serial.println ("\ n / nAdafruit test detekce prstu");

finger.begin (57600);

zpoždění (5);

if (finger.verifyPassword ()) {

Serial.println („Všechny systémy fungují“);

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Naskenujte prst");

} else {

Serial.println ("CHYBA: snímač otisku prstu nebyl nalezen!");

lcd.setCursor (0, 0);

lcd.print ("CHYBA: otisk prstu");

lcd.setCursor (1, 1);

lcd.print ("senzor nenalezen!");

while (1) {delay (1); }

}

finger.getTemplateCount ();

Serial.print („Senzor obsahuje“); Serial.print (finger.templateCount); Serial.println ("šablony"); Serial.println ("Čekání na platný prst …"); }

void (* resetFunc) (void) = 0;

prázdná smyčka () {

getFingerprintIDez ();

zpoždění (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

přepínač (p) {

případ FINGERPRINT_OK:

Serial.println ("Snímek pořízen");

přestávka;

případ FINGERPRINT_NOFINGER:

Serial.println ("Nebyl detekován žádný prst");

vrátit p;

případ FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Chyba komunikace");

vrátit p;

případ FINGERPRINT_IMAGEFAIL:

Serial.println ("Chyba při zobrazování");

vrátit p;

výchozí:

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

vrátit p;

}

p = finger.image2Tz ();

přepínač (p) {

případ FINGERPRINT_OK:

Serial.println ("obrázek převeden");

přestávka;

případ FINGERPRINT_IMAGEMESS:

Serial.println ("Obrázek je příliš špinavý");

vrátit p;

případ FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Chyba komunikace");

vrátit p;

případ FINGERPRINT_FEATUREFAIL:

Serial.println ("Nelze najít funkce otisku prstu");

vrátit p;

případ FINGERPRINT_INVALIDIMAGE:

Serial.println ("Nelze najít funkce otisku prstu");

vrátit p;

výchozí:

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

vrátit p;

}

p = finger.fingerFastSearch ();

if (p == FINGERPRINT_OK) {

Serial.println („Nalezena shoda tisku!“);

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

vrátit p;

} else if (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Nenašel jsem shodu");

vrátit p;

} else {

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

vrátit p;

}

Serial.print ("Found ID #"); Serial.print (finger.fingerID);

Serial.print ("s jistotou"); Serial.println (finger.confidence);

vrátit finger.fingerID;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

if (p! = FINGERPRINT_OK) return -1;

p = finger.image2Tz ();

if (p! = FINGERPRINT_OK) return -1;

p = finger.fingerFastSearch ();

if (p! = FINGERPRINT_OK) return -1;

Serial.print ("Found ID #"); Serial.print (finger.fingerID);

Serial.print ("s jistotou"); Serial.println (finger.confidence);

if (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Prst přijat,");

lcd.setCursor (2, 0);

lcd.print („nyní naskenujte kartu …“);

lcd.setCursor (0, 3);

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

while (! mfrc522. PICC_IsNewCardPresent ());

while (! mfrc522. PICC_ReadCardSerial ());

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

mfrc522.uid.uidByte [1] == 0xAB && // Vezměte ten papír s ID, byly tam 4 sady po 2 číslicích

mfrc522.uid.uidByte [2] == 0x90 && // Podívejte se podle kódu, kde je uvedeno 0x92, 0xAB, 0x90, 0x1c? Zadejte každý

mfrc522.uid.uidByte [3] == 0x1C) {// 2místné části za 0x. Například část ID uvádí

lcd.clear (); // 3E, poté zadejte 3E za 0x, abyste vytvořili 0x3E. Udělejte to pro každou sekci

lcd.setCursor (3, 0);

lcd.print („Nakonec zadejte“);

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

d1 = L;

}

if (analogRead (A2)> = 670) {

dl = R;

}

if (analogRead (A3) <= 100) {

d1 = U;

}

if (analogRead (A3)> = 670) {

d1 = D;

}

zpoždění (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;

}

zpoždění (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;

}

zpoždění (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;

}

zpoždění (500);

if (d1 == L && d2 == U && d3 == L && d4 == R) {// =================== UPRAVIT KÓD ====== =================

lcd.clear (); // V této sekci můžete heslo upravit pomocí joysticku

lcd.setCursor (2, 0); // heslo je nastaveno doleva, nahoru vlevo, vpravo. Pokud se chcete změnit

lcd.print („Přístup povolen!“); // do kteréhokoli z nich vložte L vlevo, R vpravo, U nahoru nebo D dolů

lcd.setCursor (2, 1); // 4 sekce s písmenem za znaky ==.

lcd.print ("Zásuvka odemčena.");

lcd.setCursor (2, 2);

lcd.print („Až budete hotovi, přesuňte se“);

lcd.setCursor (1, 3);

lcd.print ("joystick k opětovnému uzamčení");

servo.write (90);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print ("Zásuvka uzamčena");

zpoždění (3000);

resetFunc ();

}jiný{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print („PŘÍSTUP ODMÍTNUT !!!“);

lcd.setCursor (0, 2);

lcd.print ("Restartování systému …");

zpoždění (3000);

resetFunc ();

}

}jiný{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print („PŘÍSTUP ODMÍTNUT !!!“);

lcd.setCursor (0, 2);

lcd.print ("Restartování systému …");

zpoždění (3000);

resetFunc ();

}

}jiný{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print („PŘÍSTUP ODMÍTNUT !!!“);

lcd.setCursor (0, 2);

lcd.print ("Restartování systému …");

zpoždění (3000);

resetFunc ();

}

vrátit finger.fingerID; }

Krok 6: Dokončete

Jedna věc, kterou jsem vám zapomněl sdělit, 2 věci je, že jsem to postavil před focením, takže jsem vám nemohl ukázat, jak jsem krabici postavil. Druhým je, že se doporučuje našroubovat servo část na část, která se otáčí. Pokud to neuděláte, někdo může vytáhnout zásuvku, když je uzamčená, a vytáhnout kus. Než jej ale zašroubujete, najděte správné místo, kam jej nasadit, protože servo se do určité míry otáčí. Nebo to můžete jednoduše změnit v kódu. Pokud se některá elektronika chová legračně, možná budete chtít najít jiný způsob, jak pro některé z nich získat 5V. Všiml jsem si, když mi skener otisků prstů zablikal, obrazovka s ním mírně zabliká a servo vydává hluk. Když se servo pohnulo, obrazovka ztmavla. Doufám, že se vám projekt líbil! Pokud máte nějaké dotazy, zanechte je v komentářích. Nejsem moc na instruktáže, ale odpovím na ně, jakmile budu moci!

Doporučuje: