Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:02
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
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
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:
Corona Safe: automatyczny kran oszczędzający wodę: 6 kroków
Corona Safe: Automatyczny kran oszczędzający wodę: Wszyscy musimy od czasu do czasu myć ręce, aby pozbyć się wirusa i bakterii, specjalnie dla wirusa Corona, musimy myć ręce przez 20 sekund, aby całkowicie się go pozbyć. Również dozownik mydła lub pokrętło kranu nie muszą być higieniczne lub c
IPad Stylus Tip - (Jak obracać małe części na tokarce strumieniowej), zrobiłem to w Tech Shop!: 7 kroków
IPad Stylus Tip - (Jak obracać małe części na tokarce strumieniowej), zrobiłem to w Tech Shop!: Wykonaj tę mosiężną końcówkę do trzymania gumowych końcówek rysika! To najtrudniejsza część tworzenia własnego rysika pojemnościowego! Potrzebowałem mosiężnej końcówki do przytrzymania gumowej końcówki mojego wrażliwego na nacisk rysika, który rozwijam. Ta instrukcja pokaże ci moje
B-Safe, przenośny sejf: 8 kroków (ze zdjęciami)
B-Safe, przenośny sejf: *** 4 września 2019 r.: Przesłałem nowy plik 3D samego pudełka. Wyglądało na to, że mój zamek był o 10 mm za wysoki na dobre zamknięcie ***ProblemWyobraź sobie: budzisz się pewnego ranka i pogoda jest naprawdę dobra. Chcesz iść na plażę. Ponieważ nie
Cyfrowy SAFE BOX oparty na Arduino: 10 kroków
Cyfrowy SAFE BOX oparty na Arduino: Hej chłopaki! Czy masz coś, co chcesz bezpiecznie przechować? Coś, co należy trzymać z dala od niechcianych intruzów i intruzów? Cóż, mam rozwiązanie Twojego problemu! Oto sejf oparty na Arduino
SAFE?, robot, który oszczędza mienie: 6 kroków (ze zdjęciami)
BEZPIECZNY?, Robot, który oszczędza rzeczy.: Cześć i witaj w tym instruktażowym!. Robot: BEZPIECZNY? może być fajny, jak chcesz go stworzyć. Ten sympatyczny robot, jak dobrze wiesz, mógłby wyświadczyć nam łaskę ratowania naszego dobytku. Ponadto w tej wersji SAFE? nie mogliśmy określić t