Spisu treści:

Arduino High Tech Safe: 6 kroków
Arduino High Tech Safe: 6 kroków

Wideo: Arduino High Tech Safe: 6 kroków

Wideo: Arduino High Tech Safe: 6 kroków
Wideo: Amazing arduino project 2024, Lipiec
Anonim
Zaawansowany technologicznie sejf Arduino
Zaawansowany technologicznie sejf Arduino

To jest mój zaawansowany technologicznie sejf arduino. Musisz zeskanować palec, zeskanować kartę, a następnie wprowadzić 4-cyfrowe hasło, aby odblokować szufladę. Ten projekt nie jest zalecany dla początkujących, ponieważ jest bardzo zaawansowany. Kod jest długi, ale podzielę się nim w tym projekcie. Koszt to około 75 dolarów, jeśli zbudujesz taki sam sejf jak ja. Ten projekt może również zająć 1-3 dni. Więc zacznijmy!

Kieszonkowe dzieci

Aby zbudować taki sam sejf jak mój, będziesz potrzebować:

Arduino (polecam Uno bo nie mam kroków do arduino mega lub nano. Ale nadal można z nich korzystać)

płytka do krojenia chleba

serwo

przewody połączeniowe

drążek sterowy

20*4 (możesz użyć 16*4, ale będziesz musiał zmienić kod)

Skaner odcisków palców

skaner kart rfid mfrc522

wiadro legos

Krok 1: Budowanie pudełka

Budowanie pudełka
Budowanie pudełka

Najpierw będziesz potrzebować pudełka, do którego włożysz elektronikę. Możesz użyć klocków lego, pudełka z nadrukiem 3D, a nawet kartonu! (Chociaż to może być trudniejsze) Nie zapomnij zrobić w nim dziury na szufladę i swoją elektronikę. Jeśli używasz skanera kart rfid, nie musisz robić dziury, jeśli twoje ściany są cienkie. Karty nadal działają, ale musisz zamknąć breloki, aby czujnik karty rfid mógł je odczytać. Zostaw także miejsce na arduino i przewody w środku. UWAGA: Kiedy budujesz szufladę, zostaw w niej otwór, aby serwo mogło się obracać i blokować szufladę.

Krok 2: Okablowanie

Okablowanie!
Okablowanie!

Ten krok może być skomplikowany, ponieważ musisz podłączyć przewody dokładnie w odpowiednim miejscu, w przeciwnym razie elektronika nie będzie działać. Schematu elektrycznego nie mam, ale podpowiem czy każdy idzie. Okablowanie jest tylko dla arduino uno. Będziesz musiał poszukać, gdzie umieścić przewody, jeśli używasz arduino mega lub nano. Jeśli nie używasz całej elektroniki, którą mam, możesz po prostu pominąć to okablowanie.

Skaner linii papilarnych: zielony przewód: D2 biały przewód: D3 czarny przewód: GND czerwony przewód: 5 V

Joystick: 5V = 3,3V GND = GND X = A2 Y = A3 Przełącznik = D4

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

ekran lcd: 5V = 5V GND = GND sda = A4 sck = A5

Serwo: czerwony przewód: 5 V Brązowy przewód: GND żółty przewód: D6

UWAGA: NIE PODŁĄCZAJ SKANERA KART RFID DO 5V. JEŚLI ZROBISZ, ZŁAMUJE SIĘ !!!

Możesz się zastanawiać, dlaczego powiedziałem, aby podłączyć zasilanie joysticka do 3,3 V, gdy z boku jest napisane 5 V. To dlatego, że serwo, ekran i skaner linii papilarnych potrzebują 5V. Jeśli dodasz do tego joystick, elektronika może nie działać, bo wszystko potrzebuje 5V. Joystick nadal będzie działał z napięciem 3,3V. Po prostu maksymalna wartość nie będzie 1023, będzie ~670.

Krok 3: Pobieranie bibliotek

W tym projekcie będziesz potrzebować 6 bibliotek, aby korzystać z całej elektroniki. 1 dla serwomechanizmu, 1 dla czujnika odcisków palców, 2 dla skanera kart rfid i 2 dla ekranu. Joystick nie potrzebuje biblioteki. Czym jest biblioteka? Jest to w zasadzie plik, który zawiera dużo kodu, którego możesz użyć w swoim projekcie za pomocą prostych poleceń. Aby uzyskać te biblioteki, musisz udać się do miejsca o nazwie GitHub. Jeśli wiesz, jak pobierać i rozpakowywać biblioteki, skorzystaj z poniższych łączy do pobrania. Jeśli nie wiesz jak, możesz przejść do mojej instrukcji, która mówi o tym, jak pobrać bibliotekę w kroku 3:

lub przeszukaj film na youtube, jak pobrać bibliotekę arduino z GitHub

LINKI DO BIBLIOTEK:

Serwo

czujnik odcisków palców:

spi

Czujnik karty rfid

biblioteka ekranów 1

biblioteka ekranów 2

Krok 4: Konfigurowanie czujnika odcisków palców i czujnika karty Rfid

Ten krok mówi o tym, jak skonfigurować czujnik odcisków palców i czujnik karty rfid. Jeśli nie korzystałeś już z czujnika odcisków palców, musisz pokazać mu, jak wygląda Twój odcisk palca, aby mógł zapisać go w swojej pamięci. Nawet jeśli używałeś go wcześniej, prawdopodobnie nadal powinieneś wykonać ten krok. Pokrótce powiem ci, jak to zrobić, ale jeśli nie ma to sensu, przejdź do tego samego instruktażowego linku w ostatnim kroku. Przechodzi to bardzo dobrze. Podstawowy po prostu otwarty ide arduino. Przejdź do pliku > przykłady > czujnik odcisków palców adafruit > zarejestruj się. Prześlij kod do arduino, otwórz monitor szeregowy i postępuj zgodnie z instrukcjami. Kiedy każe ci nadać mu numer. Wpisz 1#.

Teraz w przypadku karty rfid ten krok jest dość łatwy. Otwórz ideę arduino. Przejdź do pliku > przykłady > mfrc522 > odczytaj dane osobowe. Prześlij na arduino i otwórz monitor szeregowy. Zeskanuj kartę lub brelok, którego chcesz użyć, dostarczone z czujnikiem. Wtedy otrzymasz pewne informacje. Poszukaj identyfikatora karty, będą to 4 zestawy 2 cyfr. Coś takiego: AB 45 2Y 45 ale twój kod będzie inny. Zapisz to na kartce papieru. Będziesz go potrzebować ponownie później. To wszystko na ten krok.

Krok 5: KOD

To będzie najtrudniejszy krok dla większości z was, ale jest to całkiem proste. Najpierw skopiuj i wklej kod do arduino od dołu. Po drugie, edytuj 2 sekcje, w których jest napisane EDYTUJ KOD. 1 sekcja przeznaczona jest na skaner kart, 1 na joystick. Tych kroków nie można pominąć. Po zakończeniu prześlij kod do arduino!

#include #include Fingerprint.h>

#włączać

#włączać

#włączać

#włączać

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

#zdefiniuj RST_PIN 9

#zdefiniuj SS_PIN 10

MFRC522 mfrc522 (SS_PIN, RST_PIN);

SoftwareSerial mySerial(2, 3);

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

serwomechanizm;

znak d1;

znak d2;

znak d3;

znak d4;

pusta konfiguracja (){

serwo.attach(6);

serwo.zapis(170);

lcd.początek(20, 4);

Serial.początek(9600);

podczas (!Serial);

SPI.początek();

mfrc522. PCD_Init();

opóźnienie(4);

mfrc522. PCD_DumpVersionToSerial();

opóźnienie (100);

Serial.println("\n\nTest wykrywania palca Adafruit");

palec.rozpocznij(57600);

opóźnienie(5);

if (finger.verifyPassword()) {

Serial.println("Wszystkie działające systemy, ");

lcd.clear();

lcd.setCursor(1, 0);

lcd.print("Proszę zeskanować palec");

} w przeciwnym razie {

Serial.println("BŁĄD: Nie znaleziono czujnika odcisków palców!");

lcd.setCursor(0, 0);

lcd.print("BŁĄD: odcisk palca");

lcd.setCursor(1, 1);

lcd.print("czujnik nie znaleziony!");

podczas gdy (1) { opóźnienie (1); }

}

finger.getTemplateCount();

Serial.print("Czujnik zawiera "); Serial.print(finger.templateCount); Serial.println("szablony"); Serial.println("Oczekiwanie na prawidłowy odcisk…"); }

void(* resetFunc) (unieważnienie) = 0;

pusta pętla () {

pobierzIDezOdcisków Palców();

opóźnienie(50);

}

uint8_t pobierz identyfikator odcisku palca() {

uint8_t p = palec.getImage();

przełącznik (p) {

sprawa FINGERPRINT_OK:

Serial.println("Zrobione zdjęcie");

przerwa;

sprawa FINGERPRINT_NOFINGER:

Serial.println("Nie wykryto palca");

powrót p;

sprawa FINGERPRINT_PACKETRECIEVEERR:

Serial.println("Błąd komunikacji");

powrót p;

sprawa FINGERPRINT_IMAGEFAIL:

Serial.println("Błąd obrazowania");

powrót p;

domyślny:

Serial.println("Nieznany błąd");

powrót p;

}

p = palec.obraz2Tz();

przełącznik (p) {

sprawa FINGERPRINT_OK:

Serial.println("Obraz przekonwertowany");

przerwa;

sprawa FINGERPRINT_IMAGEMESS:

Serial.println("Obraz zbyt niechlujny");

powrót p;

sprawa FINGERPRINT_PACKETRECIEVEERR:

Serial.println("Błąd komunikacji");

powrót p;

sprawa FINGERPRINT_FEATUREFAIL:

Serial.println("Nie można znaleźć funkcji odcisku palca");

powrót p;

sprawa FINGERPRINT_INVALIDIMAGE:

Serial.println("Nie można znaleźć funkcji odcisku palca");

powrót p;

domyślny:

Serial.println("Nieznany błąd");

powrót p;

}

p = palec.fingerFastSearch();

if (p == FINGERPRINT_OK) {

Serial.println("Znaleziono dopasowanie wydruku!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("Błąd komunikacji");

powrót p;

} else if (p == FINGERPRINT_NOTFOUND) {

Serial.println("Nie znaleziono dopasowania");

powrót p;

} w przeciwnym razie {

Serial.println("Nieznany błąd");

powrót p;

}

Serial.print("Znaleziony identyfikator #"); Serial.print(ID.palca);

Serial.print(" z pewnością "); Serial.println(palec.zaufanie);

zwróć palec.fingerID;

}

int pobierzIdentyfikatorOdcisku Palców() {

uint8_t p = palec.getImage();

if (p != FINGERPRINT_OK) return -1;

p = palec.obraz2Tz();

if (p != FINGERPRINT_OK) return -1;

p = palec.fingerFastSearch();

if (p != FINGERPRINT_OK) return -1;

Serial.print("Znaleziony identyfikator #"); Serial.print(ID.palca);

Serial.print(" z pewnością "); Serial.println(palec.zaufanie);

if(finger.fingerID == 1){

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("Palec zaakceptowany, ");

lcd.setCursor(2, 0);

lcd.print("teraz zeskanuj kartę…");

lcd.setCursor(0, 3);

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

while(! mfrc522. PICC_IsNewCardPresent());

while(! mfrc522. PICC_ReadCardSerial());

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

mfrc522.uid.uidByte[1] == 0xAB && //Weź tę kartkę z identyfikatorem, były 4 zestawy po 2 cyfry

mfrc522.uid.uidByte[2] == 0x90 && //Spójrz na kod, zobacz, gdzie jest napisane 0x92, 0xAB, 0x90, 0x1c? Wpisz każdy

mfrc522.uid.uidByte[3] == 0x1C) { // 2-cyfrowej sekcji po 0x. Na przykład sekcja identyfikatora mówi

lcd.clear(); //3E, a następnie wprowadź 3E po 0x, aby uzyskać 0x3E. Zrób to dla każdej sekcji

lcd.setCursor(3, 0);

lcd.print("Na koniec wprowadź");

lcd.setCursor(1, 1);

lcd.print("hasło joysticka");

while(analogowyOdczyt(A2) >= 100 &&

odczyt analogowy (A2) <= 670 &&

odczyt analogowy (A3) >= 100 &&

odczyt analogowy(A3) <= 670{

}

lcd.setCursor(8, 4);

lcd.print("*"); if(analogowyOdczyt(A2) <= 100){

d1 = L;

}

jeśli(analogowyOdczyt(A2) >= 670){

d1 = R;

}

jeśli (analogowyOdczyt(A3) <= 100){

d1 = U;

}

jeśli (analogowyOdczyt (A3) >= 670){

d1 = D;

}

opóźnienie (500);

while(analogowyOdczyt(A2) >= 100 &&

odczyt analogowy (A2) <= 670 &&

odczyt analogowy (A3) >= 100 &&

odczyt analogowy(A3) <= 670{

}

lcd.print("*");

if(analogowyOdczyt(A2) <= 100){

d2 = L;

}

jeśli(analogowyOdczyt(A2) >= 670){

d2 = R;

}

jeśli (analogowyOdczyt(A3) <= 100){

d2 = U;

}

jeśli (analogowyOdczyt (A3) >= 670){

d2 = D;

}

opóźnienie (500);

while(analogowyOdczyt(A2) >= 100 &&

odczyt analogowy (A2) <= 670 &&

odczyt analogowy (A3) >= 100 &&

odczyt analogowy(A3) <= 670{

}

lcd.print("*");

if(analogowyOdczyt(A2) <= 100){

d3 = L;

}

jeśli(analogowyOdczyt(A2) >= 670){

d3 = R;

}

jeśli (analogowyOdczyt (A3) <= 100){

d3 = U;

}

jeśli (analogowyOdczyt (A3) >= 670){

d3 = D;

}

opóźnienie (500);

while(analogowyOdczyt(A2) >= 10 &&

odczyt analogowy (A2) <= 670 &&

odczyt analogowy (A3) >= 100 &&

odczyt analogowy(A3) <= 670{

}

lcd.print("*");

if(analogowyOdczyt(A2) <= 100){

d4 = L;

}

jeśli(analogowyOdczyt(A2) >= 670){

d4 = R;

}

jeśli (analogowyOdczyt(A3) <= 100){

d4 = U;

}

jeśli (analogowyOdczyt (A3) >= 670){

d4 = D;

}

opóźnienie (500);

if(d1 == L && d2 == U && d3 == L && d4 == R){ //==========EDYTUJ KOD====== ================

lcd.clear(); //W tej sekcji możesz edytować hasło za pomocą joysticka

lcd.setCursor(2, 0); //hasło jest ustawione w lewo, w górę w lewo, w prawo. Jeśli chcesz się zmienić

lcd.print("Dostęp przyznany!"); //to, umieść L dla lewej, R dla prawej, U dla góry lub D dla dołu w dowolnym z

lcd.setCursor(2, 1); //4 sekcje z literą po znakach ==.

lcd.print("Szuflada odblokowana.");

lcd.setCursor(2, 2);

lcd.print("Gdy skończysz, przenieś");

lcd.setCursor(1, 3);

lcd.print("joystick do ponownego zablokowania");

serwo.zapis(90);

while(analogowyOdczyt(A2) >= 100 &&

odczyt analogowy (A2) <= 670 &&

odczyt analogowy (A3) >= 100 &&

odczyt analogowy (A3) <= 670);

serwo.zapis(170);

lcd.setCursor(3, 0);

lcd.print("Szuflada zablokowana");

opóźnienie(3000);

funkcja resetowania();

}w przeciwnym razie{

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("ODMOWA DOSTĘPU!!!");

lcd.setCursor(0, 2);

lcd.print("Ponowne uruchamianie systemu…");

opóźnienie(3000);

funkcja resetowania();

}

}w przeciwnym razie{

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("ODMOWA DOSTĘPU!!!");

lcd.setCursor(0, 2);

lcd.print("Ponowne uruchamianie systemu…");

opóźnienie(3000);

funkcja resetowania();

}

}w przeciwnym razie{

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("ODMOWA DOSTĘPU!!!");

lcd.setCursor(0, 2);

lcd.print("Ponowne uruchamianie systemu…");

opóźnienie(3000);

funkcja resetowania();

}

zwróć palec.fingerID; }

Krok 6: Zakończ

Jedna rzecz, o której zapomniałem powiedzieć, cóż, dwie rzeczy to to, że zbudowałem to przed zrobieniem zdjęć, więc nie mogłem pokazać, jak zbudowałem pudełko. Drugim jest to, że zaleca się przykręcenie części serwo do części, która się obraca. Jeśli tego nie zrobisz, ktoś może wyciągnąć szufladę, gdy jest zablokowana, i wyciągnąć kawałek. Ale zanim go przykręcisz, znajdź odpowiednie miejsce, w którym go założysz, ponieważ serwo obraca się do pewnego stopnia. Możesz też po prostu zmienić to w kodzie. Jeśli jakaś elektronika zachowuje się śmiesznie, możesz chcieć znaleźć inny sposób na uzyskanie 5V dla niektórych z nich. Zauważyłem, że kiedy mój skaner linii papilarnych błysnął, ekran lekko migał, a serwo hałasowało. Kiedy serwo poruszał się, ekran ciemniał. Mam nadzieję, że podobał Ci się projekt! Jeśli masz jakieś pytania, zostaw je w komentarzach. Nie mam dużo instrukcji, ale odpowiem na nie tak szybko, jak będę mógł!

Zalecana: