INHOUDSOPGAWE:

Arduino High Tech Safe: 6 stappe
Arduino High Tech Safe: 6 stappe

Video: Arduino High Tech Safe: 6 stappe

Video: Arduino High Tech Safe: 6 stappe
Video: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, November
Anonim
Arduino High Tech kluis
Arduino High Tech kluis

Dit is my arduino hoë tegnologie kluis. U moet u vinger skandeer, u kaart skandeer en 'n 4 -syfer wagwoord invoer om die laai te ontsluit. Hierdie projek word nie aanbeveel vir beginners nie, want dit is baie gevorderd. Die kode is lank, maar ek sal dit in hierdie projek deel. Die koste beloop ongeveer $ 75 as u dieselfde kluis as ek bou. Hierdie projek kan ook 1-3 dae neem om te voltooi. So, laat ons begin!

Voorrade

Om dieselfde kluis as myne te bou, benodig u:

Arduino (word nie aanbeveel nie, want ek het nie stappe vir arduino mega of nano nie. Maar u kan dit steeds gebruik)

broodbord

servo

springdrade

joystick

20*4 (u kan 16*4 gebruik, maar u moet die kode verander)

vingerafdrukskandeerder

mfrc522 rfid -kaartskandeerder

'n emmer legos

Stap 1: Bou 'n boks

Bou 'n boks
Bou 'n boks

Eerstens benodig u 'n boks om u elektronika in te sit. U kan lego's, 'n 3D -gedrukte boks of selfs karton gebruik! (Alhoewel dit moeiliker kan wees) Moenie vergeet om gate in die laai en elektronika te plaas nie. As u die rfid -kaartskandeerder gebruik, hoef u nie 'n gaatjie daarvoor te maak as u mure dun is nie. Die kaarte werk nog steeds, maar u moet die sleutelhangers toemaak sodat die rfid -kaart senor dit kan lees. Laat ook ruimte vir u arduino en drade binne. LET WEL: As u die laai bou, laat 'n gaatjie daarin sodat u servo die laai kan draai en sluit.

Stap 2: Maak klaar

Bedrieg!
Bedrieg!

Hierdie stap kan ingewikkeld wees omdat u die drade op die presiese plek moet aansluit, anders kan die elektronika nie werk nie. Ek het nie 'n bedradingsdiagram nie, maar ek sal jou vertel of elkeen gaan. Die bedrading is slegs vir arduino uno. U moet die drade soek as u 'n arduino mega of nano gebruik. As u nie al die elektronies wat ek het gebruik nie, kan u die bedrading net oorslaan.

Vingerafdrukskandeerder: groen draad: D2 wit draad: D3 swart draad: rooi GND -draad: 5V

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

RFID kaart skandeerder: 3.3V = 3.3V eerste = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

lcd -skerm: 5V = 5V GND = GND sda = A4 sck = A5

Servo: rooi draad: 5V Bruin draad: GND geeldraad: D6

OPMERKING: MOENIE RFID -KAARTSKANDELAAR IN 5V AANSLUIT NIE. As jy dit doen, SAL dit breek !!!

U wonder miskien hoekom ek gesê het om die joystick -krag aan te sluit op 3.3V as daar 5V aan die kant staan. Dit is omdat die servo, skerm en vingerafdrukskandeerder 5V benodig. As u die joystick daarby voeg, werk die elektronika moontlik nie, want alles benodig 5V. Die joystick werk steeds met 3.3V. Die maksimum waarde is nie 1023 nie, dit sal ~ 670 wees.

Stap 3: Laai biblioteke af

In hierdie projek benodig u 6 biblioteke om al die elektronika te gebruik. 1 vir die servo, 1 vir die vingerafdruksensor, 2 vir rfid -kaartskandeerder en 2 vir die skerm. Die joystick het nie 'n biblioteek nodig nie. Nou, wat is 'n biblioteek? Dit is basies 'n lêer met baie kode wat u met eenvoudige opdragte in u projek kan gebruik. Om hierdie biblioteke te kry, moet u na 'n plek met die naam GitHub gaan. As u weet hoe om biblioteke af te laai en uit te pak, gaan na die onderstaande skakels vir die aflaai. As u nie weet hoe nie, kan u na my instruksies gaan wat praat oor hoe u 'n biblioteek in stap 3 kan aflaai:

of soek 'n youtube -video oor hoe om 'n arduino -biblioteek van GitHub af te laai

SKAKELS NA LIRARIES:

Servo

vingerafdruksensor:

spi

rfid -kaartsensor

skermbiblioteek 1

skermbiblioteek 2

Stap 4: Die opstel van vingerafdruksensor en RFID -kaartsensor

Hierdie stap handel oor hoe om 'n vingerafdruksensor en 'n RFID -kaartsensor op te stel. Tensy u reeds u vingerafdruksensor gebruik het, moet u dit wys hoe u vingerafdruk lyk sodat dit in u geheue kan stoor. Selfs as u dit al voorheen gebruik het, moet u waarskynlik hierdie stap doen. Ek sal u vertel hoe u dit kortliks moet doen, maar as dit nie sinvol is nie, gaan dan na dieselfde instruksionele skakel in die laaste stap. Dit gaan baie goed daaroor. Basiese net oop arduino ide. Gaan na lêer> voorbeelde> adafruit -vingerafdruksensor> skryf in. Laai kode op na arduino, maak die seriële monitor oop en volg die stappe wat dit u vertel. As dit jou vertel om 'n nommer te gee. Tik 1#in.

Nou vir die rfid -kaart, is hierdie stap redelik maklik. Open arduino ide. Gaan na lêer> voorbeelde> mfrc522> lees persoonlike data. Laai op na arduino en maak die seriële monitor oop. Skandeer die kaart of sleutelhanger wat u saam met u sensor wil gebruik. Dan gee dit u inligting. Soek die ID van die kaart, dit sal 4 stelle van 2 syfers wees. So iets: AB 45 2Y 45, maar u kode sal anders wees. Skryf dit op 'n stuk papier neer. U sal dit later weer nodig hê. Dit is dit vir hierdie stap.

Stap 5: DIE KODE

Dit gaan vir die meeste van julle die moeilikste stap wees, maar dit is redelik eenvoudig. Kopieer en plak eers die kode van onder af in die arduino -idee. Tweedens, redigeer die 2 afdelings waar die KODEERGEWERK staan. 1 afdeling is vir die kaartskandeerder, 1 vir die joystick. Hierdie stappe kan nie oorgeslaan word nie. Sodra dit klaar is, laai die kode op na arduino!

#include #include Vingerafdruk.h>

#insluit

#insluit

#insluit

#insluit

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

#definieer RST_PIN 9

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

ongeldige opstelling () {

servo.aanheg (6);

servo.write (170);

lcd.begin (20, 4);

Serial.begin (9600);

terwyl (! Serial);

SPI.begin ();

mfrc522. PCD_Init ();

vertraging (4);

mfrc522. PCD_DumpVersionToSerial ();

vertraging (100);

Serial.println ("\ n / nAdafruit -vingeropsporingstoets");

vinger.begin (57600);

vertraging (5);

as (finger.verifyPassword ()) {

Serial.println ("Alle stelsels werk");

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Skandeer asseblief vinger");

} anders {

Serial.println ("FOUT: Vingerafdruksensor nie gevind nie!");

lcd.setCursor (0, 0);

lcd.print ("FOUT: vingerafdruk");

lcd.setCursor (1, 1);

lcd.print ("sensor nie gevind nie!");

terwyl (1) {vertraging (1); }

}

finger.getTemplateCount ();

Serial.print ("Sensor bevat"); Serial.print (vinger.templateCount); Serial.println ("sjablone"); Serial.println ("Wag vir geldige vinger …"); }

void (* resetFunc) (void) = 0;

leemte -lus () {

getFingerprintIDez ();

vertraging (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

skakelaar (p) {

saak FINGERPRINT_OK:

Serial.println ("Beeld geneem");

breek;

saak FINGERPRINT_NOFINGER:

Serial.println ("Geen vinger bespeur nie");

terugkeer p;

saak FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Kommunikasie fout");

terugkeer p;

saak FINGERPRINT_IMAGEFAIL:

Serial.println ("Beeldfout");

terugkeer p;

verstek:

Serial.println ("Onbekende fout");

terugkeer p;

}

p = vinger.beeld2Tz ();

skakelaar (p) {

saak FINGERPRINT_OK:

Serial.println ("Beeld omskep");

breek;

saak FINGERPRINT_IMAGEMESS:

Serial.println ("Beeld te morsig");

terugkeer p;

saak FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Kommunikasie fout");

terugkeer p;

saak FINGERPRINT_FEATUREFAIL:

Serial.println ("Kan nie vingerafdrukfunksies vind nie");

terugkeer p;

saak FINGERPRINT_INVALIDIMAGE:

Serial.println ("Kon nie vingerafdrukfunksies vind nie");

terugkeer p;

verstek:

Serial.println ("Onbekende fout");

terugkeer p;

}

p = finger.fingerFastSearch ();

as (p == FINGERPRINT_OK) {

Serial.println ("Het 'n afdrukwedstryd gevind!");

} anders as (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Kommunikasie fout");

terugkeer p;

} anders as (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Het geen wedstryd gevind nie");

terugkeer p;

} anders {

Serial.println ("Onbekende fout");

terugkeer p;

}

Serial.print ("ID -ID gevind"); Reeks.afdruk (finger.fingerID);

Serial.print ("met vertroue van"); Serial.println (vinger.vertroue);

terugkeer vinger.fingerID;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

as (p! = FINGERPRINT_OK) terugkeer -1;

p = vinger.beeld2Tz ();

as (p! = FINGERPRINT_OK) terugkeer -1;

p = finger.fingerFastSearch ();

as (p! = FINGERPRINT_OK) terugkeer -1;

Serial.print ("ID -ID gevind"); Reeks.afdruk (finger.fingerID);

Serial.print ("met vertroue van"); Serial.println (vinger.vertroue);

as (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Vinger aanvaar,");

lcd.setCursor (2, 0);

lcd.print ("scan kaart nou …");

lcd.setCursor (0, 3);

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

terwyl (! mfrc522. PICC_IsNewCardPresent ());

terwyl (! mfrc522. PICC_ReadCardSerial ());

if (mfrc522.uid.uidByte [0] == 0x92 && // ========================= EDIT CODE ======== =================

mfrc522.uid.uidByte [1] == 0xAB && // Neem die stuk papier met die ID daarop, daar was 4 stelle van 2 syfers

mfrc522.uid.uidByte [2] == 0x90 && // Kyk na die kode, kyk waar staan 0x92, 0xAB, 0x90, 0x1c? Voer elkeen in

mfrc522.uid.uidByte [3] == 0x1C) {// van die 2 -syfer -afdeling na die 0x. Die gedeelte van die ID sê byvoorbeeld

lcd.clear (); // 3E, voer dan die 3E na die 0x in om 0x3E te maak. Doen dit vir elke afdeling

lcd.setCursor (3, 0);

lcd.print ("Laastens, voer in");

lcd.setCursor (1, 1);

lcd.print ("joystick -wagwoord");

terwyl (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.setCursor (8, 4);

lcd.print ("*"); as (analogRead (A2) <= 100) {

d1 = L;

}

if (analogRead (A2)> = 670) {

d1 = R;

}

if (analogRead (A3) <= 100) {

d1 = U;

}

if (analogRead (A3)> = 670) {

d1 = D;

}

vertraging (500);

terwyl (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

as (analogRead (A2) <= 100) {

d2 = L;

}

if (analogRead (A2)> = 670) {

d2 = R;

}

if (analogRead (A3) <= 100) {

d2 = U;

}

if (analogRead (A3)> = 670) {

d2 = D;

}

vertraging (500);

terwyl (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

as (analogRead (A2) <= 100) {

d3 = L;

}

if (analogRead (A2)> = 670) {

d3 = R;

}

if (analogRead (A3) <= 100) {

d3 = U;

}

if (analogRead (A3)> = 670) {

d3 = D;

}

vertraging (500);

terwyl (analogRead (A2)> = 10 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

as (analogRead (A2) <= 100) {

d4 = L;

}

if (analogRead (A2)> = 670) {

d4 = R;

}

if (analogRead (A3) <= 100) {

d4 = U;

}

if (analogRead (A3)> = 670) {

d4 = D;

}

vertraging (500);

as (d1 == L && d2 == U && d3 == L && d4 == R) {// ================= EDIT CODE ====== ==================

lcd.clear (); // Hierdie afdeling is waar u die wagwoord met die joystick kan wysig

lcd.setCursor (2, 0); // die wagwoord is links, regs, links, regs. As jy wil verander

lcd.print ("Toegang verleen!"); // dit, sit 'n L vir links, R vir regs, U vir bo, of D vir af in enige van die

lcd.setCursor (2, 1); // 4 afdelings met 'n letter na die == tekens.

lcd.print ("Laai ontsluit.");

lcd.setCursor (2, 2);

lcd.print ("As u klaar is, skuif");

lcd.setCursor (1, 3);

lcd.print ("joystick om weer te sluit");

servo.write (90);

terwyl (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print ("Laai gesluit");

vertraging (3000);

resetFunc ();

} anders {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("TOEGANG GEWEEG !!!");

lcd.setCursor (0, 2);

lcd.print ("Herlaai stelsel …");

vertraging (3000);

resetFunc ();

}

} anders {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("TOEGANG GEWEEG !!!");

lcd.setCursor (0, 2);

lcd.print ("Herlaai stelsel …");

vertraging (3000);

resetFunc ();

}

} anders {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("TOEGANG GEWEEG !!!");

lcd.setCursor (0, 2);

lcd.print ("Herlaai stelsel …");

vertraging (3000);

resetFunc ();

}

terug vinger.fingerID; }

Stap 6: Voltooi

Een ding wat ek vergeet het om te vertel, twee dinge is dat ek dit gebou het voordat ek foto's geneem het, sodat ek nie kon wys hoe ek die boks gebou het nie. Die ander is dat dit aanbeveel word om die servo -deel vas te maak op die deel wat draai. As u dit nie doen nie, kan iemand aan die laai trek terwyl dit gesluit is en die stuk af trek. Maar voordat u dit vasmaak, moet u die regte plek vind om dit aan te trek, want die servo draai tot 'n sekere mate. Of u kan dit net in die kode verander. As sommige van die elektronika snaaks optree, wil u miskien 'n ander manier kry om 5V vir sommige van hulle te kry. Ek het opgemerk toe my vingerafdrukskandeerder flits, die skerm sou effens flits, en die servo sou raas. As die servo beweeg, word die skerm dowwer. Ek hoop jy het die projek geniet! As u enige vrae het, laat dit dan in die kommentaar. Ek is nie baie op instruksies nie, maar ek sal dit so gou as moontlik beantwoord!

Aanbeveel: