สารบัญ:

Arduino ไฮเทคปลอดภัย: 6 ขั้นตอน
Arduino ไฮเทคปลอดภัย: 6 ขั้นตอน

วีดีโอ: Arduino ไฮเทคปลอดภัย: 6 ขั้นตอน

วีดีโอ: Arduino ไฮเทคปลอดภัย: 6 ขั้นตอน
วีดีโอ: รู้จักกับบอร์ด Arduino Uno R3 2024, พฤศจิกายน
Anonim
Arduino ไฮเทคปลอดภัย
Arduino ไฮเทคปลอดภัย

นี่คือความปลอดภัยของ Arduino ไฮเทคของฉัน คุณต้องสแกนนิ้ว สแกนบัตร จากนั้นป้อนรหัสผ่าน 4 หลักเพื่อปลดล็อกลิ้นชัก โครงการนี้ไม่แนะนำสำหรับผู้เริ่มต้นเนื่องจากเป็นโครงการที่ก้าวหน้ามาก รหัสยาว แต่ฉันจะแบ่งปันในโครงการนี้ ค่าใช้จ่ายอยู่ที่ประมาณ 75 เหรียญหากคุณสร้างตู้เซฟแบบเดียวกับฉัน โครงการนี้อาจใช้เวลา 1-3 วันจึงจะแล้วเสร็จ เริ่มกันเลย!

เสบียง

ในการสร้างตู้เซฟแบบเดียวกับของฉัน คุณจะต้อง:

Arduino (แนะนำ Uno เพราะฉันไม่มีขั้นตอนสำหรับ arduino mega หรือ nano แต่คุณยังสามารถใช้งานได้)

เขียงหั่นขนม

เซอร์โว

สายจัมเปอร์

จอยสติ๊ก

20*4 (ใช้ 16*4 ได้ แต่ต้องเปลี่ยนโค้ด)

เครื่องสแกนลายนิ้วมือ

mfrc522 เครื่องสแกนบัตร rfid

ถังเลโก้

ขั้นตอนที่ 1: สร้างกล่อง

การสร้างกล่อง
การสร้างกล่อง

ก่อนอื่นคุณต้องมีกล่องสำหรับใส่อุปกรณ์อิเล็กทรอนิกส์ คุณสามารถใช้เลโก้ กล่องที่พิมพ์ 3 มิติ หรือแม้แต่กระดาษแข็งก็ได้! (แต่อาจจะยากกว่านี้) อย่าลืมเจาะรูลิ้นชักและอุปกรณ์อิเล็กทรอนิกส์ของคุณ หากคุณกำลังใช้เครื่องสแกนบัตร rfid คุณไม่จำเป็นต้องเจาะรูหากผนังของคุณบาง การ์ดยังคงใช้งานได้ แต่คุณต้องวางพวงกุญแจไว้ใกล้ ๆ เพื่อให้เซ็นเซอร์การ์ด rfid สามารถอ่านได้ เว้นที่ว่างสำหรับ Arduino และสายไฟของคุณไว้ด้านใน หมายเหตุ: เมื่อคุณสร้างลิ้นชัก ให้เว้นรูไว้เพื่อให้เซอร์โวของคุณสามารถหมุนและล็อคลิ้นชักได้

ขั้นตอนที่ 2: เดินสายขึ้น

เดินสายขึ้น!
เดินสายขึ้น!

ขั้นตอนนี้อาจซับซ้อนเพราะคุณต้องเสียบสายไฟตรงจุด มิฉะนั้นอุปกรณ์อิเล็กทรอนิกส์จะไม่ทำงาน ฉันไม่มีแผนภาพการเดินสายไฟ แต่ฉันจะบอกว่าแต่ละอันจะไป สายไฟสำหรับ Arduino uno เท่านั้น คุณจะต้องค้นหาเพื่อวางสายไฟหากคุณใช้ Arduino mega หรือ nano หากคุณไม่ได้ใช้อิเล็กโตรนิสทั้งหมดที่ฉันมี คุณสามารถข้ามการเดินสายนั้นได้

เครื่องสแกนลายนิ้วมือ: สายสีเขียว: D2 สายสีขาว: D3 สายสีดำ: GND สายสีแดง: 5V

จอยสติ๊ก: 5V = 3.3V GND = GND X = A2 Y = A3 Switch = D4

เครื่องสแกนบัตร rfid: 3.3V = 3.3V แรก = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

หน้าจอ LCD: 5V = 5V GND = GND sda = A4 sck = A5

เซอร์โว: สายสีแดง: 5V สายสีน้ำตาล: สายสีเหลือง GND: D6

หมายเหตุ: ห้ามเสียบเครื่องสแกนบัตร RFID เข้ากับ 5V ถ้าคุณทำ มันจะพัง!!!

คุณอาจสงสัยว่าทำไมฉันถึงบอกว่าให้เสียบไฟจอยสติ๊กเป็น 3.3V ในเมื่อมันบอกว่า 5V ที่ด้านข้าง นั่นเป็นเพราะเซอร์โว หน้าจอ และเครื่องสแกนลายนิ้วมือต้องใช้ 5V หากคุณเพิ่มจอยสติ๊กเข้าไป อุปกรณ์อิเล็กทรอนิกส์อาจไม่ทำงานเพราะทุกอย่างต้องการ 5V จอยสติ๊กยังคงใช้งานได้กับ 3.3V มันก็แค่ค่าสูงสุดไม่ใช่ 1023 มันจะเป็น ~670

ขั้นตอนที่ 3: ดาวน์โหลดไลบรารี

ในโครงการนี้ คุณจะต้องมีห้องสมุด 6 แห่งเพื่อใช้อุปกรณ์อิเล็กทรอนิกส์ทั้งหมด 1 สำหรับเซอร์โว 1 สำหรับเซ็นเซอร์ลายนิ้วมือ 2 สำหรับเครื่องสแกนบัตร rfid และ 2 สำหรับหน้าจอ จอยสติ๊กไม่ต้องการห้องสมุด ตอนนี้ห้องสมุดคืออะไร? โดยพื้นฐานแล้วมันเป็นไฟล์ที่มีโค้ดจำนวนมากซึ่งคุณสามารถใช้ในโครงการของคุณด้วยคำสั่งง่ายๆ ในการรับไลบรารีเหล่านี้ คุณต้องไปที่ GitHub หากคุณรู้วิธีดาวน์โหลดและเปิดเครื่องรูดไลบรารี่ เพียงไปที่ลิงก์ด้านล่างเพื่อดาวน์โหลด หากคุณไม่ทราบวิธี คุณสามารถไปที่คำแนะนำของฉันซึ่งพูดถึงวิธีดาวน์โหลดไลบรารี่ในขั้นตอนที่ 3:

หรือค้นหาวิดีโอ youtube เกี่ยวกับวิธีดาวน์โหลดไลบรารี arduino จาก GitHub

ลิงค์ไปยังห้องสมุด:

เซอร์โว

เซ็นเซอร์ลายนิ้วมือ:

spi

เซ็นเซอร์การ์ด rfid

ไลบรารีหน้าจอ 1

ไลบรารีหน้าจอ 2

ขั้นตอนที่ 4: การตั้งค่าเซ็นเซอร์ลายนิ้วมือและเซ็นเซอร์การ์ด Rfid

ขั้นตอนนี้พูดถึงวิธีตั้งค่าเซ็นเซอร์ลายนิ้วมือและเซ็นเซอร์การ์ด rfid เว้นแต่คุณจะใช้เซ็นเซอร์ลายนิ้วมืออยู่แล้ว คุณจะต้องแสดงให้เห็นว่าลายนิ้วมือของคุณมีหน้าตาเป็นอย่างไร เพื่อให้สามารถบันทึกลงในหน่วยความจำได้ แม้ว่าคุณจะเคยใช้มาก่อน คุณก็ยังควรทำขั้นตอนนี้ ฉันจะบอกคุณว่าต้องทำอย่างไรโดยสังเขป แต่ถ้าไม่สมเหตุสมผล ให้ไปที่ลิงก์ที่สอนได้ในขั้นตอนสุดท้าย ผ่านไปได้ด้วยดี พื้นฐานเพียงแค่เปิด Arduino ide ไปที่ไฟล์ > ตัวอย่าง > เซ็นเซอร์ลายนิ้วมือ adafruit > ลงทะเบียน อัปโหลดโค้ดไปยัง Arduino เปิดมอนิเตอร์แบบอนุกรม แล้วทำตามขั้นตอนที่แจ้ง เมื่อมันบอกให้คุณใส่ตัวเลข พิมพ์ 1#

สำหรับบัตร rfid ขั้นตอนนี้ค่อนข้างง่าย เปิด IDE ของ Arduino ไปที่ไฟล์ > ตัวอย่าง > mfrc522 > อ่านข้อมูลส่วนบุคคล อัปโหลดไปยัง Arduino และเปิดมอนิเตอร์แบบอนุกรม สแกนการ์ดหรือพวงกุญแจที่คุณต้องการใช้ที่มาพร้อมกับเซ็นเซอร์ของคุณ แล้วจะให้ข้อมูลบางอย่างแก่คุณ ค้นหา ID ของบัตรจะเป็น 4 ชุด 2 หลัก บางอย่างเช่นนี้: AB 45 2Y 45 แต่รหัสของคุณจะแตกต่างออกไป เขียนสิ่งนี้ลงบนกระดาษ คุณจะต้องใช้อีกครั้งในภายหลัง แค่นี้แหละสำหรับขั้นตอนนี้

