Sommario:

Arduino High Tech Safe: 6 passaggi
Arduino High Tech Safe: 6 passaggi

Video: Arduino High Tech Safe: 6 passaggi

Video: Arduino High Tech Safe: 6 passaggi
Video: DIY Radar With Ultrasonic Sensor And Chat-GPT Generated Arduino Code | Coders Cafe 2024, Luglio
Anonim
Arduino High Tech Safe
Arduino High Tech Safe

Questa è la mia cassaforte ad alta tecnologia Arduino. Devi scansionare il dito, scansionare la tua carta, quindi inserire una password di 4 cifre per sbloccare il cassetto. Questo progetto non è consigliato ai principianti perché è molto avanzato. Il codice è lungo, ma lo condividerò in questo progetto. Il costo è di circa $75 se costruisci la mia stessa cassaforte. Anche questo progetto potrebbe richiedere 1-3 giorni per essere completato. Quindi iniziamo!

Forniture

Per costruire la mia stessa cassaforte avrai bisogno di:

Arduino (Uno consigliato perché non ho passaggi per arduino mega o nano. Ma puoi ancora usarli)

tagliere

servo

cavi per ponticelli

telecomando da gioco

20*4 (puoi usare 16*4, ma dovrai cambiare il codice)

scanner delle impronte digitali

scanner per schede rfid mfrc522

un secchio di lego

Passaggio 1: costruire una scatola

Costruire una scatola
Costruire una scatola

Per prima cosa avrai bisogno di una scatola per mettere i tuoi dispositivi elettronici. Potresti usare i lego, una scatola stampata in 3D o persino il cartone! (Anche se questo potrebbe essere più difficile) Non dimenticare di fare dei buchi per un cassetto e per i tuoi dispositivi elettronici. Se stai utilizzando lo scanner per schede RFID, non è necessario praticare un foro se le pareti sono sottili. Le carte funzionano ancora, ma devi chiudere i portachiavi in modo che il sensore della carta RFID possa leggerli. Lascia anche spazio per il tuo arduino e i cavi all'interno. NOTA: Quando costruisci il cassetto, lascia un foro in esso in modo che il tuo servo possa girare e bloccare il cassetto.

Passaggio 2: cablaggio

Cablaggio!
Cablaggio!

Questo passaggio può essere complicato perché è necessario collegare i cavi nel punto esatto o l'elettronica non funzionerà. Non ho uno schema elettrico, ma ti dirò che ognuno va. Il cablaggio è solo per arduino uno. Dovrai cercare dove mettere i fili se stai usando un arduino mega o un nano. Se non stai usando tutta l'elettronica che ho, puoi semplicemente saltare quel cablaggio.

Lettore di impronte digitali: filo verde: filo bianco D2: filo nero D3: filo rosso GND: 5V

Joystick: 5 V = 3,3 V GND = GND X = A2 Y = A3 Interruttore = D4

scanner di carte RFID: 3,3 V = 3,3 V rst = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

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

Servo: filo rosso: 5V Filo marrone: GND filo giallo: D6

NOTA: NON COLLEGARE LO SCANNER DI SCHEDE RFID A 5V. SE LO FATE, SI ROTTERÀ!!!

Ti starai chiedendo perché ho detto di collegare l'alimentazione del joystick a 3,3 V quando dice 5 V sul lato. Questo perché il servo, lo schermo e lo scanner di impronte digitali richiedono 5V. Se aggiungi il joystick, l'elettronica potrebbe non funzionare perché tutto ha bisogno di 5V. Il joystick funzionerà ancora con 3,3V. È solo che il valore massimo non sarà 1023, sarà ~670.

Passaggio 3: download delle librerie

In questo progetto, avrai bisogno di 6 librerie per utilizzare tutta l'elettronica. 1 per il servo, 1 per il sensore di impronte digitali, 2 per lo scanner di schede rfid e 2 per lo schermo. Il joystick non ha bisogno di una libreria. Ora, cos'è una biblioteca? È fondamentalmente un file che contiene molto codice che puoi utilizzare nel tuo progetto con semplici comandi. Per ottenere queste librerie, devi andare in un posto chiamato GitHub. Se sai come scaricare e decomprimere le librerie, vai ai link sottostanti per i download. Se non sai come fare, puoi andare al mio istruttore che parla di come scaricare una libreria nel passaggio 3:

o cerca un video di YouTube su come scaricare una libreria arduino da GitHub

LINK ALLE LIRARI:

Servo

sensore di impronte digitali:

spi

sensore carta RFID

libreria dello schermo 1

libreria dello schermo 2

Passaggio 4: configurazione del sensore di impronte digitali e del sensore della scheda Rfid

Questo passaggio spiega come configurare il sensore di impronte digitali e il sensore di carte RFID. A meno che tu non abbia già utilizzato il tuo sensore di impronte digitali, dovrai mostrargli l'aspetto della tua impronta digitale in modo che possa salvarlo nella sua memoria. Anche se l'hai usato prima, dovresti comunque fare questo passaggio. Ti dirò come farlo brevemente, ma se non ha senso vai allo stesso link istruibile nell'ultimo passaggio. Ci va molto bene. Basic basta aprire arduino ide. Vai a file> esempi> sensore di impronte digitali adafruit> iscriviti. Carica il codice su arduino, apri il monitor seriale e segui i passaggi che ti dice. Quando ti dice di dargli un numero. Digita 1#.

Ora per la carta rfid, questo passaggio è abbastanza semplice. Apri arduino ide. Vai a file > esempi > mfrc522 > leggi i dati personali. Carica su arduino e apri il monitor seriale. Scansiona la carta o il portachiavi che desideri utilizzare fornito con il sensore. Poi ti darà alcune informazioni. Cerca l'ID della carta, saranno 4 serie di 2 cifre. Qualcosa del genere: AB 45 2Y 45 ma il tuo codice sarà diverso. Scrivilo su un pezzo di carta. Ne avrai bisogno di nuovo più tardi. Questo è tutto per questo passaggio.

Passaggio 5: IL CODICE

Questo sarà il passo più difficile per la maggior parte di voi, ma è piuttosto semplice. Per prima cosa copia e incolla il codice nell'ide di arduino dal basso. In secondo luogo, modifica le 2 sezioni in cui dice MODIFICA CODICE. 1 sezione è per lo scanner di carte, 1 è per il joystick. Questi passaggi non possono essere saltati. Una volta fatto, carica il codice su arduino!

#include #include Fingerprint.h>

#includere

#includere

#includere

#includere

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

#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;

carattere d1;

carattere d2;

carattere d3;

carattere d4;

void setup(){

servo.attach(6);

servo.write(170);

lcd.begin(20, 4);

Serial.begin(9600);

mentre (!Seriale);

SPI.begin();

mfrc522. PCD_Init();

ritardo(4);

mfrc522. PCD_DumpVersionToSerial();

ritardo(100);

Serial.println("\n\nTest di rilevamento delle dita di Adafruit");

finger.begin(57600);

ritardo(5);

if (finger.verifyPassword()) {

Serial.println("Tutti i sistemi funzionano, ");

lcd.clear();

lcd.setCursor(1, 0);

lcd.print("Scansiona il dito");

} altro {

Serial.println("ERRORE: sensore di impronte digitali non trovato!");

lcd.setCursor(0, 0);

lcd.print("ERRORE: impronta digitale");

lcd.setCursor(1, 1);

lcd.print("sensore non trovato!");

mentre (1) { ritardo (1); }

}

finger.getTemplateCount();

Serial.print("Il sensore contiene "); Serial.print(finger.templateCount); Serial.println(" modelli"); Serial.println("In attesa di dito valido…"); }

void(* resetFunc) (void) = 0;

ciclo vuoto() {

getFingerprintIDez();

ritardo(50);

}

uint8_t getFingerprintID() {

uint8_t p = finger.getImage();

interruttore (p) {

caso FINGERPRINT_OK:

Serial.println("Immagine acquisita");

rottura;

caso FINGERPRINT_NOFINGER:

Serial.println("Nessun dito rilevato");

restituire p;

caso FINGERPRINT_PACKETRECIEVEERR:

Serial.println("Errore di comunicazione");

ritorno p;

caso FINGERPRINT_IMAGEFAIL:

Serial.println("Errore di immagine");

restituire p;

predefinito:

Serial.println("Errore sconosciuto");

restituire p;

}

p = finger.image2Tz();

interruttore (p) {

caso FINGERPRINT_OK:

Serial.println("Immagine convertita");

rottura;

caso FINGERPRINT_IMAGEMESS:

Serial.println("Immagine troppo disordinata");

ritorno p;

caso FINGERPRINT_PACKETRECIEVEERR:

Serial.println("Errore di comunicazione");

restituire p;

caso FINGERPRINT_FEATUREFAIL:

Serial.println("Impossibile trovare le caratteristiche delle impronte digitali");

restituire p;

caso FINGERPRINT_INVALIDIMAGE:

Serial.println("Impossibile trovare le caratteristiche delle impronte digitali");

restituire p;

predefinito:

Serial.println("Errore sconosciuto");

ritorno p;

}

p = finger.fingerFastSearch();

if (p == IMPRONTA DIGITALE_OK) {

Serial.println("Trova una corrispondenza di stampa!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("Errore di comunicazione");

restituire p;

} else if (p == FINGERPRINT_NOTFOUND) {

Serial.println("Non ho trovato una corrispondenza");

ritorno p;

} altro {

Serial.println("Errore sconosciuto");

restituire p;

}

Serial.print("ID trovato #"); Serial.print(finger.fingerID);

Serial.print(" con sicurezza di "); Serial.println(finger.confidence);

return finger.fingerID;

}

int getFingerprintIDez() {

uint8_t p = finger.getImage();

if (p != FINGERPRINT_OK) return -1;

p = finger.image2Tz();

if (p != FINGERPRINT_OK) return -1;

p = finger.fingerFastSearch();

if (p != FINGERPRINT_OK) return -1;

Serial.print("ID trovato #"); Serial.print(finger.fingerID);

Serial.print(" con sicurezza di "); Serial.println(finger.confidence);

if(finger.fingerID == 1){

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("Dito accettato, ");

lcd.setCursor(2, 0);

lcd.print("ora scansiona la scheda…");

lcd.setCursor(0, 3);

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

while(! mfrc522. PICC_IsNewCardPresent());

while(! mfrc522. PICC_ReadCardSerial());

if (mfrc522.uid.uidByte[0] == 0x92 && //========================MODIFICA CODICE======== ==============

mfrc522.uid.uidByte[1] == 0xAB && //Prendi quel pezzo di carta con l'ID su di esso, c'erano 4 serie di 2 cifre

mfrc522.uid.uidByte[2] == 0x90 && //Guarda il codice, vedi dove dice 0x92, 0xAB, 0x90, 0x1c? Inserisci ciascuno

mfrc522.uid.uidByte[3] == 0x1C) { //della sezione a 2 cifre dopo lo 0x. Ad esempio, la sezione dell'ID dice

lcd.clear(); // 3E, quindi inserisci 3E dopo 0x per creare 0x3E. Fallo per ogni sezione

lcd.setCursor(3, 0);

lcd.print("Finalmente invio");

lcd.setCursor(1, 1);

lcd.print("password joystick");

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

}

ritardo (500);

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

}

ritardo (500);

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

}

ritardo (500);

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

}

ritardo (500);

if(d1 == L && d2 == U && d3 == L && d4 == R){ //================= MODIFICA CODICE====== ================

lcd.clear(); //Questa sezione è dove puoi modificare la password con il joystick

lcd.setCursor(2, 0); //la password è impostata a sinistra, in alto a sinistra, a destra. Se vuoi cambiare

lcd.print("Accesso concesso!"); //it, metti una L per sinistra, R per destra, U per su o D per giù in uno qualsiasi dei

lcd.setCursor(2, 1); // sezioni con una lettera dopo i segni ==.

lcd.print("Cassetto sbloccato.");

lcd.setCursor(2, 2);

lcd.print("Quando hai finito, sposta");

lcd.setCursor(1, 3);

lcd.print("joystick da ribloccare");

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("Cassetto bloccato");

ritardo (3000);

resetFunc();

}altro{

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("ACCESSO NEGATO!!!");

lcd.setCursor(0, 2);

lcd.print("Riavvio del sistema…");

ritardo (3000);

resetFunc();

}

}altro{

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("ACCESSO NEGATO!!!");

lcd.setCursor(0, 2);

lcd.print("Riavvio del sistema…");

ritardo (3000);

resetFunc();

}

}altro{

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("ACCESSO NEGATO!!!");

lcd.setCursor(0, 2);

lcd.print("Riavvio del sistema…");

ritardo (3000);

resetFunc();

}

return finger.fingerID; }

Passaggio 6: fine

Una cosa che ho dimenticato di dirti, beh, 2 cose è che l'ho costruito prima di fare le foto, quindi non ho potuto mostrarti come ho costruito la scatola. L'altro è che si consiglia di avvitare la parte del servo sulla parte che gira. Se non lo fai, qualcuno potrebbe tirare il cassetto mentre è bloccato e tirare via il pezzo. Ma prima di avvitarlo, trova il punto giusto dove metterlo perché il servo gira in una certa misura. Oppure potresti semplicemente cambiarlo nel codice. Se alcuni componenti elettronici si comportano in modo strano, potresti voler trovare un modo diverso per ottenere 5V per alcuni di essi. Ho notato che quando il mio scanner di impronte digitali lampeggiava, lo schermo lampeggiava leggermente e il servo faceva rumore. Quando il servo si muoveva, lo schermo si oscurava. Spero che il progetto vi sia piaciuto! Se hai domande, lasciale nei commenti. Non seguo molto gli istruttori, ma risponderò il prima possibile!

Consigliato: