Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-23 14:41
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
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
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:
Corona Safe: Automaattinen vettä säästävä napautus: 6 vaihetta
Corona Safe: Automaattinen vettä säästävä hana: Meidän kaikkien on pestävä kädet silloin tällöin päästäksemme eroon viruksesta ja bakteereista erityisesti Corona-virusta varten, ja meidän on pestävä kädet 20 sekunnin ajan päästäksemme eroon siitä kokonaan. Myös saippua -annostelija tai hananuppi ei välttämättä ole hygieeninen tai
B-Safe, kannettava kassakaappi: 8 vaihetta (kuvilla)
B-Safe, kannettava kassakaappi: *** 4.9.2019: Latasin uuden 3D-tiedoston itse laatikosta. Näytti siltä, että lukoni oli 10 mm liian korkea hyvän sulun vuoksi *** Ongelma Kuvittele tämä: Heräät eräänä aamuna ja sää on todella hyvä. Haluat mennä rannalle, koska et
Arduino Key Safe: 4 vaihetta
Arduino Key Safe: Ideoita: https://www.instructables.com/id/Key-Safe/Olen henkilö, joka aina menetti tavarani ilman syytä. Teen tämän avaimen turvalliseksi, jotta voin muistaa laittaa tavarani sisälle menettämättä asioita. Tässä projektissa olen parantanut
Key Safe: 6 vaihetta (kuvilla)
Avainkaappi: Arkisin otan avaimeni harvoin esiin, mutta tämä aiheuttaa vaikeuksia, kun äitini lähti kotoa. Koska minulla ei ole muita vaihtoehtoja, äitini on jätettävä avain kaapin sisään oven viereen, mikä ei takaa, onko avain turvassa vai ei
High-Tech Pine Needle Camo -maalattu kannettava tietokone: 5 vaihetta
High-Tech Pine Needle Camo -maalattu kannettava tietokone: Olin juuri lopettanut vanhan Toshiba Laptop -laitteen asentamisen Linuxiin ja etsin Instructable-sivustoa, kun satuin juuri lähettämään "murph38_99". En todellakaan etsinyt menetelmää maalaa asetta, mutta sain hullun idean ja