ขั้นตอนที่ 5: รหัส

นี่จะเป็นขั้นตอนที่ยากที่สุดสำหรับคุณส่วนใหญ่ แต่ก็ค่อนข้างง่าย ขั้นแรกให้คัดลอกและวางโค้ดลงใน Arduino ide จากด้านล่าง ประการที่สอง แก้ไข 2 ส่วนที่ระบุว่า EDIT CODE 1 ส่วนสำหรับเครื่องสแกนบัตร 1 ส่วนสำหรับจอยสติ๊ก ไม่สามารถข้ามขั้นตอนเหล่านี้ได้ เสร็จแล้วอัพโหลดโค้ดไปที่ Arduino!

#include #include Fingerprint.h>

#รวม

#รวม

#รวม

#รวม

LiquidCrystal_I2C จอแอลซีดี (0x27, 2, 1, 0, 4, 5, 6, 7, 3, บวก);

#define RST_PIN 9

#define SS_PIN 10

MFRC522 mfrc522(SS_PIN, RST_PIN);

ซอฟต์แวร์Serial mySerial(2, 3);

นิ้ว Adafruit_Fingerprint = Adafruit_Fingerprint (&mySerial);

เซอร์โวเซอร์โว;

ถ่าน d1;

ถ่าน d2;

ถ่าน d3;

ถ่าน d4;

การตั้งค่าเป็นโมฆะ (){

servo.attach(6);

servo.write (170);

lcd.begin(20, 4);

Serial.begin(9600);

ในขณะที่ (!ซีเรียล);

SPI.begin();

mfrc522. PCD_Init();

ล่าช้า(4);

mfrc522. PCD_DumpVersionToSerial();

ล่าช้า (100);

Serial.println("\n\nการทดสอบการตรวจหานิ้วของ Adafruit");

นิ้วเริ่มต้น (57600);

ล่าช้า(5);

ถ้า (finger.verifyPassword()) {

Serial.println("ระบบทั้งหมดใช้งานได้");

lcd.clear();

lcd.setCursor(1, 0);

lcd.print("กรุณาสแกนนิ้วด้วย");

} อื่น {

Serial.println("ข้อผิดพลาด: ไม่พบเซ็นเซอร์ลายนิ้วมือ!");

lcd.setCursor(0, 0);

lcd.print("ข้อผิดพลาด: พิมพ์ลายนิ้วมือ");

lcd.setCursor(1, 1);

lcd.print("ไม่พบเซนเซอร์!");

ในขณะที่ (1) { ล่าช้า (1); }

}

finger.getTemplateCount();

Serial.print("เซนเซอร์ประกอบด้วย "); Serial.print(finger.templateCount); Serial.println("แม่แบบ"); Serial.println("กำลังรอสำหรับนิ้วที่ถูกต้อง…"); }

เป็นโมฆะ (* resetFunc) (เป็นโมฆะ) = 0;

วงเป็นโมฆะ () {

getFingerprintIDez();

ล่าช้า (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage();

สวิตช์ (p) {

กรณี FINGERPRINT_OK:

Serial.println("ภาพที่ถ่าย");

หยุดพัก;

กรณี FINGERPRINT_NOFINGER:

Serial.println("ไม่พบนิ้ว");

กลับ p;

กรณี FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("ข้อผิดพลาดในการสื่อสาร");

กลับ p;

กรณี FINGERPRINT_IMAGEFAIL:

Serial.println("ภาพผิดพลาด");

กลับ p;

ค่าเริ่มต้น:

Serial.println("ข้อผิดพลาดที่ไม่รู้จัก");

กลับ p;

}

p = finger.image2Tz();

สวิตช์ (p) {

กรณี FINGERPRINT_OK:

Serial.println("แปลงรูปภาพ");

หยุดพัก;

กรณี FINGERPRINT_IMAGEMESS:

Serial.println("ภาพยุ่งเกินไป");

กลับ p;

กรณี FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("ข้อผิดพลาดในการสื่อสาร");

กลับ p;

กรณี FINGERPRINT_FEATUREFAIL:

Serial.println("ไม่พบคุณสมบัติลายนิ้วมือ");

กลับ p;

กรณี FINGERPRINT_INVALIDIMAGE:

Serial.println("ไม่พบคุณสมบัติลายนิ้วมือ");

กลับ p;

ค่าเริ่มต้น:

Serial.println("ข้อผิดพลาดที่ไม่รู้จัก");

กลับ p;

}

p = finger.fingerFastSearch();

ถ้า (p == FINGERPRINT_OK) {

Serial.println("พบการพิมพ์ที่ตรงกัน!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println ("ข้อผิดพลาดในการสื่อสาร");

กลับ p;

} else if (p == FINGERPRINT_NOTFOUND) {

Serial.println("ไม่พบรายการที่ตรงกัน");

กลับ p;

} อื่น {

Serial.println("ข้อผิดพลาดที่ไม่รู้จัก");

กลับ p;

}

Serial.print("พบ ID #"); Serial.print(finger.fingerID);

Serial.print(" ด้วยความมั่นใจของ "); Serial.println(นิ้ว.ความมั่นใจ);

ส่งคืน finger.fingerID;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage();

ถ้า (p != FINGERPRINT_OK) คืนค่า -1;

p = finger.image2Tz();

ถ้า (p != FINGERPRINT_OK) คืนค่า -1;

p = finger.fingerFastSearch();

ถ้า (p != FINGERPRINT_OK) คืนค่า -1;

Serial.print("พบ ID #"); Serial.print(finger.fingerID);

Serial.print(" ด้วยความมั่นใจของ "); Serial.println(นิ้ว.ความมั่นใจ);

ถ้า (finger.fingerID == 1) {

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("ใช้นิ้ว, ");

lcd.setCursor(2, 0);

lcd.print("ตอนนี้สแกนการ์ด…");

lcd.setCursor(0, 3);

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

ในขณะที่ (! mfrc522. PICC_IsNewCardPresent());

ในขณะที่ (! mfrc522. PICC_ReadCardSerial());

ถ้า (mfrc522.uid.uidByte[0] == 0x92 && //======================= แก้ไขโค้ด========= ==============

mfrc522.uid.uidByte[1] == 0xAB && //หยิบกระดาษแผ่นนั้นที่มี ID อยู่ มี 4 ชุด 2 หลัก

mfrc522.uid.uidByte[2] == 0x90 && //ดูโค้ด ดูว่ามันเขียนว่า 0x92, 0xAB, 0x90, 0x1c? ใส่แต่ละ

mfrc522.uid.uidByte[3] == 0x1C) {// ของส่วน 2 หลักหลัง 0x ตัวอย่างเช่น ส่วนของ ID บอกว่า

lcd.clear(); ///3E จากนั้นป้อน 3E หลัง 0x เพื่อสร้าง 0x3E ทำสิ่งนี้สำหรับแต่ละส่วน

lcd.setCursor(3, 0);

lcd.print("สุดท้าย ใส่");

lcd.setCursor(1, 1);

lcd.print("รหัสผ่านจอยสติ๊ก");

ในขณะที่(analogRead(A2) >= 100 &&

analogRead (A2) <= 670 &&

analogRead (A3) >= 100 &&

อ่านอนาล็อก (A3) <= 670){

}

lcd.setCursor(8, 4);

lcd.print("*"); ถ้า(analogRead(A2) <= 100){

d1 = ล;

}

ถ้า(analogRead(A2) >= 670){

d1 = ร;

}

ถ้า (อนาล็อกอ่าน (A3) <= 100){

d1 = คุณ;

}

ถ้า(analogRead(A3) >= 670){

d1 = ง;

}

ล่าช้า (500);

ในขณะที่(analogRead(A2) >= 100 &&

analogRead (A2) <= 670 &&

analogRead (A3) >= 100 &&

อ่านอนาล็อก (A3) <= 670){

}

lcd.print("*");

ถ้า(analogRead(A2) <= 100){

d2 = ล;

}

ถ้า(analogRead(A2) >= 670){

d2 = ร;

}

ถ้า (อนาล็อกอ่าน (A3) <= 100){

d2 = คุณ;

}

ถ้า(analogRead(A3) >= 670){

d2 = ง;

}

ล่าช้า (500);

ในขณะที่(analogRead(A2) >= 100 &&

analogRead (A2) <= 670 &&

analogRead (A3) >= 100 &&

อ่านอนาล็อก (A3) <= 670){

}

lcd.print("*");

ถ้า(analogRead(A2) <= 100){

d3 = ล;

}

ถ้า(analogRead(A2) >= 670){

d3 = ร;

}

ถ้า (อนาล็อกอ่าน (A3) <= 100){

d3 = คุณ;

}

ถ้า(analogRead(A3) >= 670){

d3 = ง;

}

ล่าช้า (500);

ในขณะที่(analogRead(A2) >= 10 &&

analogRead (A2) <= 670 &&

analogRead (A3) >= 100 &&

อ่านอนาล็อก (A3) <= 670){

}

lcd.print("*");

ถ้า(analogRead(A2) <= 100){

d4 = ล;

}

ถ้า(analogRead(A2) >= 670){

d4 = ร;

}

ถ้า (อนาล็อกอ่าน (A3) <= 100){

d4 = คุณ;

}

ถ้า(analogRead(A3) >= 670){

d4 = ง;

}

ล่าช้า (500);

if(d1 == L && d2 == U && d3 == L && d4 == R){ //================== แก้ไขโค้ด====== ================

lcd.clear(); // ส่วนนี้เป็นส่วนที่คุณสามารถแก้ไขรหัสผ่านด้วยจอยสติ๊ก

lcd.setCursor(2, 0); // ตั้งรหัสผ่านเป็นซ้าย ขึ้น ซ้าย ขวา หากคุณต้องการเปลี่ยน

lcd.print("การเข้าถึงที่ได้รับ!"); // มันใส่ L สำหรับซ้าย R สำหรับขวา U สำหรับขึ้นหรือ D สำหรับลงใน.ใดๆ

lcd.setCursor(2, 1); ///4 ส่วนที่มีตัวอักษรหลังเครื่องหมาย ==

lcd.print("ลิ้นชักถูกปลดล็อค");

lcd.setCursor(2, 2);

lcd.print("เมื่อเสร็จแล้ว ให้ย้าย");

lcd.setCursor(1, 3);

lcd.print("จอยสติ๊กเพื่อล็อคอีกครั้ง");

servo.write (90);

ในขณะที่(analogRead(A2) >= 100 &&

analogRead (A2) <= 670 &&

analogRead (A3) >= 100 &&

analogRead (A3) <= 670);

servo.write (170);

lcd.setCursor(3, 0);

lcd.print("ลิ้นชักล็อค");

ล่าช้า (3000);

resetFunc();

}อื่น{

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("การเข้าถึงถูกปฏิเสธ!!!");

lcd.setCursor(0, 2);

lcd.print("ระบบรีสตาร์ท…");

ล่าช้า (3000);

resetFunc();

}

}อื่น{

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("การเข้าถึงถูกปฏิเสธ!!!");

lcd.setCursor(0, 2);

lcd.print("ระบบรีสตาร์ท…");

ล่าช้า (3000);

resetFunc();

}

}อื่น{

lcd.clear();

lcd.setCursor(2, 0);

lcd.print("การเข้าถึงถูกปฏิเสธ!!!");

lcd.setCursor(0, 2);

lcd.print("ระบบรีสตาร์ท…");

ล่าช้า (3000);

resetFunc();

}

ส่งคืน finger.fingerID; }

ขั้นตอนที่ 6: เสร็จสิ้น

สิ่งหนึ่งที่ฉันลืมบอกคุณ คือ มี 2 อย่างคือ ฉันสร้างสิ่งนี้ก่อนที่จะถ่ายรูป ดังนั้นฉันจึงไม่สามารถแสดงให้คุณเห็นว่าฉันสร้างกล่องได้อย่างไร อีกอย่างคือแนะนำให้ขันสกรูส่วนเซอร์โวเข้ากับส่วนที่หมุน หากคุณไม่ทำเช่นนั้น อาจมีคนดึงลิ้นชักในขณะที่ล็อกและดึงชิ้นส่วนนั้นออก แต่ก่อนที่คุณจะขันสกรู ให้หาจุดที่เหมาะสมที่จะใส่เพราะเซอร์โวหันไปในระดับหนึ่ง หรือจะเปลี่ยนเป็นโค้ดก็ได้ หากอุปกรณ์อิเล็กทรอนิกส์บางตัวแสดงท่าทางตลก คุณอาจต้องการหาวิธีอื่นในการรับ 5V สำหรับบางตัว ฉันสังเกตเห็นว่าเมื่อเครื่องสแกนลายนิ้วมือของฉันกะพริบ หน้าจอจะกะพริบด้วยเล็กน้อย และเซอร์โวจะส่งเสียง เมื่อเซอร์โวเคลื่อนที่ หน้าจอจะมืดลง ฉันหวังว่าคุณจะสนุกกับโครงการ! หากคุณมีคำถามใด ๆ ทิ้งไว้ในความคิดเห็น ฉันไม่ได้สอนมาก แต่ฉันจะตอบพวกเขาโดยเร็วที่สุด!

แนะนำ: