Kazalo:

Arduino High Tech Safe: 6 korakov
Arduino High Tech Safe: 6 korakov

Video: Arduino High Tech Safe: 6 korakov

Video: Arduino High Tech Safe: 6 korakov
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Julij
Anonim
Arduino High Tech Safe
Arduino High Tech Safe

To je moj arduino visokotehnološki sef. Če želite odkleniti predal, morate skenirati prst, optično prebrati kartico in nato vnesti 4 -mestno geslo. Ta projekt ni priporočljiv za začetnike, ker je zelo napreden. Koda je dolga, vendar jo bom delil v tem projektu. Cena je okoli 75 USD, če zgradite isti sef kot jaz. Ta projekt bi lahko trajal tudi 1-3 dni. Torej, začnimo!

Zaloge

Če želite zgraditi enak sef kot moj, boste potrebovali:

Arduino (Uno priporočljivo, ker nimam korakov za arduino mega ali nano. Vendar jih lahko še vedno uporabljate)

deska

servo

mostične žice

krmilna palica

20*4 (lahko uporabite 16*4, vendar boste morali spremeniti kodo)

bralnik prstnih odtisov

bralnik kartic rfid mfrc522

vedro lego kock

1. korak: Izdelava škatle

Gradnja škatle
Gradnja škatle

Najprej boste potrebovali škatlo, v katero boste vstavili svojo elektroniko. Uporabili bi lahko lego kocke, 3D -tiskano škatlo ali celo karton! (Čeprav je to morda težje) Ne pozabite vanj vstaviti lukenj za predal in elektroniko. Če uporabljate optični bralnik kartic rfid, vam za to ni treba narediti luknje, če so stene tanke. Kartice še vedno delujejo, vendar morate obeske za ključe približati, da jih senzor kartice RFID prebere. Pustite tudi prostor za svoj arduino in žice v notranjosti. OPOMBA: Ko sestavite predal, pustite v njem luknjo, da se lahko servo obrne in zaklene predal.

2. korak: Ožičenje

Ožičenje!
Ožičenje!

Ta korak je lahko zapleten, ker morate priključiti žice na točno določeno mesto, sicer elektronika ne bo delovala. Nimam sheme ožičenja, vendar vam bom povedal, ali bo šel vsak. Ožičenje je samo za arduino uno. Če uporabljate arduino mega ali nano, boste morali poiskati žice. Če ne uporabljate vseh elektronskih naprav, ki jih imam, lahko samo preskočite to ožičenje.

Optični bralnik prstnih odtisov: zelena žica: bela žica D2: črna žica D3: rdeča žica GND: 5V

Krmilna ročica: 5V = 3,3 V GND = GND X = A2 Y = A3 Stikalo = D4

optični bralnik kartic rfid: 3,3 V = 3,3 V rst = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

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

Servo: rdeča žica: 5V Rjava žica: GND rumena žica: D6

OPOMBA: NE VKLOPITE BRIŠNIKA RFID KARTIC V 5 V. ČE TO NAPRAVITE, SE BO ZLOČILO !!!

Morda se sprašujete, zakaj sem rekel, da priključite krmilno palčko na 3.3V, ko na strani piše 5V. To je zato, ker servo, zaslon in skener prstnih odtisov potrebujejo 5 V. Če temu dodate še krmilno palčko, elektronika morda ne bo delovala, ker vse potrebuje 5V. Krmilna palica bo še vedno delovala pri 3.3V. Največja vrednost ne bo 1023, ampak bo ~ 670.

3. korak: Prenos knjižnic

V tem projektu boste za uporabo elektronike potrebovali 6 knjižnic. 1 za servo, 1 za senzor prstnih odtisov, 2 za optični bralnik kartic RFID in 2 za zaslon. Krmilna ročica ne potrebuje knjižnice. Kaj je knjižnica? To je v bistvu datoteka, ki vsebuje veliko kode, ki jo lahko uporabite v svojem projektu z enostavnimi ukazi. Če želite dobiti te knjižnice, morate obiskati mesto, imenovano GitHub. Če veste, kako prenesete in razpakirate knjižnice, pojdite na spodnje povezave za prenos. Če ne veste, kako, lahko obiščete mojo navodila, ki govorijo o tem, kako prenesti knjižnico v 3. koraku:

ali poiščite videoposnetek na YouTubu, kako prenesti knjižnico arduino z GitHub -a

POVEZAVE DO LIRARIJ:

Servo

senzor prstnih odtisov:

spi

senzor kartice rfid

knjižnica zaslona 1

knjižnica zaslona 2

4. korak: Nastavitev senzorja prstnih odtisov in senzorja kartice RFID

Ta korak govori o tem, kako nastaviti senzor prstnih odtisov in senzor kartice RFID. Razen če ste že uporabljali senzor prstnih odtisov, mu boste morali pokazati, kako izgleda vaš prstni odtis, da ga lahko shrani v pomnilnik. Tudi če ste ga že uporabljali, bi verjetno morali narediti ta korak. Na kratko vam bom povedal, kako to storite, če pa to ni smiselno, pojdite na isto povezavo, ki jo lahko naročite v zadnjem koraku. Zelo dobro gre čez to. Basic samo odprite arduino ide. Pojdite v datoteko> primeri> senzor prstnih odtisov adafruit> včlanite se. Naložite kodo v arduino, odprite serijski monitor in sledite korakom, ki vam jih pove. Ko ti pove, da mu daš številko. Vnesite 1#.

Zdaj za kartico rfid je ta korak precej enostaven. Odprite arduino ide. Pojdite v datoteko> primeri> mfrc522> preberite osebne podatke. Naložite v arduino in odprite serijski monitor. Skenirajte kartico ali obesek za ključe, ki ste ju dobili s senzorjem. Potem vam bo dal nekaj informacij. Poiščite ID kartice, ki bo sestavljena iz 4 sklopov po 2 števk. Nekaj takega: AB 45 2Y 45, vendar bo vaša koda drugačna. Zapišite to na kos papirja. Kasneje ga boste znova potrebovali. To je to za ta korak.

5. korak: KODA

Za večino vas bo to najtežji korak, vendar je precej preprost. Najprej kodirajte in prilepite kodo v arduino ide od spodaj. Drugič, uredite 2 razdelka, kjer piše EDIT CODE. 1 del je za optični bralnik kartic, 1 za krmilno palčko. Teh korakov ni mogoče preskočiti. Ko končate, naložite kodo v arduino!

#include #include Fingerprint.h>

#vključi

#vključi

#vključi

#vključi

LiquidCrystal_I2C LCD (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POZITIVNO);

#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.priključek (6);

servo.piši (170);

lcd.begin (20, 4);

Serial.begin (9600);

while (! Serijski);

SPI.begin ();

mfrc522. PCD_Init ();

zamuda (4);

mfrc522. PCD_DumpVersionToSerial ();

zamuda (100);

Serial.println ("\ n / nTest odkrivanja prstov sadja");

finger.begin (57600);

zamuda (5);

if (finger.verifyPassword ()) {

Serial.println ("Vsi sistemi delujejo");

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Prosim skenirajte prst");

} drugo {

Serial.println ("NAPAKA: Senzorja za prstni odtis ni mogoče najti!");

lcd.setCursor (0, 0);

lcd.print ("NAPAKA: Prstni odtis");

lcd.setCursor (1, 1);

lcd.print ("senzorja ni mogoče najti!");

medtem ko (1) {zamuda (1); }

}

finger.getTemplateCount ();

Serial.print ("Senzor vsebuje"); Serial.print (finger.templateCount); Serial.println ("predloge"); Serial.println ("Čakanje na veljaven prst …"); }

void (* resetFunc) (void) = 0;

void loop () {

getFingerprintIDez ();

zamuda (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

switch (p) {

primer FINGERPRINT_OK:

Serial.println ("Slika posneta");

zlom;

ohišje FINGERPRINT_NOFINGER:

Serial.println ("No prst zaznan");

vrnitev p;

primer FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Napaka v komunikaciji");

vrnitev p;

primer FINGERPRINT_IMAGEFAIL:

Serial.println ("Napaka pri slikanju");

vrnitev p;

privzeto:

Serial.println ("Neznana napaka");

vrnitev p;

}

p = finger.image2Tz ();

switch (p) {

primer FINGERPRINT_OK:

Serial.println ("Slika pretvorjena");

zlom;

ohišje FINGERPRINT_IMAGEMESS:

Serial.println ("Slika preveč neurejena");

vrnitev p;

primer FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Napaka v komunikaciji");

vrnitev p;

primer FINGERPRINT_FEATUREFAIL:

Serial.println ("Ni mogoče najti funkcij prstnih odtisov");

vrnitev p;

ohišje FINGERPRINT_INVALIDIMAGE:

Serial.println ("Ni mogoče najti funkcij prstnih odtisov");

vrnitev p;

privzeto:

Serial.println ("Neznana napaka");

vrnitev p;

}

p = finger.fingerFastSearch ();

če (p == FINGERPRINT_OK) {

Serial.println ("Najdeno je tiskanje!");

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

vrnitev p;

} drugače če (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Nisem našel ujemanja");

vrnitev p;

} drugo {

Serial.println ("Neznana napaka");

vrnitev p;

}

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

Serial.print ("z zaupanjem"); Serial.println (prst.zaupanje);

return finger.fingerID;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

if (p! = FINGERPRINT_OK) vrne -1;

p = finger.image2Tz ();

if (p! = FINGERPRINT_OK) vrne -1;

p = finger.fingerFastSearch ();

if (p! = FINGERPRINT_OK) vrne -1;

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

Serial.print ("z zaupanjem"); Serial.println (prst.zaupanje);

if (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Prst sprejet",);

lcd.setCursor (2, 0);

lcd.print ("zdaj skeniraj kartico …");

lcd.setCursor (0, 3);

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

while (! mfrc522. PICC_IsNewCardPresent ());

while (! mfrc522. PICC_ReadCardSerial ());

if (mfrc522.uid.uidByte [0] == 0x92 && // ======================== UREDI KODO ======== ==============

mfrc522.uid.uidByte [1] == 0xAB && // Vzemite tisti kos papirja z ID -jem, bili so 4 kompleti 2 števk

mfrc522.uid.uidByte [2] == 0x90 && // Poglejte po kodi, poglejte, kje piše 0x92, 0xAB, 0x90, 0x1c? Vnesite vsako

mfrc522.uid.uidByte [3] == 0x1C) {// dvomestnega odseka za 0x. Na primer, v razdelku ID piše

lcd.clear (); // 3E, nato za 0x vnesite 3E, da dobite 0x3E. To naredite za vsak razdelek

lcd.setCursor (3, 0);

lcd.print ("Končno, vnesite");

lcd.setCursor (1, 1);

lcd.print ("geslo igralne palice");

medtem ko (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;

}

zamuda (500);

medtem ko (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;

}

zamuda (500);

medtem ko (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;

}

zamuda (500);

medtem ko (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;

}

zamuda (500);

če (d1 == L && d2 == U && d3 == L && d4 == R) {// ================= UREDI KODO ====== ================

lcd.clear (); // Ta razdelek je, kjer lahko geslo uredite s krmilno palčko

lcd.setCursor (2, 0); // geslo je nastavljeno na levo, gor levo, desno. Če se želite spremeniti

lcd.print ("Dostop odobren!"); // to, postavite L za levo, R za desno, U za gor ali D za dol v katerem koli od

lcd.setCursor (2, 1); // 4 odseki s črko za znaki ==.

lcd.print ("Predal odklenjen.");

lcd.setCursor (2, 2);

lcd.print ("Ko končate, premaknite");

lcd.setCursor (1, 3);

lcd.print ("krmilna palica za ponovno odklepanje");

servo.pisati (90);

medtem ko (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.piši (170);

lcd.setCursor (3, 0);

lcd.print ("Predal zaklenjen");

zamuda (3000);

resetFunc ();

} drugo {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("DOSTOP JE ZAVRNJEN !!!");

lcd.setCursor (0, 2);

lcd.print ("Ponovni zagon sistema …");

zamuda (3000);

resetFunc ();

}

} drugo {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("DOSTOP JE ZAVRNJEN !!!");

lcd.setCursor (0, 2);

lcd.print ("Ponovni zagon sistema …");

zamuda (3000);

resetFunc ();

}

} drugo {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("DOSTOP ZAUSTAVLJEN !!!");

lcd.setCursor (0, 2);

lcd.print ("Ponovni zagon sistema …");

zamuda (3000);

resetFunc ();

}

return finger.fingerID; }

6. korak: Dokončaj

Ena stvar, ki sem vam jo pozabil povedati, dve stvari je, da sem to naredil, preden sem fotografiral, zato vam nisem mogel pokazati, kako sem zgradil škatlo. Druga je, da je priporočljivo, da servo del privijete na del, ki se obrača. Če tega ne storite, bi lahko nekdo potegnil predal, medtem ko je zaklenjen, in kos izvlekel. Toda preden ga privijete, poiščite pravo mesto, kjer ga namestite, ker se servo do določene mere obrača. Ali pa ga preprosto spremenite v kodi. Če se neka elektronika obnaša smešno, boste morda želeli najti drugačen način, da za nekatere dobite 5V. Opazil sem, ko je bralnik prstnih odtisov utripal, zaslon bi z njim rahlo utripal, servo pa bi šumil. Ko se je servo pomaknil, bi zaslon zatemnil. Upam, da vam je bil projekt všeč! Če imate kakršna koli vprašanja, jih pustite v komentarjih. Nisem veliko na navodilih, vendar jim bom odgovoril takoj, ko bom lahko!

Priporočena: