Taula de continguts:

Arduino High Tech Safe: 6 passos
Arduino High Tech Safe: 6 passos

Vídeo: Arduino High Tech Safe: 6 passos

Vídeo: Arduino High Tech Safe: 6 passos
Vídeo: ChatGPT with Arduino Nano #arduino #chatgpt #technology #openAI #electronic 2024, Juliol
Anonim
Arduino High Tech Safe
Arduino High Tech Safe

Aquesta és la meva seguretat arduino d'alta tecnologia. Heu d’escanejar el dit, escanejar la targeta i introduir una contrasenya de 4 dígits per desbloquejar el calaix. Aquest projecte no es recomana als principiants perquè és molt avançat. El codi és llarg, però el compartiré en aquest projecte. El cost és d’uns 75 dòlars si es construeix la mateixa caixa forta que jo. Aquest projecte també pot trigar entre 1 i 3 dies a completar-se. Per tant, comencem!

Subministraments

Per construir la mateixa caixa forta que la meva necessitareu:

Arduino (es recomana Uno perquè no tinc passos per a arduino mega ni nano. Però encara els podeu fer servir)

taulell de pa

servo

cables de pont

joystick

20 * 4 (podeu utilitzar 16 * 4, però haureu de canviar el codi)

escàner d’empremtes digitals

escàner de targetes RFID mfrc522

una galleda de llegos

Pas 1: construir una caixa

Construint una caixa
Construint una caixa

Primer necessitareu una caixa per posar els vostres aparells electrònics. Podeu utilitzar llegums, una caixa impresa en 3D o fins i tot cartró. (Tot i que això pot ser més difícil) No oblideu posar-hi forats per a un calaix i la vostra electrònica. Si utilitzeu l’escàner de targetes RFID, no cal que poseu cap forat si les parets són primes. Les cartes segueixen funcionant, però heu de tancar els clauers perquè el senor de la targeta RFID les pugui llegir. Deixeu també espai per al vostre arduino i cables. NOTA: Quan construïu el calaix, deixeu-hi un forat perquè el servo pugui girar i bloquejar el calaix.

Pas 2: Connecteu-vos

Cablatge!
Cablatge!

Aquest pas pot ser complicat perquè haureu de connectar els cables al lloc exacte, ja que l’electrònica no funcionarà. No tinc un esquema de cablejat, però us diré que anirà cadascun. El cablejat és només per a arduino uno. Haureu de buscar si heu de posar els cables si utilitzeu un arduino mega o nano. Si no utilitzeu tots els electrons que tinc, podeu saltar-vos aquest cablejat.

Escàner d’empremta digital: fil verd: fil blanc D2: fil negre D3: fil vermell GND: 5V

Palanca de control: 5V = 3,3V GND = GND X = A2 Y = A3 Switch = D4

escàner de targetes RFID: 3,3 V = 3,3 V primer = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

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

Servo: fil vermell: 5V filferro marró: filferro groc GND: D6

NOTA: NO ENCORREGUIS L’ESCÀNER DE TARGETES RFID A 5 V. SI HO FES, ES TRENCARÀ !!!

És possible que us pregunteu per què he dit que connecteu el joystick a 3,3V quan diu 5V al lateral. Això es deu al fet que el servo, la pantalla i l’escàner d’empremtes digitals necessiten 5V. Si hi afegiu el joystick, és possible que l’electrònica no funcioni perquè tot necessita 5V. El joystick continuarà funcionant amb 3,3 V. Només el valor màxim no serà de 1023, serà de ~ 670.

Pas 3: descàrrega de biblioteques

En aquest projecte, necessitareu 6 biblioteques per utilitzar tota l'electrònica. 1 per al servo, 1 per al sensor d'empremta digital, 2 per a l'escàner de targetes RFID i 2 per a la pantalla. El joystick no necessita biblioteca. Ara, què és una biblioteca? Bàsicament és un fitxer que conté molts codis que podeu utilitzar al vostre projecte amb ordres simples. Per obtenir aquestes biblioteques, heu d’anar a un lloc anomenat GitHub. Si sabeu com descarregar i descomprimir biblioteques, aneu als enllaços següents per obtenir les descàrregues. Si no sabeu com fer-ho, podeu anar al meu instructable que parla sobre com descarregar una biblioteca al pas 3: https://www.instructables.com/id/Makey-Makeyarduin …

o cerqueu un vídeo de youtube sobre com baixar una biblioteca arduino des de GitHub

ENLLAÇOS A LIRARIES:

Servo

sensor d’empremta digital:

spi

sensor de targeta RFID

biblioteca de pantalla 1

biblioteca de pantalla 2

Pas 4: Configuració del sensor d'empremta digital i del sensor de targeta RFID

Aquest pas parla de com configurar el sensor d’empremtes digitals i el sensor de targeta RFID. Tret que ja hàgiu utilitzat el sensor d’empremtes digitals, haureu de mostrar-li l’aspecte de la vostra empremta digital perquè pugui desar-lo a la memòria. Fins i tot si l’heu utilitzat abans, probablement hauríeu de fer aquest pas. Us diré com fer-ho breument, però si no té sentit aneu al mateix enllaç instructiu de l’últim pas. Ho repassa molt bé. Bàsic només obre ide arduino. Aneu a fitxer> exemples> sensor d'empremtes digitals adafruit> inscripció. Pengeu codi a arduino, obriu el monitor sèrie i seguiu els passos que us indica. Quan et digui que li donis un número. Escriviu 1 #.

Ara, per a la targeta RFID, aquest pas és bastant fàcil. Obre ide arduino. Aneu a fitxer> exemples> mfrc522> llegiu dades personals. Pengeu a arduino i obriu el monitor sèrie. Escaneja la targeta o el clauer que vulguis fer servir amb el sensor. A continuació, us donarà informació. Cerqueu la identificació de la targeta que constarà de 4 sèries de 2 dígits. Una cosa així: AB 45 2Y 45, però el vostre codi serà diferent. Escriviu-ho en un tros de paper. El tornareu a necessitar més tard. Això és tot per a aquest pas.

Pas 5: EL CODI

Aquest serà el pas més difícil per a la majoria de vosaltres, però és bastant senzill. Primer copieu i enganxeu el codi a l'arduino ide des de baix. En segon lloc, editeu les 2 seccions on diu EDIT CODE. 1 secció és per a l'escàner de targetes, 1 és per al joystick. Aquests passos no es poden ometre. Un cop fet, pengeu codi a arduino.

#include #include Fingerprint.h>

#incloure

#incloure

#incloure

#incloure

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

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

char d1;

char d2;

char d3;

char d4;

configuració nul·la () {

servo.attach (6);

servo.write (170);

lcd.begin (20, 4);

Serial.begin (9600);

mentre que (! sèrie);

SPI.begin ();

mfrc522. PCD_Init ();

retard (4);

mfrc522. PCD_DumpVersionToSerial ();

retard (100);

Serial.println ("\ n / nProva de detecció de dits de fruites");

finger.begin (57600);

retard (5);

if (finger.verifyPassword ()) {

Serial.println ("Tots els sistemes funcionen");

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Si us plau, escaneja el dit");

} més {

Serial.println ("ERROR: no s'ha trobat el sensor d'impressió digital");

lcd.setCursor (0, 0);

lcd.print ("ERROR: empremta digital");

lcd.setCursor (1, 1);

lcd.print ("el sensor no s'ha trobat!");

while (1) {delay (1); }

}

finger.getTemplateCount ();

Serial.print ("El sensor conté"); Serial.print (finger.templateCount); Serial.println ("plantilles"); Serial.println ("S'està esperant el dit vàlid …"); }

void (* resetFunc) (void) = 0;

bucle buit () {

getFingerprintIDez ();

retard (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

commutador (p) {

cas FINGERPRINT_OK:

Serial.println ("Imatge presa");

trencar;

cas FINGERPRINT_NOFINGER:

Serial.println ("No s'ha detectat cap dit");

tornar p;

cas FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Error de comunicació");

tornar p;

cas FINGERPRINT_IMAGEFAIL:

Serial.println ("Error d'imatge");

tornar p;

per defecte:

Serial.println ("Error desconegut");

tornar p;

}

p = dit.imatge2Tz ();

commutador (p) {

cas FINGERPRINT_OK:

Serial.println ("Imatge convertida");

trencar;

cas FINGERPRINT_IMAGEMESS:

Serial.println ("La imatge és massa desordenada");

tornar p;

cas FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Error de comunicació");

tornar p;

cas FINGERPRINT_FEATUREFAIL:

Serial.println ("No s'han pogut trobar funcions d'empremta digital");

tornar p;

cas FINGERPRINT_INVALIDIMAGE:

Serial.println ("No s'han pogut trobar funcions d'empremta digital");

tornar p;

per defecte:

Serial.println ("Error desconegut");

tornar p;

}

p = finger.fingerFastSearch ();

if (p == FINGERPRINT_OK) {

Serial.println ("S'ha trobat un resultat d'impressió!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Error de comunicació");

tornar p;

} else if (p == FINGERPRINT_NOTFOUND) {

Serial.println ("No s'ha trobat cap coincidència");

tornar p;

} més {

Serial.println ("Error desconegut");

tornar p;

}

Serial.print ("Identificador trobat #"); Serial.print (finger.fingerID);

Serial.print ("amb confiança de"); Serial.println (dit.confiança);

tornar dit.fingerID;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

if (p! = FINGERPRINT_OK) retorna -1;

p = dit.imatge2Tz ();

if (p! = FINGERPRINT_OK) retorna -1;

p = finger.fingerFastSearch ();

if (p! = FINGERPRINT_OK) retorna -1;

Serial.print ("Identificador trobat #"); Serial.print (finger.fingerID);

Serial.print ("amb confiança de"); Serial.println (dit.confiança);

if (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Dit acceptat");

lcd.setCursor (2, 0);

lcd.print ("ara escaneja la targeta …");

lcd.setCursor (0, 3);

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

while (! mfrc522. PICC_IsNewCardPresent ());

while (! mfrc522. PICC_ReadCardSerial ());

if (mfrc522.uid.uidByte [0] == 0x92 && // ======================== EDITAR CODI ======== ==============

mfrc522.uid.uidByte [1] == 0xAB && // Agafeu aquest tros de paper amb l'identificador, hi havia 4 sèries de 2 dígits

mfrc522.uid.uidByte [2] == 0x90 && // Cerqueu el codi, consulteu on diu 0x92, 0xAB, 0x90, 0x1c? Introduïu cadascun

mfrc522.uid.uidByte [3] == 0x1C) {// de la secció de 2 dígits després del 0x. Per exemple, a la secció de l'identificador es diu

lcd.clear (); // 3E i, a continuació, introduïu el 3E després del 0x per fer 0x3E. Feu això per a cada secció

lcd.setCursor (3, 0);

lcd.print ("Finalment, introduïu");

lcd.setCursor (1, 1);

lcd.print ("contrasenya del joystick");

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

Llegir analògicament (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;

}

retard (500);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

Llegir analògicament (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;

}

retard (500);

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

Llegir analògicament (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;

}

retard (500);

while (analogRead (A2)> = 10 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

Llegir analògicament (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;

}

retard (500);

if (d1 == L && d2 == U && d3 == L && d4 == R) {// ================= EDITAR CODI ====== ================

lcd.clear (); // Aquesta secció és on podeu editar la contrasenya amb el joystick

lcd.setCursor (2, 0); // la contrasenya s'estableix a l'esquerra, a l'esquerra, a la dreta. Si voleu canviar

lcd.print ("Accés concedit!"); //, poseu una L per l'esquerra, R per la dreta, U per amunt o D per avall en qualsevol dels

lcd.setCursor (2, 1); // 4 seccions amb una lletra després dels signes ==.

lcd.print ("Calaix desbloquejat");

lcd.setCursor (2, 2);

lcd.print ("Quan hàgiu acabat, moveu-vos");

lcd.setCursor (1, 3);

lcd.print ("joystick per tornar a bloquejar");

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 ("Calaix bloquejat");

retard (3000);

resetFunc ();

} més {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCÉS DENEGAT !!!");

lcd.setCursor (0, 2);

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

retard (3000);

resetFunc ();

}

} més {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCÉS DENEGAT !!!");

lcd.setCursor (0, 2);

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

retard (3000);

resetFunc ();

}

} més {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACCÉS DENEGAT !!!");

lcd.setCursor (0, 2);

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

retard (3000);

resetFunc ();

}

tornar dit.fingerID; }

Pas 6: Acabeu

Una cosa que em vaig oblidar de dir-vos, doncs 2 coses és que ho vaig construir abans de fer fotos, així que no us podia mostrar com vaig construir la caixa. L'altra és que es recomana cargolar la peça servo a la peça que gira. Si no ho feu, algú podria estirar el calaix mentre estigui bloquejat i estirar la peça. Però abans de cargolar-lo, cerqueu el lloc adequat on posar-lo perquè el servo gira fins a un cert grau. O simplement podeu canviar-lo al codi. Si alguns dels components electrònics són divertits, és possible que vulgueu trobar una manera diferent d’obtenir 5V per a alguns d’ells. Em vaig adonar que quan el meu escàner d’empremtes digitals parpellejava, la pantalla parpellejava lleugerament amb ell i el servo feia soroll. Quan el servo es movia, la pantalla quedaria tenue. Espero que us hagi agradat el projecte! Si teniu cap pregunta, deixeu-los en comentaris. No estic molt en instruccions, però els respondré tan aviat com pugui.

Recomanat: