Tartalomjegyzék:

Arduino High Tech Safe: 6 lépés
Arduino High Tech Safe: 6 lépés

Videó: Arduino High Tech Safe: 6 lépés

Videó: Arduino High Tech Safe: 6 lépés
Videó: Energetics Technologys PPE100 Anti Mine Boot v Standard Army Boot 2024, November
Anonim
Arduino High Tech széf
Arduino High Tech széf

Ez az én arduino high -tech széfem. A fiók feloldásához be kell olvasnia az ujját, be kell olvasnia a kártyáját, majd be kell írnia egy 4 számjegyű jelszót. Ez a projekt nem ajánlott kezdőknek, mert nagyon fejlett. A kód hosszú, de megosztom ezt a projektben. Az ára körülbelül 75 dollár, ha ugyanazt a széfet építi, mint én. Ez a projekt is 1-3 napig tarthat. Szóval, kezdjük!

Kellékek

Az enyémhez hasonló széf építéséhez szüksége lesz:

Arduino (Uno ajánlott, mert nincsenek lépéseim az arduino mega vagy nano számára. De továbbra is használhatja őket)

kenyeretábla

szervo-

jumper vezetékek

joystick

20*4 (16*4 -et használhat, de módosítania kell a kódot)

ujjlenyomat -leolvasó

mfrc522 RFID kártyaolvasó

egy vödör legót

1. lépés: Doboz építése

Doboz építése
Doboz építése

Először szüksége lesz egy dobozra az elektronika behelyezéséhez. Használhat legót, 3D nyomtatott dobozt vagy akár kartont! (Bár ez nehezebb lehet) Ne felejtsen el lyukakat tenni a fiók és az elektronika számára. Ha az RFID kártyaolvasót használja, akkor nem kell lyukat tenni, ha a falak vékonyak. A kártyák továbbra is működnek, de be kell zárnia a kulcstartókat, hogy az RFID kártyaolvasó el tudja olvasni őket. Hagyjon helyet az arduino -nak és a vezetékeknek is. MEGJEGYZÉS: Amikor elkészíti a fiókot, hagyjon lyukat benne, hogy a szervó el tudja fordítani és reteszelje a fiókot.

2. lépés: Csatlakozás

Bekötés!
Bekötés!

Ez a lépés bonyolult lehet, mert a vezetékeket a megfelelő helyre kell csatlakoztatni, különben az elektronika nem fog működni. Nincs kapcsolási rajzom, de elmondom, hogy mindegyik megy. A huzalozás csak az arduino uno számára készült. Ha arduino mega -t vagy nano -t használ, meg kell keresnie a vezetékeket. Ha nem használja az összes elektronikát, akkor csak hagyja ki ezt a kábelezést.

Ujjlenyomat -szkenner: zöld huzal: D2 fehér huzal: D3 fekete huzal: GND piros huzal: 5V

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

RFID kártyaolvasó: 3.3V = 3.3V első = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

LCD képernyő: 5V = 5V GND = GND sda = A4 sck = A5

Szervo: piros vezeték: 5V Barna vezeték: GND sárga vezeték: D6

MEGJEGYZÉS: NE CSATLAKOZTASSA RFID KÁRTYA SZKENNERÉT 5 V -ÉRT. HA megteszed, megtörik !!!

Lehet, hogy vajon miért mondtam, hogy csatlakoztassa a joystick tápellátását 3,3 V -ra, amikor az oldalán 5V feliratot ír. Ennek oka az, hogy a szervónak, a képernyőnek és az ujjlenyomat -leolvasónak 5 V -ra van szüksége. Ha ehhez hozzáadja a joystickot, előfordulhat, hogy az elektronika nem működik, mert mindennek 5V -ra van szüksége. A joystick továbbra is működik 3.3V -al. Csak a maximális érték nem 1023, hanem ~ 670 lesz.

3. lépés: Könyvtárak letöltése

Ebben a projektben 6 könyvtárra lesz szüksége az összes elektronika használatához. 1 a szervó, 1 az ujjlenyomat -érzékelő, 2 az RFID kártyaolvasó és 2 a képernyő. A joystickhoz nincs szükség könyvtárra. Nos, mi az a könyvtár? Ez alapvetően egy fájl, amely sok kódot tartalmaz, és amelyet egyszerű parancsokkal használhat a projektben. A könyvtárak beszerzéséhez el kell mennie a GitHub nevű helyre. Ha tudja, hogyan kell letölteni és kicsomagolni a könyvtárakat, akkor a letöltésekhez kattintson az alábbi linkekre. Ha nem tudja, hogyan, keresse fel az utasításomat, amely a könyvtár letöltésének módjáról szól a 3. lépésben:

vagy keressen egy youtube videót arról, hogyan lehet letölteni egy arduino könyvtárat a GitHub -ról

LINKEK LIRÁRIAKHOZ:

Servo

ujjlenyomat-érzékelő:

spi

rfid kártya érzékelő

képernyőkönyvtár 1

képernyőkönyvtár 2

4. lépés: Az ujjlenyomat -érzékelő és az RFID -kártya -érzékelő beállítása

Ez a lépés az ujjlenyomat -érzékelő és az RFID -kártya -érzékelő beállításáról szól. Hacsak nem használta már ujjlenyomat -érzékelőjét, akkor meg kell mutatnia, hogyan néz ki az ujjlenyomat, hogy el tudja menteni a memóriájában. Még ha korábban is használta, valószínűleg meg kell tennie ezt a lépést. Röviden elmondom, hogyan kell ezt megtenni, de ha nincs értelme, akkor ugorjon ugyanahhoz az oktatható linkhez az utolsó lépésben. Nagyon jól megy rajta. Alapvető csak nyitott arduino ide. Nyissa meg a fájlt> példák> adafruit ujjlenyomat -érzékelő> regisztráljon. Töltse fel a kódot az arduino -ba, nyissa meg a soros monitort, és kövesse az utasításokat. Amikor azt mondja, hogy adjon meg egy számot. Írja be az 1#számot.

Most az rfid kártya esetében ez a lépés nagyon egyszerű. Nyílt arduino ide. Lépjen a fájlba> példák> mfrc522> olvassa el a személyes adatokat. Töltse fel az arduino -ba, és nyissa meg a soros monitort. Olvassa be a használni kívánt kártyát vagy kulcstartót, amelyet az érzékelőhöz kapott. Akkor ad némi információt. Keresse meg a kártya azonosítóját, ez 4 db 2 számjegyből áll. Valahogy így: AB 45 2Y 45, de a kódod más lesz. Írd le ezt egy papírra. Később újra szüksége lesz rá. Ennyi erre a lépésre.

5. lépés: A KÓD

A legtöbb ember számára ez lesz a legnehezebb lépés, de nagyon egyszerű. Először másolja ki és illessze be a kódot az arduino ide -ba alulról. Másodszor, szerkessze azt a 2 szakaszt, ahol a KÓD SZERKESZTÉSE felirat szerepel. 1 rész a kártyaolvasó, 1 a joystick. Ezeket a lépéseket nem lehet kihagyni. Ha elkészült, töltse fel a kódot az arduino -ba!

#include #include ujjlenyomat.h>

#befoglalni

#befoglalni

#befoglalni

#befoglalni

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_Ujjlenyomat ujja = Adafruit_Ujjlenyomat (& mySerial);

Szervo szervó;

char d1;

char d2;

char d3;

char d4;

void setup () {

servo.attach (6);

servo.write (170);

lcd. kezdet (20, 4);

Sorozat.kezdet (9600);

while (! Sorozat);

SPI.begin ();

mfrc522. PCD_Init ();

késleltetés (4);

mfrc522. PCD_DumpVersionToSerial ();

késleltetés (100);

Serial.println ("\ n / nAdafruit ujjfelismerő teszt");

ujj.kezdet (57600);

késleltetés (5);

if (finger.verifyPassword ()) {

Serial.println ("Minden rendszer működik");

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Kérjük, olvassa be az ujját");

} más {

Serial.println ("HIBA: Az ujjlenyomat -érzékelő nem található!");

lcd.setCursor (0, 0);

lcd.print ("HIBA: Ujjlenyomat");

lcd.setCursor (1, 1);

lcd.print ("az érzékelő nem található!");

míg (1) {késleltetés (1); }

}

finger.getTemplateCount ();

Serial.print ("Az érzékelő tartalmazza"); Soros.nyomat (ujj.templateCount); Serial.println ("sablonok"); Serial.println ("Várakozás az érvényes ujjra …"); }

void (* resetFunc) (void) = 0;

void loop () {

getFingerprintIDez ();

késleltetés (50);

}

uint8_t getFingerprintID () {

uint8_t p = ujj.getImage ();

kapcsoló (p) {

FINGERPRINT_OK eset:

Serial.println ("Kép készítve");

szünet;

FINGERPRINT_NOFINGER eset:

Serial.println ("Nincs ujj észlelve");

visszatérés p;

FINGERPRINT_PACKETRECIEVEERR eset:

Serial.println ("Kommunikációs hiba");

visszatérés p;

FINGERPRINT_IMAGEFAIL eset:

Serial.println ("Képalkotási hiba");

visszatérés p;

alapértelmezett:

Serial.println ("Ismeretlen hiba");

visszatérés p;

}

p = ujj.kép2Tz ();

kapcsoló (p) {

FINGERPRINT_OK eset:

Serial.println ("Kép konvertálva");

szünet;

FINGERPRINT_IMAGEMESS eset:

Serial.println ("A kép túl rendetlen");

visszatérés p;

FINGERPRINT_PACKETRECIEVEERR eset:

Serial.println ("Kommunikációs hiba");

visszatérés p;

FINGERPRINT_FEATUREFAIL eset:

Serial.println ("Nem található ujjlenyomat -szolgáltatás");

visszatérés p;

FINGERPRINT_INVALIDIMAGE eset:

Serial.println ("Nem található ujjlenyomat -szolgáltatás");

visszatérés p;

alapértelmezett:

Serial.println ("Ismeretlen hiba");

visszatérés p;

}

p = ujj.ujjFastSearch ();

ha (p == FINGERPRINT_OK) {

Serial.println ("Talált egy nyomtatási egyezést!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Kommunikációs hiba");

visszatérés p;

} else if (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Nem találtam egyezést");

visszatérés p;

} más {

Serial.println ("Ismeretlen hiba");

visszatérés p;

}

Serial.print ("Found ID #"); Soros.nyomat (ujj.ujjazonosító);

Serial.print ("bizalommal"); Serial.println (ujj.bizalom);

return finger.fingerID;

}

int getFingerprintIDez () {

uint8_t p = ujj.getImage ();

if (p! = FINGERPRINT_OK) return -1;

p = ujj.kép2Tz ();

if (p! = FINGERPRINT_OK) return -1;

p = ujj.ujjFastSearch ();

if (p! = FINGERPRINT_OK) return -1;

Serial.print ("Found ID #"); Soros.nyomat (ujj.ujjazonosító);

Serial.print ("bizalommal"); Serial.println (ujj.bizalom);

ha (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Ujj elfogadva");

lcd.setCursor (2, 0);

lcd.print ("most kártya beolvasása …");

lcd.setCursor (0, 3);

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

while (! mfrc522. PICC_IsNewCardPresent ());

while (! mfrc522. PICC_ReadCardSerial ());

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

mfrc522

mfrc522.uid.uidByte [2] == 0x90 && // Nézze meg a kódot, és nézze meg, hol van 0x92, 0xAB, 0x90, 0x1c? Írja be mindegyiket

mfrc522.uid.uidByte [3] == 0x1C) {// a 2 számjegyű részből a 0x után. Például az azonosító szakasz azt mondja

lcd.clear (); // 3E, majd írja be a 3E -t a 0x után, hogy 0x3E legyen. Végezze el ezt minden szakasznál

lcd.setCursor (3, 0);

lcd.print ("Végül adja meg");

lcd.setCursor (1, 1);

lcd.print ("joystick jelszó");

míg (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) {

d1 = R;

}

if (analogRead (A3) <= 100) {

d1 = U;

}

if (analogRead (A3)> = 670) {

d1 = D;

}

késleltetés (500);

míg (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;

}

késleltetés (500);

míg (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;

}

késleltetés (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;

}

késleltetés (500);

ha (d1 == L && d2 == U && d3 == L && d4 == R) {// ================= KÓD SZERKESZTÉSE ====== ================

lcd.clear (); // Ez a rész az, ahol a joystick segítségével szerkesztheti a jelszót

lcd.setCursor (2, 0); // a jelszó balra, balra fel, jobbra van állítva. Ha változtatni akarsz

lcd.print ("Hozzáférés biztosított!"); // ez, tegyen egy L -et balra, R -t jobbra, U -t felfelé vagy D -t lefelé bármelyikben

lcd.setCursor (2, 1); // 4 rész betűvel a == jelek után.

lcd.print ("Fiók feloldva.");

lcd.setCursor (2, 2);

lcd.print ("Ha kész, mozog");

lcd.setCursor (1, 3);

lcd.print ("joystick to retlock");

servo.write (90);

míg (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print ("Fiók zárva");

késleltetés (3000);

resetFunc ();

}más{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("HOZZÁFÉRÉS TILTVA !!!");

lcd.setCursor (0, 2);

lcd.print ("A rendszer újraindítása …");

késleltetés (3000);

resetFunc ();

}

}más{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("HOZZÁFÉRÉS TILTVA !!!");

lcd.setCursor (0, 2);

lcd.print ("A rendszer újraindítása …");

késleltetés (3000);

resetFunc ();

}

}más{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("HOZZÁFÉRÉS TILTVA !!!");

lcd.setCursor (0, 2);

lcd.print ("A rendszer újraindítása …");

késleltetés (3000);

resetFunc ();

}

visszatérő ujj.ujjazonosító; }

6. lépés: Fejezze be

Egy dolgot elfelejtettem elmondani, hát 2 dolog az, hogy ezt a képek készítése előtt megépítettem, így nem tudtam megmutatni, hogyan építettem meg a dobozt. A másik az, hogy ajánlott a szervo részt csavarni arra a részre, amely elfordul. Ha nem, akkor valaki meghúzhatja a fiókot, miközben az zárva van, és lehúzhatja a darabot. De mielőtt felcsavarná, keresse meg a megfelelő helyet, ahová tegye, mert a szervó bizonyos fokig elfordul. Vagy csak megváltoztathatja a kódban. Ha az elektronika némelyike viccesen viselkedik, akkor érdemes más módot találnia arra, hogy egyesek 5V -ot kapjanak. Észrevettem, hogy amikor az ujjlenyomat -olvasóm felvillan, a képernyő kissé felvillan vele, és a szervó zajt ad. Amikor a szervó mozog, a képernyő elsötétül. Remélem tetszett a projekt! Ha bármilyen kérdése van, tegye meg őket megjegyzésekben. Nem vagyok sokat utasításokon, de amint tudok válaszolok rájuk!

Ajánlott: