Sommario:
- Forniture
- Passaggio 1: costruire una scatola
- Passaggio 2: cablaggio
- Passaggio 3: download delle librerie
- Passaggio 4: configurazione del sensore di impronte digitali e del sensore della scheda Rfid
- Passaggio 5: IL CODICE
- Passaggio 6: fine
Video: Arduino High Tech Safe: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
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
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
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:
Corona Safe: rubinetto automatico a risparmio idrico: 6 passaggi
Corona Safe: rubinetto automatico per il risparmio idrico: tutti noi dobbiamo lavarci le mani ogni tanto per eliminare virus e batteri, specialmente per il virus Corona, dobbiamo lavarci le mani per 20 secondi per eliminarlo completamente. Anche il distributore di sapone o la manopola del rubinetto potrebbero non essere necessariamente igienici o c
Punta dello stilo per iPad - (Come trasformare piccole parti su un tornio a getto), l'ho fatto in Tech Shop!: 7 passaggi
Punta dello stilo dell'iPad - (Come girare piccole parti su un tornio a getto), l'ho fatto in Tech Shop!: Realizza questa punta in ottone per tenere i pennini in gomma dello stilo! Questa è la parte più difficile della creazione del tuo stilo capacitivo! Avevo bisogno di una punta in ottone per tenere il pennino in gomma per il mio stilo sensibile alla pressione che sto sviluppando. Questo istruibile ti mostrerà il mio
B-Safe, la cassaforte portatile: 8 passaggi (con immagini)
B-Safe, la cassaforte portatile: *** 4 settembre 2019: ho caricato un nuovo file 3D della scatola stessa. Sembrava che il mio lucchetto fosse 10 mm troppo alto per una buona chiusura ***Il problema Immagina questo: ti svegli una mattina e il tempo è davvero buono. Vuoi andare in spiaggia. Perché non
Arduino Key Safe: 4 passaggi
Arduino Key Safe: idee da: https://www.instructables.com/id/Key-Safe/Sono una persona che ha sempre perso le mie cose senza motivo. Metto al sicuro questa chiave così posso ricordarmi di mettere dentro le mie cose, senza che le cose vadano perse. In questo progetto ho apportato dei miglioramenti
SAFE BOX digitale basata su Arduino: 10 passaggi
SAFE BOX digitale basata su Arduino: Ehi ragazzi! Hai qualcosa che vuoi tenere al sicuro? Qualcosa che deve essere tenuto lontano da intrusi indesiderati e invasori della privacy? Bene, ho una soluzione per il tuo problema! Ecco una cassaforte con serratura basata su Arduino