Inhaltsverzeichnis:

Arduino High-Tech-Safe - Gunook
Arduino High-Tech-Safe - Gunook

Video: Arduino High-Tech-Safe - Gunook

Video: Arduino High-Tech-Safe - Gunook
Video: Arduino Missile Defense Radar System in ACTION 2024, Juli
Anonim
Arduino High-Tech-Safe
Arduino High-Tech-Safe

Dies ist mein Arduino High-Tech-Safe. Sie müssen Ihren Finger scannen, Ihre Karte scannen und dann ein 4-stelliges Passwort eingeben, um die Schublade zu entsperren. Dieses Projekt wird für Anfänger nicht empfohlen, da es sehr fortgeschritten ist. Der Code ist lang, aber ich werde ihn in diesem Projekt teilen. Die Kosten betragen etwa 75 US-Dollar, wenn Sie den gleichen Safe bauen wie ich. Dieses Projekt kann auch 1-3 Tage dauern. Also lasst uns anfangen!

Lieferungen

Um den gleichen Tresor wie meinen zu bauen, benötigen Sie:

Arduino (Uno empfohlen, da ich keine Schritte für Arduino Mega oder Nano habe. Aber Sie können sie trotzdem verwenden)

Steckbrett

Servo

Überbrückungsdrähte

Joystick

20*4 (Sie können 16*4 verwenden, müssen jedoch den Code ändern)

Fingerabdruck-Scanner

mfrc522 RFID-Kartenscanner

ein Eimer Lego

Schritt 1: Aufbau einer Box

Eine Box bauen
Eine Box bauen

Zuerst benötigen Sie eine Box, um Ihre Elektronik zu verstauen. Sie könnten Legos, eine 3D-gedruckte Box oder sogar Pappe verwenden! (Obwohl dies schwieriger sein könnte) Vergessen Sie nicht, Löcher für eine Schublade und Ihre Elektronik zu machen. Wenn Sie den RFID-Kartenscanner verwenden, müssen Sie bei dünnen Wänden kein Loch dafür bohren. Die Karten funktionieren noch, aber Sie müssen die Schlüsselbunde schließen, damit der RFID-Kartensenor sie lesen kann. Lassen Sie auch Platz für Ihr Arduino und die Drähte im Inneren. HINWEIS: Wenn Sie die Schublade bauen, lassen Sie ein Loch darin, damit sich Ihr Servo drehen und die Schublade verriegeln kann.

Schritt 2: Verdrahten

Verkabelung hoch!
Verkabelung hoch!

Dieser Schritt kann kompliziert sein, da Sie die Drähte genau an der richtigen Stelle anschließen müssen oder die Elektronik nicht funktioniert. Ich habe keinen Schaltplan, aber ich werde Ihnen sagen, dass jeder geht. Die Verkabelung ist nur für Arduino Uno. Sie müssen suchen, wo die Drähte verlegt werden, wenn Sie ein Arduino Mega oder Nano verwenden. Wenn Sie nicht alle Elektrons verwenden, die ich habe, können Sie diese Verkabelung einfach überspringen.

Fingerabdruckscanner: grünes Kabel: D2 weißes Kabel: D3 schwarzes Kabel: GND rotes Kabel: 5V

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

RFID-Kartenscanner: 3.3V = 3.3V rst = D9 GND = GND Miso = D12 mosi = D11 sck = D13 sda = D10

LCD-Bildschirm: 5V = 5V GND = GND sda = A4 sck = A5

Servo: rotes Kabel: 5V braunes Kabel: GND gelbes Kabel: D6

HINWEIS: DEN RFID-KARTENSCANNER NICHT AN 5V ANSCHLIESSEN. WENN SIE ES TUN, WIRD ES ZERBRECHEN!!!

Sie fragen sich vielleicht, warum ich gesagt habe, die Joystick-Stromversorgung an 3,3 V anzuschließen, wenn auf der Seite 5 V angezeigt werden. Das liegt daran, dass Servo, Bildschirm und Fingerabdruckscanner 5 V benötigen. Wenn Sie den Joystick hinzufügen, funktioniert die Elektronik möglicherweise nicht, da alles 5 V benötigt. Der Joystick funktioniert weiterhin mit 3.3V. Es ist nur der Maximalwert nicht 1023, sondern ~670.

Schritt 3: Herunterladen von Bibliotheken

In diesem Projekt benötigen Sie 6 Bibliotheken, um die gesamte Elektronik zu verwenden. 1 für das Servo, 1 für den Fingerabdrucksensor, 2 für den RFID-Kartenscanner und 2 für den Bildschirm. Der Joystick benötigt keine Bibliothek. Was ist nun eine Bibliothek? Es ist im Grunde eine Datei, die viel Code enthält, den Sie mit einfachen Befehlen in Ihrem Projekt verwenden können. Um diese Bibliotheken zu erhalten, müssen Sie zu einem Ort namens GitHub gehen. Wenn Sie wissen, wie man Bibliotheken herunterlädt und entpackt, gehen Sie einfach zu den untenstehenden Links für die Downloads. Wenn Sie nicht wissen, wie, können Sie zu meinem instructable gehen, in dem es darum geht, eine Bibliothek in Schritt 3 herunterzuladen:

oder suchen Sie ein YouTube-Video zum Herunterladen einer Arduino-Bibliothek von GitHub

LINKS ZU LIRARIEN:

Servo

Fingerabdrucksensor:

spi

RFID-Kartensensor

Bildschirmbibliothek 1

Bildschirmbibliothek 2

Schritt 4: Einrichten des Fingerabdrucksensors und des RFID-Kartensensors

In diesem Schritt erfahren Sie, wie Sie den Fingerabdrucksensor und den RFID-Kartensensor einrichten. Sofern Sie Ihren Fingerabdrucksensor nicht bereits verwendet haben, müssen Sie ihm zeigen, wie Ihr Fingerabdruck aussieht, damit er ihn in seinem Speicher speichern kann. Auch wenn Sie es schon einmal verwendet haben, sollten Sie diesen Schritt wahrscheinlich trotzdem tun. Ich werde Ihnen kurz sagen, wie es geht, aber wenn es keinen Sinn macht, gehen Sie im letzten Schritt zum gleichen anweisbaren Link. Es kommt sehr gut darüber hinweg. Einfach nur arduino ide öffnen. Gehen Sie zu Datei > Beispiele > Adafruit-Fingerabdrucksensor > Registrieren. Laden Sie den Code auf Arduino hoch, öffnen Sie den seriellen Monitor und befolgen Sie die Anweisungen. Wenn es Ihnen sagt, dass Sie ihm eine Nummer geben sollen. Geben Sie 1# ein.

Nun für die RFID-Karte ist dieser Schritt ziemlich einfach. Öffnen Sie die Arduino-Ide. Gehen Sie zu Datei > Beispiele > mfrc522 > persönliche Daten lesen. Laden Sie auf Arduino hoch und öffnen Sie den seriellen Monitor. Scannen Sie die mit Ihrem Sensor gelieferte Karte oder den Schlüsselbund, den Sie verwenden möchten. Dann gibt es einige Informationen. Suchen Sie nach der ID der Karte, die aus 4 Sätzen mit 2 Ziffern besteht. Etwa so: AB 45 2Y 45, aber Ihr Code wird anders sein. Schreiben Sie dies auf ein Blatt Papier. Sie werden es später wieder brauchen. Das war's für diesen Schritt.

Schritt 5: DER CODE

Dies wird für die meisten von Ihnen der schwierigste Schritt sein, aber es ist ziemlich einfach. Kopieren Sie zuerst den Code und fügen Sie ihn von unten in die Arduino-Ide ein. Zweitens bearbeiten Sie die 2 Abschnitte, in denen EDIT CODE steht. 1 Abschnitt ist für den Kartenleser, 1 für den Joystick. Diese Schritte können nicht übersprungen werden. Wenn Sie fertig sind, laden Sie den Code auf arduino hoch!

#include #include Fingerabdruck.h>

#enthalten

#enthalten

#enthalten

#enthalten

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

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

Zeichen d1;

Zeichen d2;

Zeichen d3;

Zeichen d4;

Void-Setup () {

servo.attach(6);

servo.write(170);

lcd.begin(20, 4);

Serial.begin (9600);

while (!Seriell);

SPI.begin();

mfrc522. PCD_Init();

Verzögerung(4);

mfrc522. PCD_DumpVersionToSerial();

Verzögerung (100);

Serial.println("\n\nAdafruit-Fingererkennungstest");

finger.begin(57600);

Verzögerung(5);

if (finger.verifyPassword()) {

Serial.println("Alle Systeme funktionieren,");

lcd.clear();

lcd.setCursor(1, 0);

lcd.print("Bitte Finger scannen");

} anders {

Serial.println ("FEHLER: Fingerabdrucksensor nicht gefunden!");

lcd.setCursor(0, 0);

lcd.print("FEHLER: Fingerabdruck");

lcd.setCursor(1, 1);

lcd.print("Sensor nicht gefunden!");

während (1) { Verzögerung (1); }

}

finger.getTemplateCount();

Serial.print ("Sensor enthält"); Serial.print (finger.templateCount); Serial.println ("Vorlagen"); Serial.println("Warten auf gültigen Finger…"); }

void(* resetFunc) (void) = 0;

Leere Schleife () {

getFingerprintIDez();

Verzögerung (50);

}

uint8_t getFingerprintID() {

uint8_t p = finger.getImage();

Schalter (p) {

Fall FINGERPRINT_OK:

Serial.println ("Bild aufgenommen");

brechen;

Fall FINGERPRINT_NOFINGER:

Serial.println ("Kein Finger erkannt");

Rückkehr p;

Fall FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Kommunikationsfehler");

Rückkehr p;

Fall FINGERPRINT_IMAGEFAIL:

Serial.println ("Bildfehler");

Rückkehr p;

Ursprünglich:

Serial.println ("Unbekannter Fehler");

Rückkehr p;

}

p = finger.image2Tz();

Schalter (p) {

Fall FINGERPRINT_OK:

Serial.println ("Bild konvertiert");

brechen;

Fall FINGERPRINT_IMAGEMESS:

Serial.println ("Bild zu unordentlich");

Rückkehr p;

Fall FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Kommunikationsfehler");

Rückkehr p;

Fall FINGERPRINT_FEATUREFAIL:

Serial.println ("Konnte Fingerabdruckfunktionen nicht finden");

Rückkehr p;

Fall FINGERPRINT_INVALIDIMAGE:

Serial.println ("Konnte Fingerabdruckfunktionen nicht finden");

Rückkehr p;

Ursprünglich:

Serial.println ("Unbekannter Fehler");

Rückkehr p;

}

p = finger.fingerFastSearch();

if (p == FINGERPRINT_OK) {

Serial.println ("Eine Druckübereinstimmung gefunden!");

aufrechtzuerhalten. Sonst if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println ("Kommunikationsfehler");

Rückkehr p;

} else if (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Keine Übereinstimmung gefunden");

Rückkehr p;

} anders {

Serial.println ("Unbekannter Fehler");

Rückkehr p;

}

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

Serial.print ("mit Vertrauen von "); Serial.println (finger.confidence);

zurück 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 ("Gefundene ID #"); Serial.print (finger.fingerID);

Serial.print ("mit Vertrauen von "); Serial.println (finger.confidence);

if(finger.fingerID == 1){

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("Finger akzeptiert,");

lcd.setCursor(2, 0);

lcd.print("Jetzt Karte scannen…");

lcd.setCursor(0, 3);

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

while(! mfrc522. PICC_IsNewCardPresent());

while(! mfrc522. PICC_ReadCardSerial());

if (mfrc522.uid.uidByte[0] == 0x92 && //========================CODE BEARBEITEN======== ==============

mfrc522.uid.uidByte[1] == 0xAB && //Nimm das Stück Papier mit der ID darauf, es waren 4 Sätze mit 2 Ziffern

mfrc522.uid.uidByte[2] == 0x90 && //Schauen Sie sich den Code an, sehen Sie, wo 0x92, 0xAB, 0x90, 0x1c steht? Geben Sie jeden ein

mfrc522.uid.uidByte[3] == 0x1C) { //des 2-stelligen Abschnitts nach dem 0x. Im Abschnitt der ID steht beispielsweise

lcd.clear(); ///3E, dann geben Sie 3E nach 0x ein, um 0x3E zu machen. Tun Sie dies für jeden Abschnitt

lcd.setCursor(3, 0);

lcd.print("Endlich eingeben");

lcd.setCursor(1, 1);

lcd.print("Joystick-Passwort");

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;

}

Verzögerung (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;

}

Verzögerung (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;

}

Verzögerung (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;

}

Verzögerung (500);

if(d1 == L && d2 == U && d3 == L && d4 == R){ //=================CODE BEARBEITEN====== ================

lcd.clear(); //In diesem Abschnitt können Sie das Passwort mit dem Joystick bearbeiten

lcd.setCursor(2, 0); //Das Passwort ist auf links, oben links, rechts gesetzt. Wenn du dich ändern willst

lcd.print("Zugriff gewährt!"); // it, setze ein L für links, R für rechts, U für oben oder D für unten in eine der

lcd.setCursor(2, 1); ///4 Abschnitte mit einem Buchstaben nach den ==-Zeichen.

lcd.print("Schublade entsperrt.");

lcd.setCursor(2, 2);

lcd.print("Wenn fertig, verschieben");

lcd.setCursor(1, 3);

lcd.print ("Joystick zum erneuten Sperren");

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("Schublade gesperrt");

Verzögerung (3000);

resetFunc();

}anders{

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("Zugriff verweigert!!!");

lcd.setCursor(0, 2);

lcd.print("System neu starten…");

Verzögerung (3000);

resetFunc();

}

}anders{

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("Zugriff verweigert!!!");

lcd.setCursor(0, 2);

lcd.print("System neu starten…");

Verzögerung (3000);

resetFunc();

}

}anders{

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("Zugriff verweigert!!!");

lcd.setCursor(0, 2);

lcd.print("System neu starten…");

Verzögerung (3000);

resetFunc();

}

zurück finger.fingerID; }

Schritt 6: Fertig

Eine Sache, die ich vergessen habe, Ihnen zu sagen, 2 Dinge sind, dass ich das gebaut habe, bevor ich Bilder gemacht habe, also konnte ich Ihnen nicht zeigen, wie ich die Box gebaut habe. Die andere ist, dass es empfohlen wird, das Servoteil auf das sich drehende Teil zu schrauben. Wenn Sie dies nicht tun, könnte jemand die Schublade ziehen, während sie verriegelt ist, und das Teil herausziehen. Aber bevor Sie es anschrauben, finden Sie die richtige Stelle, an der Sie es aufsetzen, da sich das Servo bis zu einem gewissen Grad dreht. Oder Sie können es einfach im Code ändern. Wenn sich einige der Elektronikteile komisch verhalten, möchten Sie vielleicht einen anderen Weg finden, um für einige von ihnen 5 V zu erhalten. Ich bemerkte, wenn mein Fingerabdruckscanner blinkte, der Bildschirm würde leicht damit blinken und das Servo machte Geräusche. Wenn sich das Servo bewegte, wurde der Bildschirm dunkel. Ich hoffe euch hat das Projekt gefallen! Wenn Sie Fragen haben, hinterlassen Sie diese in den Kommentaren. Ich bin nicht viel auf instructables, aber ich werde sie so schnell wie möglich beantworten!

Empfohlen: