Turinys:

„Arduino High Tech Safe“: 6 žingsniai
„Arduino High Tech Safe“: 6 žingsniai

Video: „Arduino High Tech Safe“: 6 žingsniai

Video: „Arduino High Tech Safe“: 6 žingsniai
Video: Lesson 68, Home Automation: How to control 16 Channel Relay module using Arduino control 16 AC loads 2024, Liepa
Anonim
Arduino aukštųjų technologijų seifas
Arduino aukštųjų technologijų seifas

Tai yra mano arduino aukštųjų technologijų seifas. Norėdami atrakinti stalčių, turite nuskaityti pirštą, nuskaityti kortelę ir įvesti 4 skaitmenų slaptažodį. Šis projektas nerekomenduojamas pradedantiesiems, nes yra labai pažengęs. Kodas ilgas, bet pasidalinsiu juo šiame projekte. Kaina yra apie 75 USD, jei pastatysite tokį patį seifą kaip aš. Šis projektas taip pat gali užtrukti 1–3 dienas. Taigi, pradėkime!

Prekės

Norėdami pastatyti tokį patį seifą kaip mano, jums reikės:

„Arduino“(„Uno“rekomenduojama, nes neturiu „arduino mega“ar „nano“veiksmų. Bet jūs vis tiek galite juos naudoti)

Bandomoji Lenta

servo

jungiamieji laidai

vairasvirtę

20*4 (galite naudoti 16*4, bet turėsite pakeisti kodą)

pirštų atspaudų skaitytuvas

mfrc522 rfid kortelių skaitytuvas

kibiras lego

1 žingsnis: pastatykite dėžutę

Dėžutės statymas
Dėžutės statymas

Pirmiausia jums reikės dėžutės, kad galėtumėte įdėti savo elektroniką. Galite naudoti lego, 3D spausdintą dėžutę ar net kartoną! (Nors tai gali būti sunkiau) Nepamirškite į jį įdėti skylučių stalčiui ir jūsų elektronikai. Jei naudojate „RFID“kortelių skaitytuvą, jums nereikia dėti skylės, jei jūsų sienos yra plonos. Kortelės vis dar veikia, bet jūs turite uždėti raktų pakabukus, kad „RFID“kortelės senorius galėtų juos perskaityti. Taip pat palikite vietos savo arduino ir laidams. PASTABA: Kai statote stalčių, palikite jame skylę, kad jūsų servo sistema galėtų pasukti ir užfiksuoti stalčių.

2 žingsnis: prijungimas

Sujungimas!
Sujungimas!

Šis žingsnis gali būti sudėtingas, nes jums reikia prijungti laidus tiksliai toje vietoje, kitaip elektronika neveiks. Aš neturiu elektros instaliacijos schemos, bet aš jums pasakysiu, ar kiekvienas eis. Laidai skirti tik arduino uno. Jei naudojate arduino mega arba nano, turėsite ieškoti laidų. Jei nenaudojate viso turimo elektrono, galite tiesiog praleisti tą laidą.

Pirštų atspaudų skaitytuvas: žalia viela: D2 balta viela: D3 juoda viela: GND raudona viela: 5 V

Vairasvirtė: 5V = 3.3V GND = GND X = A2 Y = A3 jungiklis = D4

RFID kortelių skaitytuvas: 3.3V = 3.3V pirma = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

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

Servo: raudona viela: 5V Ruda viela: GND geltona viela: D6

PASTABA: NEKEISKITE RFID KORTELĖS SKENERIO Į 5V. JEI DARAI, PERTRUKS !!!

Jums gali būti įdomu, kodėl aš sakiau prijungti vairasvirtę prie 3.3 V, kai šone parašyta 5 V. Taip yra todėl, kad servo, ekrano ir pirštų atspaudų skaitytuvui reikia 5 V. Jei prie to pridėsite vairasvirtę, elektronika gali neveikti, nes viskam reikia 5 V. Joystick vis tiek veiks su 3.3V. Tiesiog maksimali vertė nebus 1023, ji bus ~ 670.

3 veiksmas: bibliotekų atsisiuntimas

Šiame projekte jums reikės 6 bibliotekų, kad galėtumėte naudoti visą elektroniką. 1 - servo, 1 - pirštų atspaudų jutiklis, 2 - RFID kortelių skaitytuvas ir 2 - ekranas. Vairasvirtei nereikia bibliotekos. Dabar, kas yra biblioteka? Iš esmės tai yra failas, kuriame yra daug kodų, kuriuos galite naudoti savo projekte su paprastomis komandomis. Norėdami gauti šias bibliotekas, turite eiti į vietą, vadinamą „GitHub“. Jei žinote, kaip atsisiųsti ir išpakuoti bibliotekas, tiesiog eikite į toliau pateiktas nuorodas, kad gautumėte atsisiuntimų. Jei nežinote, kaip tai padaryti, galite pereiti prie mano instrukcijos, kurioje kalbama apie tai, kaip atsisiųsti biblioteką 3 veiksme:

arba ieškokite „YouTube“vaizdo įrašo, kaip atsisiųsti „arduino“biblioteką iš „GitHub“

Nuorodos į lirijas:

Servo

pirštų atspaudų jutiklis:

spi

rfid kortelės jutiklis

ekrano biblioteka 1

ekrano biblioteka 2

4 žingsnis: nustatykite pirštų atspaudų jutiklį ir „RFID“kortelės jutiklį

Šiame žingsnyje kalbama apie tai, kaip nustatyti pirštų atspaudų jutiklį ir RFID kortelės jutiklį. Jei dar nesate naudoję pirštų atspaudų jutiklio, turėsite parodyti, kaip atrodo jūsų pirštų atspaudai, kad jis galėtų jį išsaugoti atmintyje. Net jei jūs jį naudojote anksčiau, tikriausiai turėtumėte atlikti šį veiksmą. Trumpai pasakysiu, kaip tai padaryti, bet jei tai nėra prasminga, paskutiniame žingsnyje eikite į tą pačią nurodomą nuorodą. Tai labai gerai peržengia. Pagrindinis tiesiog atviras arduino ide. Eikite į failą> pavyzdžiai> „adafruit“pirštų atspaudų jutiklis> užsiregistruokite. Įkelkite kodą į „arduino“, atidarykite serijinį monitorių ir atlikite jo nurodytus veiksmus. Kai liepia duoti skaičių. Įveskite 1#.

Dabar „RFID“kortelei šis žingsnis yra gana lengvas. Atviras arduino ide. Eikite į failą> pavyzdžiai> mfrc522> skaitykite asmeninius duomenis. Įkelkite į „arduino“ir atidarykite serijinį monitorių. Nuskaitykite kortelę ar raktų pakabuką, kurį norite naudoti kartu su jutikliu. Tada jis suteiks jums tam tikros informacijos. Ieškokite kortelės ID, tai bus 4 2 skaitmenų rinkiniai. Kažkas tokio: AB 45 2Y 45, bet jūsų kodas bus kitoks. Užsirašykite tai ant popieriaus lapo. Vėliau jums to prireiks dar kartą. Tai šiam žingsniui.

5 žingsnis: KODAS

Daugeliui jūsų tai bus sunkiausias žingsnis, tačiau tai gana paprasta. Pirmiausia nukopijuokite ir įklijuokite kodą į arduino ide iš apačios. Antra, redaguokite 2 skyrius, kuriuose sakoma REDAGUOTI KODĄ. 1 skyrius skirtas kortelių skaitytuvui, 1 - vairasvirtei. Šių veiksmų negalima praleisti. Baigę įkelkite kodą į arduino!

#include #include Fingerprint.h>

#įtraukti

#įtraukti

#įtraukti

#įtraukti

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.attach (6);

servo.write (170);

LCD. pradžia (20, 4);

Serial.begin (9600);

while (! Serial);

SPI.begin ();

mfrc522. PCD_Init ();

uždelsimas (4);

mfrc522. PCD_DumpVersionToSerial ();

vėlavimas (100);

Serial.println ("\ n / nAdafruit pirštų aptikimo testas");

pirštas.pradžia (57600);

vėlavimas (5);

if (finger.verifyPassword ()) {

Serial.println („Visos sistemos veikia“);

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Prašome nuskaityti pirštą");

} Kitas {

Serial.println ("KLAIDA: pirštų atspaudų jutiklis nerastas!");

lcd.setCursor (0, 0);

lcd.print ("KLAIDA: pirštų atspaudai");

lcd.setCursor (1, 1);

lcd.print ("jutiklis nerastas!");

o (1) {uždelsimas (1); }

}

finger.getTemplateCount ();

Serial.print („Jutiklyje yra“); Serial.print (finger.templateCount); Serial.println ("šablonai"); Serial.println ("Laukiama galiojančio piršto …"); }

void (* resetFunc) (void) = 0;

void loop () {

getFingerprintIDez ();

vėlavimas (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

jungiklis (p) {

atvejis FINGERPRINT_OK:

Serial.println („Nuotrauka padaryta“);

pertrauka;

atvejis FINGERPRINT_NOFINGER:

Serial.println („Piršto neaptikta“);

grąžinti p;

atvejis FINGERPRINT_PACKETRECIEVEERR:

Serial.println („Ryšio klaida“);

grąžinti p;

atvejis FINGERPRINT_IMAGEFAIL:

Serial.println („Vaizdo klaida“);

grąžinti p;

numatytas:

Serial.println („Nežinoma klaida“);

grąžinti p;

}

p = pirštas.paveikslėlis2Tz ();

jungiklis (p) {

atvejis FINGERPRINT_OK:

Serial.println („Vaizdas konvertuotas“);

pertrauka;

atvejis FINGERPRINT_IMAGEMESS:

Serial.println („Vaizdas per daug netvarkingas“);

grąžinti p;

atvejis FINGERPRINT_PACKETRECIEVEERR:

Serial.println („Ryšio klaida“);

grąžinti p;

atvejis FINGERPRINT_FEATUREFAIL:

Serial.println ("Nepavyko rasti pirštų atspaudų funkcijų");

grąžinti p;

atvejis FINGERPRINT_INVALIDIMAGE:

Serial.println ("Nepavyko rasti pirštų atspaudų funkcijų");

grąžinti p;

numatytas:

Serial.println („Nežinoma klaida“);

grąžinti p;

}

p = pirštas.pirštasFastSearch ();

jei (p == FINGERPRINT_OK) {

Serial.println ("Rasta spausdinimo atitiktis!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Ryšio klaida");

grąžinti p;

} kitaip, jei (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Neradau atitikmens");

grąžinti p;

} Kitas {

Serial.println („Nežinoma klaida“);

grąžinti p;

}

Serial.print („Rastas ID #“); Serijinis atspaudas (piršto.piršto ID);

Serial.print („su pasitikėjimu“); Serial.println (pirštas.pasitikėjimas);

grąžinti pirštą.piršto ID;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

if (p! = FINGERPRINT_OK) return -1;

p = pirštas.paveikslėlis2Tz ();

if (p! = FINGERPRINT_OK) return -1;

p = pirštas.pirštasFastSearch ();

if (p! = FINGERPRINT_OK) return -1;

Serial.print („Rastas ID #“); Serijinis atspaudas (piršto.piršto ID);

Serial.print („su pasitikėjimu“); Serial.println (pirštas.pasitikėjimas);

if (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Pirštas priimtas");

lcd.setCursor (2, 0);

lcd.print ("dabar nuskaityti kortelę …");

lcd.setCursor (0, 3);

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

while (! mfrc522. PICC_IsNewCardPresent ());

while (! mfrc522. PICC_ReadCardSerial ());

if (mfrc522.uid.uidByte [0] == 0x92 && // ======================== REDAGUOTI KODĄ ======== ==============

mfrc522.uid.uidByte [1] == 0xAB && // Paimkite tą popieriaus lapą su ID, ant jo buvo 4 2 skaitmenų rinkiniai

mfrc522.uid.uidByte [2] == 0x90 && // Pažvelkite į kodą ir sužinokite, kur parašyta 0x92, 0xAB, 0x90, 0x1c? Įveskite kiekvieną

mfrc522.uid.uidByte [3] == 0x1C) {// 2 skaitmenų sekcijos po 0x. Pavyzdžiui, ID skyriuje rašoma

lcd.clear (); // 3E, tada įveskite 3E po 0x, kad gautumėte 0x3E. Padarykite tai kiekvienam skyriui

lcd.setCursor (3, 0);

lcd.print ("Pagaliau įveskite");

lcd.setCursor (1, 1);

lcd.print ("vairasvirtės slaptažodis");

o (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;

}

vėlavimas (500);

o (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;

}

vėlavimas (500);

o (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;

}

vėlavimas (500);

o (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;

}

vėlavimas (500);

jei (d1 == L && d2 == U && d3 == L && d4 == R) {// ================= REDAGUOTI KODĄ ====== ================

lcd.clear (); // Šiame skyriuje galite redaguoti slaptažodį naudodami kreiptuką

lcd.setCursor (2, 0); // slaptažodis nustatytas į kairę, į kairę, į dešinę. Jei nori pasikeisti

lcd.print ("Prieiga suteikta!"); // tai, įveskite L kairę, R dešinę, U aukštyn arba D žemyn bet kurioje iš

lcd.setCursor (2, 1); // 4 skyriai su raide po == ženklų.

lcd.print („Stalčius atrakintas“);

lcd.setCursor (2, 2);

lcd.print ("Baigę judėkite");

lcd.setCursor (1, 3);

lcd.print ("vairasvirtė, skirta atrakinti");

servo.write (90);

o (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print („Stalčius užrakintas“);

vėlavimas (3000);

resetFunc ();

}Kitas{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("PRIEIGA NUORODA !!!");

lcd.setCursor (0, 2);

lcd.print ("Sistemos paleidimas iš naujo …");

vėlavimas (3000);

resetFunc ();

}

}Kitas{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("PRIEIGA NUORODA !!!");

lcd.setCursor (0, 2);

lcd.print ("Sistemos paleidimas iš naujo …");

vėlavimas (3000);

resetFunc ();

}

}Kitas{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("PRIEIGA NUORODA !!!");

lcd.setCursor (0, 2);

lcd.print ("Sistemos paleidimas iš naujo …");

vėlavimas (3000);

resetFunc ();

}

grąžinti pirštą.piršto ID; }

6 žingsnis: Baigti

Vieną dalyką, kurį pamiršau jums pasakyti, yra du dalykai: aš tai padariau prieš fotografuodamas, todėl negalėjau parodyti, kaip sukūriau dėžutę. Kitas dalykas yra tai, kad rekomenduojama prisukti servo dalį ant besisukančios dalies. Jei to nepadarysite, kažkas gali ištraukti stalčių, kai jis užrakintas, ir nuimti gabalą. Tačiau prieš užsukdami, suraskite tinkamą vietą, kur ją uždėti, nes servo sistema sukasi tam tikru laipsniu. Arba galite tiesiog pakeisti kodą. Jei kai kurie elektronikos prietaisai elgiasi juokingai, galbūt norėsite rasti kitokį būdą, kaip kai kuriems iš jų gauti 5 V įtampą. Pastebėjau, kai mirksi pirštų atspaudų skaitytuvas, ekranas su juo šiek tiek sumirksės, o servo skleis triukšmą. Kai servo pajudėjo, ekranas pritemdė. Tikiuosi, kad jums patiko projektas! Jei turite klausimų, palikite juos komentaruose. Aš nedaug naudoju instrukcijas, bet kuo greičiau į jas atsakysiu!

Rekomenduojamas: