Mundarija:

Arduino yuqori texnologiyali xavfsiz: 6 qadam
Arduino yuqori texnologiyali xavfsiz: 6 qadam

Video: Arduino yuqori texnologiyali xavfsiz: 6 qadam

Video: Arduino yuqori texnologiyali xavfsiz: 6 qadam
Video: Настройка 3D-принтера с помощью MKS sGen L v1.0 Часть 3 2024, Iyul
Anonim
Arduino yuqori texnologiyali xavfsiz
Arduino yuqori texnologiyali xavfsiz

Bu mening arduino yuqori texnologiyali seyfim. Barmog'ingizni skanerlashingiz, kartangizni skanerlashingiz va tortmasining qulfini ochish uchun 4 raqamli parolni kiritishingiz kerak. Bu loyiha yangi boshlanuvchilar uchun tavsiya etilmaydi, chunki u juda rivojlangan. Kod uzoq, lekin men uni ushbu loyihada baham ko'raman. Agar siz men bilan bir xil seyf yasasangiz, uning narxi 75 dollar atrofida bo'ladi. Ushbu loyihani amalga oshirish uchun 1-3 kun kerak bo'ladi. Shunday qilib, boshlaylik!

Ta'minotlar

Men bilan bir xil seyfni yaratish uchun sizga kerak bo'ladi:

Arduino (Uno tavsiya qilinadi, chunki menda arduino mega yoki nano uchun qadamlar yo'q. Lekin siz hali ham ulardan foydalanishingiz mumkin)

non taxtasi

servo

o'tish simlari

joystik

20*4 (siz 16*4 dan foydalanishingiz mumkin, lekin siz kodni o'zgartirishingiz kerak bo'ladi)

barmoq izlari skaneri

mfrc522 rfid karta skaneri

bir chelak legos

1 -qadam: qutini qurish

Qutini qurish
Qutini qurish

Avval elektronikani qo'yish uchun sizga quti kerak bo'ladi. Siz legos, 3d bosilgan quti yoki hatto kartondan foydalanishingiz mumkin! (Bu qiyinroq bo'lishi mumkin bo'lsa ham) tortmasiga va elektronikangizga teshiklar qo'yishni unutmang. Agar siz rfid karta skaneridan foydalanayotgan bo'lsangiz, devorlaringiz ingichka bo'lsa, buning uchun teshik ochishingiz shart emas. Kartalar hali ham ishlaydi, lekin siz kalit zanjirlarni yopishingiz kerak, shunda rfid kartasi senatori ularni o'qiy oladi. Shuningdek, arduino va simlar uchun joy qoldiring. QAYD: Siz tortmachani qurayotganingizda, uning ichidagi teshik qoldiring, shunda servo tortmasining aylanishi va qulflanishi mumkin.

2 -qadam: Elektr ta'minoti

Ulanish!
Ulanish!

Bu qadam murakkab bo'lishi mumkin, chunki siz simlarni aniq joyiga ulashingiz kerak, aks holda elektronika ishlamaydi. Menda simlar sxemasi yo'q, lekin men sizga aytaman, ularning har biri ketadi. Ulanish faqat arduino uno uchun mo'ljallangan. Agar siz arduino mega yoki nanodan foydalanayotgan bo'lsangiz, simlarni ulashingiz kerak bo'ladi. Agar siz menda mavjud bo'lgan barcha elektron qurilmalardan foydalanmasangiz, bu simni o'tkazib yuborishingiz mumkin.

Barmoq izi skaneri: yashil sim: D2 oq sim: D3 qora sim: GND qizil sim: 5V

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

rfid karta skaneri: 3.3V = 3.3V rst = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

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

Servo: qizil sim: 5V jigarrang sim: GND sariq sim: D6

Izoh: RFID karta skanerini 5V ga ulamang. Agar qilsang, buziladi !!!

Siz nima uchun yon tomonida 5V yozilganda, joystikning quvvatini 3.3V ga ulashni aytdim, deb hayron bo'lishingiz mumkin. Sababi, servo, ekran va barmoq izlari skaneriga 5V kerak. Agar siz joystikni qo'shsangiz, elektronika ishlamasligi mumkin, chunki hamma narsa 5V ga muhtoj. Joystik hali ham 3.3V bilan ishlaydi. Faqat maksimal qiymat 1023 bo'lmaydi, ~ 670 bo'ladi.

3 -qadam: Kutubxonalarni yuklab olish

Ushbu loyihada sizga barcha elektronikadan foydalanish uchun 6 kutubxona kerak bo'ladi. Servo uchun 1, barmoq izi sensori uchun 1, rfid karta skaneri uchun 2 va ekran uchun 2. Joystik kutubxonaga muhtoj emas. Endi kutubxona nima? Bu, asosan, sizning loyihangizda oddiy buyruqlar bilan foydalanishingiz mumkin bo'lgan ko'plab kodlarga ega fayl. Ushbu kutubxonalarni olish uchun siz GitHub deb nomlangan joyga borishingiz kerak. Agar siz kutubxonalarni qanday yuklab olishni va ochishni bilsangiz, yuklab olish uchun quyidagi havolalarga o'ting. Agar siz qanday qilishni bilmasangiz, 3-bosqichda kutubxonani qanday yuklab olish mumkinligi haqida gapiradigan ko'rsatmaga o'tishingiz mumkin:

yoki GitHub -dan arduino kutubxonasini qanday yuklab olish haqida youtube -da video qidiring

LIRARIYALARGA LIKALAR:

Servo

barmoq izlari sensori:

github.com/PaulStoffregen/SPI

rfid karta sensori

ekran kutubxonasi 1

ekran kutubxonasi 2

4 -qadam: Barmoq izi sensori va Rfid karta sensorini sozlash

Bu qadam barmoq izi sensori va rfid karta sensorini qanday sozlash haqida. Agar siz barmoq izlari sensorini ishlatmagan bo'lsangiz, uni barmoq izining ko'rinishini ko'rsatish kerak, shunda u xotirada saqlanishi mumkin. Agar siz ilgari ishlatgan bo'lsangiz ham, ehtimol bu qadamni bajarishingiz kerak. Men sizga buni qanday qilishni qisqacha aytib beraman, lekin agar mantiqiy bo'lmasa, oxirgi bosqichda xuddi shu ko'rsatma berilgan havolaga o'ting. Bu juda yaxshi o'tadi. Arduino ide uchun oddiy ochiq. Fayl> misollar> adafruit barmoq izi sensori> ro'yxatdan o'ting. Kodni arduino -ga yuklang, ketma -ket monitorni oching va sizga aytilgan amallarni bajaring. Qachon sizga raqam berish kerakligini aytadi. 1#kiriting.

Endi rfid kartasi uchun bu qadam juda oson. Arduino ide -ni oching. Fayl> misollar> mfrc522> shaxsiy ma'lumotlarni o'qish -ga o'ting. Arduino -ga yuklang va ketma -ket monitorni oching. Sensoringiz bilan birga kelgan kartani yoki kalit zanjirni skanerlang. Keyin u sizga ba'zi ma'lumotlarni beradi. Kartaning identifikatorini qidiring, u 4 ta 2 ta raqamdan iborat bo'ladi. Shunga o'xshash narsa: AB 45 2Y 45, lekin sizning kodingiz boshqacha bo'ladi. Buni qog'ozga yozing. Keyinroq sizga yana kerak bo'ladi. Mana shu qadam uchun.

5 -qadam: KOD

Bu ko'pchiligingiz uchun eng qiyin qadam bo'ladi, lekin bu juda oddiy. Avval kodni pastdan arduino ide -ga nusxa ko'chiring va joylashtiring. Ikkinchidan, EDIT CODE yozilgan 2 bo'limni tahrir qiling. 1 bo'lim karta skaneri uchun, 1 qismi joystik uchun. Bu qadamlarni o'tkazib yuborib bo'lmaydi. Tayyor bo'lgach, kodni arduino -ga yuklang!

#include #include Barmoq izi.h>

#qo'shing

#qo'shing

#qo'shing

#qo'shing

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

#RST_PIN 9 ni aniqlang

#SS_PIN 10 ni aniqlang

MFRC522 mfrc522 (SS_PIN, RST_PIN);

SoftwareSerial mySerial (2, 3);

Adafruit_Fingerprint barmoq = Adafruit_Fingerprint (& mySerial);

Servo servo;

char d1;

char d2;

char d3;

char d4;

bo'sh o'rnatish () {

servo.attach (6);

servo.write (170);

lcd.begin (20, 4);

Serial.begin (9600);

while (! Seriyali);

SPI.begin ();

mfrc522. PCD_Init ();

kechikish (4);

mfrc522. PCD_DumpVersionToSerial ();

kechikish (100);

Serial.println ("\ n / nAdafruit barmoqlarini aniqlash testi");

barmoq.begin (57600);

kechikish (5);

if (finger.verifyPassword ()) {

Serial.println ("Barcha tizimlar ishlaydi");

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Iltimos, barmog'ingizni skanerlang");

} boshqa {

Serial.println ("Xato: Barmoq izi sensori topilmadi!");

lcd.setCursor (0, 0);

lcd.print ("Xato: barmoq izi");

lcd.setCursor (1, 1);

lcd.print ("sensor topilmadi!");

while (1) {kechiktirish (1); }

}

barmoq.getTemplateCount ();

Serial.print ("Sensor o'z ichiga oladi"); Serial.print (barmoq.templateCount); Serial.println ("andozalar"); Serial.println ("Haqiqiy barmoq kutilmoqda …"); }

void (* resetFunc) (void) = 0;

void loop () {

getFingerprintIDez ();

kechikish (50);

}

uint8_t getFingerprintID () {

uint8_t p = barmoq.getImage ();

o'tish (p) {

FINGERPRINT_OK holati:

Serial.println ("Rasm olingan");

tanaffus;

FINGERPRINT_NOFINGER holati:

Serial.println ("Barmoq aniqlanmagan");

qaytish p;

FINGERPRINT_PACKETRECIEVEERR holati:

Serial.println ("Aloqa xatosi");

qaytish p;

FINGERPRINT_IMAGEFAIL holati:

Serial.println ("Tasvirlash xatosi");

qaytish p;

standart:

Serial.println ("Noma'lum xato");

qaytish p;

}

p = barmoq.image2Tz ();

o'tish (p) {

FINGERPRINT_OK holati:

Serial.println ("Rasm o'zgartirildi");

tanaffus;

FINGERPRINT_IMAGEMESS holati:

Serial.println ("Tasvir juda tartibsiz");

qaytish p;

FINGERPRINT_PACKETRECIEVEERR holati:

Serial.println ("Aloqa xatosi");

qaytish p;

FINGERPRINT_FEATUREFAIL holati:

Serial.println ("Barmoq izlari xususiyatlari topilmadi");

qaytish p;

FINGERPRINT_INVALIDIMAGE holati:

Serial.println ("Barmoq izlari xususiyatlari topilmadi");

qaytish p;

standart:

Serial.println ("Noma'lum xato");

qaytish p;

}

p = barmoq.fingerFastSearch ();

agar (p == FINGERPRINT_OK) {

Serial.println ("Chop etish mosligi topildi!");

} if if (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Aloqa xatosi");

qaytish p;

} boshqa bo'lsa (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Mos keluvchi topilmadi");

qaytish p;

} boshqa {

Serial.println ("Noma'lum xato");

qaytish p;

}

Serial.print ("ID raqami topildi"); Seriyali iz (barmoq.barmoq identifikatori);

Serial.print ("ishonch bilan"); Serial.println (barmoq. Ishonch);

qaytish barmog'i.fingerID;

}

int getFingerprintIDez () {

uint8_t p = barmoq.getImage ();

agar (p! = FINGERPRINT_OK) -1 qaytarsa;

p = barmoq.image2Tz ();

agar (p! = FINGERPRINT_OK) -1 qaytarsa;

p = barmoq.fingerFastSearch ();

agar (p! = FINGERPRINT_OK) -1 qaytarsa;

Serial.print ("ID raqami topildi"); Seriya izi (barmoq.barmoq identifikatori);

Serial.print ("ishonch bilan"); Serial.println (barmoq. Ishonch);

agar (barmoq.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Barmoq qabul qilindi");

lcd.setCursor (2, 0);

lcd.print ("endi kartani skanerlash …");

lcd.setCursor (0, 3);

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

while (! mfrc522. PICC_IsNewCardPresent ());

while (! mfrc522. PICC_ReadCardSerial ());

agar (mfrc522.uid.uidByte [0] == 0x92 && // ====================== KODni tahrir qilish ======== ===============

mfrc522.uid.uidByte [1] == 0xAB && // Qog'ozni identifikatori bilan oling, 2 ta raqamli 4 ta to'plam bor edi.

mfrc522.uid.uidByte [2] == 0x90 && // Kodga qarang, 0x92, 0xAB, 0x90, 0x1c qaerda yozilganini ko'ring? Har birini kiriting

mfrc522.uid.uidByte [3] == 0x1C) {// 0xdan keyin 2 xonali bo'lim. Masalan, ID bo'limida shunday deyilgan

lcd.clear (); // 3E, keyin 0x3E qilish uchun 0xdan keyin 3E ni kiriting. Buni har bir bo'lim uchun bajaring

lcd.setCursor (3, 0);

lcd.print ("Oxirida kiriting");

lcd.setCursor (1, 1);

lcd.print ("joystik paroli");

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.setCursor (8, 4);

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

d1 = L;

}

agar (analogRead (A2)> = 670) {

d1 = R;

}

agar (analogRead (A3) <= 100) {

d1 = U;

}

agar (analogRead (A3)> = 670) {

d1 = D;

}

kechikish (500);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

agar (analogRead (A2) <= 100) {

d2 = L;

}

agar (analogRead (A2)> = 670) {

d2 = R;

}

agar (analogRead (A3) <= 100) {

d2 = U;

}

agar (analogRead (A3)> = 670) {

d2 = D;

}

kechikish (500);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

agar (analogRead (A2) <= 100) {

d3 = L;

}

agar (analogRead (A2)> = 670) {

d3 = R;

}

agar (analogRead (A3) <= 100) {

d3 = U;

}

agar (analogRead (A3)> = 670) {

d3 = D;

}

kechikish (500);

while (analogRead (A2)> = 10 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

agar (analogRead (A2) <= 100) {

d4 = L;

}

agar (analogRead (A2)> = 670) {

d4 = R;

}

agar (analogRead (A3) <= 100) {

d4 = U;

}

agar (analogRead (A3)> = 670) {

d4 = D;

}

kechikish (500);

agar (d1 == L && d2 == U && d3 == L && d4 == R) {// ================ KODni tahrir qilish ====== =================

lcd.clear (); // Ushbu bo'limda siz parolni joystik yordamida o'zgartirishingiz mumkin

lcd.setCursor (2, 0); // parol chapga, chapga, o'ngga o'rnatiladi. Agar siz o'zgartirmoqchi bo'lsangiz

lcd.print ("Kirish ruxsat berilgan!"); // u uchun chapga L, o'ngga R, yuqoriga U yoki pastga D belgisini qo'ying

lcd.setCursor (2, 1); // == belgilaridan keyin harfli 4 ta bo'lim.

lcd.print ("tortmasining qulfi ochilgan.");

lcd.setCursor (2, 2);

lcd.print ("Bajarilganda, harakatlaning");

lcd.setCursor (1, 3);

lcd.print ("joyini o'zgartirish uchun joystik");

servo.write (90);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print ("tortma qulflangan");

kechikish (3000);

resetFunc ();

} boshqa {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("KIRISH QABUL BILDI !!!");

lcd.setCursor (0, 2);

lcd.print ("Tizim qayta ishga tushirilmoqda …");

kechikish (3000);

resetFunc ();

}

} boshqa {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("KIRISH QABUL BILDI !!!");

lcd.setCursor (0, 2);

lcd.print ("Tizim qayta ishga tushirilmoqda …");

kechikish (3000);

resetFunc ();

}

} boshqa {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("KIRISH QABUL BILDI !!!");

lcd.setCursor (0, 2);

lcd.print ("Tizim qayta ishga tushirilmoqda …");

kechikish (3000);

resetFunc ();

}

qaytish barmog'i.fingerID; }

6 -qadam: tugatish

Sizga aytishni unutgan bir narsa, 2 narsa, men buni rasmga olishdan oldin qurganman, shuning uchun men sizga qutini qanday qurganimni ko'rsatolmadim. Boshqa tomoni, servo qismni aylanadigan qismga burab qo'yish tavsiya etiladi. Agar shunday qilmasangiz, kimdir tortmasining qulfi yopilganda tortib, tortib olishi mumkin. Ammo uni burishdan oldin, uni qaerga qo'yish kerakligini aniqlang, chunki servo ma'lum darajada buriladi. Yoki uni kodda o'zgartirishingiz mumkin. Agar ba'zi elektronikalar kulgili harakat qilsa, siz ulardan ba'zilariga 5V olishning boshqa usulini topishingiz mumkin. Men barmoq izlari skaneri yonib ketganda, ekran biroz miltillaydi va servo shovqin chiqaradi. Servo harakatlansa, ekran xira bo'lardi. Umid qilamanki, sizga loyiha yoqdi! Agar sizda biron bir savol bo'lsa, ularni sharhlarda qoldiring. Men ko'rsatma berishga unchalik moyil emasman, lekin imkoni boricha ularga javob beraman!

Tavsiya: