Съдържание:

Arduino High Tech Safe: 6 стъпки
Arduino High Tech Safe: 6 стъпки

Видео: Arduino High Tech Safe: 6 стъпки

Видео: Arduino High Tech Safe: 6 стъпки
Видео: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Юли
Anonim
Arduino High Tech Safe
Arduino High Tech Safe

Това е моят високотехнологичен сейф arduino. Трябва да сканирате пръста си, да сканирате картата си, след това да въведете 4 -цифрена парола, за да отключите чекмеджето. Този проект не се препоръчва за начинаещи, защото е много напреднал. Кодът е дълъг, но ще го споделя в този проект. Цената е около 75 долара, ако изградите същия сейф като мен. Този проект също може да отнеме 1-3 дни, за да бъде завършен. Така че, нека започнем!

Консумативи

За да изградите същия сейф като моя, ще ви трябва:

Arduino (Uno се препоръчва, защото нямам стъпки за arduino mega или nano. Но все пак можете да ги използвате)

макет

серво

джъмперни проводници

джойстик

20*4 (можете да използвате 16*4, но ще трябва да промените кода)

скенер за пръстови отпечатъци

mfrc522 RFID скенер за карти

кофа с легота

Стъпка 1: Изграждане на кутия

Изграждане на кутия
Изграждане на кутия

Първо ще ви трябва кутия, в която да поставите електрониката си. Можете да използвате лего, кутия с 3D печат или дори картон! (Въпреки че това може да е по -трудно) Не забравяйте да поставите дупки в него за чекмедже и вашата електроника. Ако използвате скенера за RFID карта, не е необходимо да поставяте дупка за това, ако стените ви са тънки. Картите все още работят, но трябва да поставите ключодържателите близо, така че сензорът на RFID картата да може да ги прочете. Също така оставете място за вашия arduino и проводници вътре. ЗАБЕЛЕЖКА: Когато изграждате чекмеджето, оставете дупка в него, за да може вашето серво да се завърти и заключи чекмеджето.

Стъпка 2: Окабеляване

Окабеляване!
Окабеляване!

Тази стъпка може да бъде сложна, защото трябва да включите проводниците на точното място, в противен случай електрониката няма да работи. Нямам електрическа схема, но ще ви кажа дали всеки ще премине. Окабеляването е само за arduino uno. Ще трябва да търсите, за да поставите проводниците, ако използвате arduino mega или nano. Ако не използвате цялата електроника, която имам, можете просто да пропуснете това окабеляване.

Скенер за пръстови отпечатъци: зелен проводник: D2 бял проводник: D3 черен проводник: GND червен проводник: 5V

Джойстик: 5V = 3.3V GND = GND X = A2 Y = A3 Превключвател = D4

rfid скенер за карти: 3.3V = 3.3V rst = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

LCD екран: 5V = 5V GND = GND sda = A4 sck = A5

Серво: червен проводник: 5V Кафяв проводник: GND жълт проводник: D6

ЗАБЕЛЕЖКА: НЕ ВКЛЮЧВАЙТЕ СКАНЕРЪТ НА RFID КАРТАТА В 5V. АКО НАПРАВИТЕ, ЩЕ СЛУЧИ !!!

Може би се чудите защо казах да включите захранването на джойстика към 3.3V, когато пише 5V отстрани. Това е така, защото серво, екранът и скенерът за пръстови отпечатъци се нуждаят от 5V. Ако добавите джойстика към това, електрониката може да не работи, защото всичко се нуждае от 5V. Джойстикът ще работи с 3.3V. Просто максималната стойност няма да е 1023, тя ще бъде ~ 670.

Стъпка 3: Изтегляне на библиотеки

В този проект ще ви трябват 6 библиотеки, за да използвате цялата електроника. 1 за серво, 1 за сензора за пръстови отпечатъци, 2 за скенер за RFID карта и 2 за екрана. Джойстикът не се нуждае от библиотека. Сега, какво е библиотека? По същество това е файл, който съдържа много код, който можете да използвате във вашия проект с прости команди. За да получите тези библиотеки, трябва да отидете на място, наречено GitHub. Ако знаете как да изтегляте и разархивирате библиотеки, просто отидете на връзките по -долу за изтегляне. Ако не знаете как, можете да отидете на моя инструкция, който говори за това как да изтеглите библиотека в стъпка 3:

или потърсете видеоклип в YouTube за това как да изтеглите библиотека arduino от GitHub

ВРЪЗКИ КЪМ ЛИРИИ:

Серво

сензор за пръстови отпечатъци:

spi

сензор за карта rfid

екранна библиотека 1

екранна библиотека 2

Стъпка 4: Настройка на сензора за пръстови отпечатъци и сензора за Rfid карта

Тази стъпка говори за това как да настроите сензор за пръстови отпечатъци и сензор за RFID карта. Освен ако вече не сте използвали сензора за пръстови отпечатъци, ще трябва да му покажете как изглежда вашият пръстов отпечатък, за да може да го запише в паметта си. Дори и да сте го използвали преди, вероятно все пак трябва да направите тази стъпка. Ще ви кажа как да го направите накратко, но ако няма смисъл, отидете на същата инструкционна връзка в последната стъпка. Преминава много добре. Основно просто отворете arduino ide. Отидете на файл> примери> сензор за пръстови отпечатъци adafruit> регистрирайте. Качете код в arduino, отворете сериен монитор и следвайте стъпките, които ви казва. Когато ви каже да му дадете номер. Въведете 1#.

Сега за rfid картата, тази стъпка е доста лесна. Отворете arduino ide. Отидете на файл> примери> mfrc522> прочетете лични данни. Качете в arduino и отворете сериен монитор. Сканирайте картата или ключодържателя, които искате да използвате, доставени с вашия сензор. Тогава той ще ви даде известна информация. Потърсете идентификационния номер на картата, това ще бъде 4 комплекта по 2 цифри. Нещо като това: AB 45 2Y 45, но вашият код ще бъде различен. Напишете това на лист хартия. По -късно пак ще ви трябва. Това е всичко за тази стъпка.

Стъпка 5: КОДЪТ

Това ще бъде най -трудната стъпка за повечето от вас, но е доста проста. Първо копирайте и поставете кода в arduino ide отдолу. Второ, редактирайте 2 раздела, където пише EDIT CODE. 1 раздел е за скенера за карти, 1 е за джойстика. Тези стъпки не могат да бъдат пропуснати. След като приключите, качете кода в arduino!

#include #include Fingerprint.h>

#включва

#включва

#включва

#включва

LiquidCrystal_I2C LCD (0x27, 2, 1, 0, 4, 5, 6, 7, 3, ПОЗИТИВЕН);

#дефинирайте RST_PIN 9

#дефинирайте SS_PIN 10

MFRC522 mfrc522 (SS_PIN, RST_PIN);

SoftwareSerial mySerial (2, 3);

Adafruit_Fingerprint finger = Adafruit_Fingerprint (& mySerial);

Серво серво;

char d1;

char d2;

char d3;

char d4;

void setup () {

servo.attach (6);

servo.write (170);

lcd.begin (20, 4);

Serial.begin (9600);

while (! Сериен);

SPI.begin ();

mfrc522. PCD_Init ();

забавяне (4);

mfrc522. PCD_DumpVersionToSerial ();

забавяне (100);

Serial.println ("\ n / nТест за откриване на пръст от плодове на Adafruit");

finger.begin (57600);

забавяне (5);

if (finger.verifyPassword ()) {

Serial.println ("Всички системи работят");

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Моля, сканирайте пръста си");

} else {

Serial.println ("ГРЕШКА: Сензорът за пръстови отпечатъци не е намерен!");

lcd.setCursor (0, 0);

lcd.print ("ГРЕШКА: Отпечатък");

lcd.setCursor (1, 1);

lcd.print ("сензорът не е намерен!");

while (1) {забавяне (1); }

}

finger.getTemplateCount ();

Serial.print ("Сензорът съдържа"); Serial.print (finger.templateCount); Serial.println ("шаблони"); Serial.println ("Изчакване на валиден пръст …"); }

void (* resetFunc) (void) = 0;

void loop () {

getFingerprintIDez ();

забавяне (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

switch (p) {

случай FINGERPRINT_OK:

Serial.println ("Изображението е направено");

прекъсване;

случай FINGERPRINT_NOFINGER:

Serial.println ("Не е открит пръст");

връщане p;

случай FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Комуникационна грешка");

връщане p;

случай FINGERPRINT_IMAGEFAIL:

Serial.println ("Грешка при изобразяването");

връщане p;

по подразбиране:

Serial.println ("Неизвестна грешка");

връщане p;

}

p = finger.image2Tz ();

switch (p) {

случай FINGERPRINT_OK:

Serial.println ("Изображение е преобразувано");

прекъсване;

случай FINGERPRINT_IMAGEMESS:

Serial.println ("Изображението е твърде объркано");

връщане p;

случай FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Комуникационна грешка");

връщане p;

случай FINGERPRINT_FEATUREFAIL:

Serial.println ("Не можах да намеря функции за пръстови отпечатъци");

връщане p;

случай FINGERPRINT_INVALIDIMAGE:

Serial.println ("Не можах да намеря функции за пръстови отпечатъци");

връщане p;

по подразбиране:

Serial.println ("Неизвестна грешка");

връщане p;

}

p = finger.fingerFastSearch ();

if (p == FINGERPRINT_OK) {

Serial.println ("Намерено съвпадение за печат!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Комуникационна грешка");

връщане p;

} иначе ако (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Не намерих съвпадение");

връщане p;

} else {

Serial.println ("Неизвестна грешка");

връщане p;

}

Serial.print ("Намерен ID #"); Serial.print (finger.fingerID);

Serial.print ("с увереност на"); Serial.println (увереност на пръста);

връщане на finger.fingerID;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

if (p! = FINGERPRINT_OK) връщане -1;

p = finger.image2Tz ();

if (p! = FINGERPRINT_OK) връщане -1;

p = finger.fingerFastSearch ();

if (p! = FINGERPRINT_OK) връщане -1;

Serial.print ("Намерен ID #"); Serial.print (finger.fingerID);

Serial.print ("с увереност на"); Serial.println (увереност на пръста);

if (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Приет пръст");

lcd.setCursor (2, 0);

lcd.print ("сега сканиране на карта …");

lcd.setCursor (0, 3);

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

while (! mfrc522. PICC_IsNewCardPresent ());

while (! mfrc522. PICC_ReadCardSerial ());

if (mfrc522.uid.uidByte [0] == 0x92 && // ======================== РЕДАКТИРАНЕ НА КОД ======== ==============

mfrc522.uid.uidByte [1] == 0xAB && // Вземете този лист хартия с идентификационния номер, имаше 4 комплекта от 2 цифри

mfrc522.uid.uidByte [2] == 0x90 && // Погледнете кода, вижте къде пише 0x92, 0xAB, 0x90, 0x1c? Въведете всеки

mfrc522.uid.uidByte [3] == 0x1C) {// на двуцифрения раздел след 0x. Например, в раздела на ID се казва

lcd.clear (); // 3E, след това въведете 3E след 0x, за да направите 0x3E. Направете това за всеки раздел

lcd.setCursor (3, 0);

lcd.print ("Накрая въведете");

lcd.setCursor (1, 1);

lcd.print ("парола на джойстика");

докато (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;

}

забавяне (500);

докато (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;

}

забавяне (500);

докато (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;

}

забавяне (500);

докато (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;

}

забавяне (500);

ако (d1 == L && d2 == U && d3 == L && d4 == R) {// ================= EDIT CODE ====== ================

lcd.clear (); // Този раздел е, където можете да редактирате паролата с джойстика

lcd.setCursor (2, 0); // паролата е зададена наляво, нагоре наляво, надясно. Ако искате да промените

lcd.print ("Достъпът е предоставен!"); // го, поставете L за ляво, R за дясно, U за нагоре или D за надолу във всеки от

lcd.setCursor (2, 1); // 4 раздела с буква след знаците ==.

lcd.print ("Чекмеджето е отключено.");

lcd.setCursor (2, 2);

lcd.print ("Когато приключите, преместете");

lcd.setCursor (1, 3);

lcd.print ("джойстик за презареждане");

servo.write (90);

докато (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print ("Чекмеджето е заключено");

забавяне (3000);

resetFunc ();

} else {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ОТХВЪРЛЕН ДОСТЪП !!!");

lcd.setCursor (0, 2);

lcd.print ("Рестартиране на системата …");

забавяне (3000);

resetFunc ();

}

} else {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ДОСТЪП ОТКАЗ !!!");

lcd.setCursor (0, 2);

lcd.print ("Рестартиране на системата …");

забавяне (3000);

resetFunc ();

}

} else {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ДОСТЪП ОТКАЗАН !!!");

lcd.setCursor (0, 2);

lcd.print ("Рестартиране на системата …");

забавяне (3000);

resetFunc ();

}

връщане на finger.fingerID; }

Стъпка 6: Завършете

Едно нещо, което забравих да ви кажа, ами 2 неща е, че го направих преди да направя снимки, така че не можах да ви покажа как съм построил кутията. Другото е, че се препоръчва да завиете серво част към частта, която се завърта. Ако не го направите, някой може да издърпа чекмеджето, докато е заключено, и да издърпа парчето. Но преди да го завиете, намерете правилното място, където да го поставите, защото сервото се завърта до определена степен. Или просто можете да го промените в кода. Ако някои от електрониката действат смешно, може да искате да намерите различен начин да получите 5V за някои от тях. Забелязах, когато скенерът ми за пръстови отпечатъци мига, екранът леко ще мига с него и сервото ще издава шум. Когато сервото се премести, екранът щеше да потъмнее. Надявам се проектът да ви хареса! Ако имате въпроси, оставете ги в коментарите. Не съм на инструктажи много, но ще им отговоря веднага щом мога!

Препоръчано: