Mục lục:

Arduino High Tech Safe: 6 bước
Arduino High Tech Safe: 6 bước

Video: Arduino High Tech Safe: 6 bước

Video: Arduino High Tech Safe: 6 bước
Video: ChatGPT with Arduino Nano #arduino #chatgpt #technology #openAI #electronic 2024, Tháng mười một
Anonim
Arduino High Tech Safe
Arduino High Tech Safe

Đây là két an toàn công nghệ cao arduino của tôi. Bạn phải quét ngón tay, quét thẻ, sau đó nhập mật khẩu 4 chữ số để mở khóa ngăn kéo. Dự án này không được khuyến khích cho người mới bắt đầu vì nó rất tiên tiến. Code dài, nhưng tôi sẽ chia sẻ nó trong dự án này. Chi phí là khoảng $ 75 nếu bạn xây dựng cùng một chiếc két sắt như tôi. Dự án này cũng có thể mất 1-3 ngày để hoàn thành. Vậy hãy bắt đầu!

Quân nhu

Để xây dựng két sắt giống như của tôi, bạn sẽ cần:

Arduino (Nên dùng Uno vì tôi không có các bước cho arduino mega hoặc nano. Nhưng bạn vẫn có thể sử dụng chúng)

breadboard

servo

dây nhảy

cần điều khiển

20 * 4 (bạn có thể sử dụng 16 * 4, nhưng bạn sẽ phải thay đổi mã)

máy quét dấu vân tay

mfrc522 máy quét thẻ rfid

một xô chân

Bước 1: Xây dựng một hộp

Xây dựng một chiếc hộp
Xây dựng một chiếc hộp

Trước tiên, bạn sẽ cần một chiếc hộp để đặt các thiết bị điện tử của mình vào. Bạn có thể sử dụng legos, hộp in 3d hoặc thậm chí là bìa cứng! (Mặc dù việc này có thể khó hơn) Đừng quên khoét lỗ để làm ngăn kéo và đồ điện tử của bạn. Nếu bạn đang sử dụng máy quét thẻ rfid, bạn không cần phải đặt lỗ cho nó nếu tường của bạn mỏng. Các thẻ vẫn hoạt động, nhưng bạn phải đặt móc khóa lại để người senor thẻ rfid có thể đọc chúng. Cũng để lại chỗ cho arduino và dây bên trong của bạn. LƯU Ý: Khi bạn tạo ngăn kéo, hãy để lại một lỗ trên đó để servo của bạn có thể quay và khóa ngăn kéo.

Bước 2: Lên dây

Lắp lên!
Lắp lên!

Bước này có thể phức tạp vì bạn cần cắm dây vào vị trí chính xác nếu không thiết bị điện tử sẽ không hoạt động. Tôi không có sơ đồ đấu dây, nhưng tôi sẽ cho bạn biết mỗi thứ sẽ đi. Hệ thống dây chỉ dành cho arduino una. Bạn sẽ phải tìm cách đặt dây nếu bạn đang sử dụng arduino mega hoặc nano. Nếu bạn không sử dụng tất cả các điện mà tôi có, bạn có thể bỏ qua hệ thống dây đó.

Máy quét vân tay: dây xanh lá cây: dây trắng D2: dây đen D3: dây đỏ GND: 5V

Cần điều khiển: 5V = 3,3V GND = GND X = A2 Y = A3 Công tắc = D4

máy quét thẻ rfid: 3,3V = 3,3V đầu tiên = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

màn hình LCD: 5V = 5V GND = GND sda = A4 sck = A5

Servo: dây đỏ: 5V Dây nâu: Dây vàng GND: D6

LƯU Ý: KHÔNG CẮM BỘ QUÉT THẺ RFID VÀO 5V. NẾU BẠN LÀM ĐƯỢC, NÓ SẼ THẤT BẠI !!!

Bạn có thể tự hỏi tại sao tôi nói cắm nguồn cần điều khiển thành 3.3V khi nó nói 5V ở bên cạnh. Đó là bởi vì servo, màn hình và máy quét dấu vân tay cần 5V. Nếu bạn thêm cần điều khiển vào đó, thiết bị điện tử có thể không hoạt động vì mọi thứ đều cần nguồn 5V. Cần điều khiển sẽ vẫn hoạt động với 3.3V. Nó chỉ là giá trị tối đa không phải là 1023, nó sẽ là ~ 670.

Bước 3: Tải xuống thư viện

Trong dự án này, bạn sẽ cần 6 thư viện để sử dụng tất cả các thiết bị điện tử. 1 cho servo, 1 cho cảm biến vân tay, 2 cho máy quét thẻ rfid và 2 cho màn hình. Cần điều khiển không cần thư viện. Bây giờ, thư viện là gì? Về cơ bản, nó là một tệp chứa rất nhiều mã mà bạn có thể sử dụng trong dự án của mình bằng các lệnh đơn giản. Để có được các thư viện này, bạn cần đến một nơi có tên là GitHub. Nếu bạn biết cách tải xuống và giải nén thư viện, chỉ cần truy cập các liên kết bên dưới để tải xuống. Nếu bạn không biết cách, bạn có thể truy cập tài liệu hướng dẫn của tôi nói về cách tải xuống thư viện ở bước 3:

hoặc tìm kiếm video trên youtube về cách tải xuống thư viện arduino từ GitHub

LIÊN KẾT VỚI CÁC CHIM:

Servo

cảm biến vân tay:

spi

cảm biến thẻ rfid

thư viện màn hình 1

thư viện màn hình 2

Bước 4: Thiết lập cảm biến vân tay và cảm biến thẻ Rfid

Bước này nói về cách thiết lập cảm biến vân tay và cảm biến thẻ rfid. Trừ khi bạn đã sử dụng cảm biến vân tay của mình, bạn sẽ cần cho nó biết vân tay của bạn trông như thế nào để có thể lưu vào bộ nhớ. Ngay cả khi bạn đã sử dụng nó trước đây, có lẽ bạn vẫn nên thực hiện bước này. Tôi sẽ cho bạn biết cách thực hiện ngắn gọn, nhưng nếu nó không hợp lý, hãy truy cập cùng một liên kết hướng dẫn trong bước cuối cùng. Nó đi qua nó rất tốt. Cơ bản chỉ cần mở arduino Ide. Đi tới tệp> ví dụ> cảm biến vân tay adafruit> đăng ký. Tải mã lên arduino, mở màn hình nối tiếp và làm theo các bước mà nó cho bạn biết. Khi nó bảo bạn hãy cho nó một con số. Nhập 1 #.

Bây giờ đối với thẻ rfid, bước này khá dễ dàng. Mở arduino Ide. Đi tới tệp> ví dụ> mfrc522> đọc dữ liệu cá nhân. Tải lên arduino và mở màn hình nối tiếp. Quét thẻ hoặc chuỗi khóa bạn muốn sử dụng đi kèm với cảm biến của bạn. Sau đó, nó sẽ cung cấp cho bạn một số thông tin. Hãy tìm ID của thẻ, nó sẽ có 4 bộ gồm 2 chữ số. Một cái gì đó như thế này: AB 45 2Y 45 nhưng mã của bạn sẽ khác. Viết điều này ra một mảnh giấy. Bạn sẽ cần nó một lần nữa sau này. Đó là nó cho bước này.

Bước 5: MÃ SỐ

Đây sẽ là bước khó nhất đối với hầu hết các bạn, nhưng nó khá đơn giản. Đầu tiên, sao chép và dán mã vào arduino Ide từ bên dưới. Thứ hai, chỉnh sửa 2 phần có ghi CHỈNH SỬA MÃ. 1 phần dành cho máy quét thẻ, 1 phần dành cho phím điều khiển. Không thể bỏ qua các bước này. Sau khi hoàn tất, hãy tải mã lên arduino!

#include #include Fingerprint.h>

#bao gồm

#bao gồm

#bao gồm

#bao gồm

Màn hình LCD LiquidCrystal_I2C (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

#define RST_PIN 9

#define SS_PIN 10

MFRC522 mfrc522 (SS_PIN, RST_PIN);

SoftwareSerial mySerial (2, 3);

Adafruit_Fingerprint ngón tay = Adafruit_Fingerprint (& mySerial);

Servo servo;

ký tự d1;

ký tự d2;

ký tự d3;

ký tự d4;

void setup () {

servo.attach (6);

servo.write (170);

lcd.begin (20, 4);

Serial.begin (9600);

while (! nối tiếp);

SPI.begin ();

mfrc522. PCD_Init ();

chậm trễ (4);

mfrc522. PCD_DumpVersionToSerial ();

chậm trễ (100);

Serial.println ("\ n / n Kiểm tra phát hiện ngón tay quả");

ngón tay.begin (57600);

chậm trễ (5);

if (finger.verifyPassword ()) {

Serial.println ("Tất cả các hệ thống đang hoạt động");

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Vui lòng quét ngón tay");

} khác {

Serial.println ("LỖI: Không tìm thấy cảm biến vân tay!");

lcd.setCursor (0, 0);

lcd.print ("LỖI: Dấu vân tay");

lcd.setCursor (1, 1);

lcd.print ("không tìm thấy cảm biến!");

while (1) {delay (1); }

}

finger.getTemplateCount ();

Serial.print ("Cảm biến chứa"); Serial.print (finger.templateCount); Serial.println ("mẫu"); Serial.println ("Đang đợi ngón tay hợp lệ…"); }

void (* resetFunc) (void) = 0;

void loop () {

getFingerprintIDez ();

chậm trễ (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

chuyển đổi (p) {

trường hợp FINGERPRINT_OK:

Serial.println ("Đã chụp ảnh");

nghỉ;

trường hợp FINGERPRINT_NOFINGER:

Serial.println ("Không phát hiện ngón tay");

trả lại p;

trường hợp FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Lỗi giao tiếp");

trả lại p;

trường hợp FINGERPRINT_IMAGEFAIL:

Serial.println ("Lỗi hình ảnh");

trả lại p;

vỡ nợ:

Serial.println ("Lỗi không xác định");

trả lại p;

}

p = ngón tay.image2Tz ();

chuyển đổi (p) {

trường hợp FINGERPRINT_OK:

Serial.println ("Đã chuyển đổi hình ảnh");

nghỉ;

trường hợp FINGERPRINT_IMAGEMESS:

Serial.println ("Hình ảnh quá lộn xộn");

trả lại p;

trường hợp FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Lỗi giao tiếp");

trả lại p;

trường hợp FINGERPRINT_FEATUREFAIL:

Serial.println ("Không thể tìm thấy các tính năng của dấu vân tay");

trả lại p;

trường hợp FINGERPRINT_INVALIDIMAGE:

Serial.println ("Không thể tìm thấy các tính năng của dấu vân tay");

trả lại p;

vỡ nợ:

Serial.println ("Lỗi không xác định");

trả lại p;

}

p = finger.fingerFastSearch ();

if (p == FINGERPRINT_OK) {

Serial.println ("Đã tìm thấy một bản in khớp!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Lỗi giao tiếp");

trả lại p;

} else if (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Không tìm thấy kết quả phù hợp");

trả lại p;

} khác {

Serial.println ("Lỗi không xác định");

trả lại p;

}

Serial.print ("ID Tìm thấy #"); Serial.print (finger.fingerID);

Serial.print ("với độ tin cậy là"); Serial.println (ngón tay. độ tin cậy);

trả lại ngón tay.fingerID;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

if (p! = FINGERPRINT_OK) trả về -1;

p = ngón tay.image2Tz ();

if (p! = FINGERPRINT_OK) trả về -1;

p = finger.fingerFastSearch ();

if (p! = FINGERPRINT_OK) trả về -1;

Serial.print ("ID Tìm thấy #"); Serial.print (finger.fingerID);

Serial.print ("với độ tin cậy là"); Serial.println (ngón tay. độ tin cậy);

if (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Ngón tay được chấp nhận,");

lcd.setCursor (2, 0);

lcd.print ("bây giờ quét thẻ…");

lcd.setCursor (0, 3);

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

while (! mfrc522. PICC_IsNewCardPresent ());

while (! mfrc522. PICC_ReadCardSerial ());

if (mfrc522.uid.uidByte [0] == 0x92 && // ======================== CHỈNH SỬA MÃ ========== ==============

mfrc522.uid.uidByte [1] == 0xAB && // Lấy mảnh giấy có ghi ID trên đó, có 4 bộ gồm 2 chữ số

mfrc522.uid.uidByte [2] == 0x90 && // Nhìn theo mã, xem nơi nó cho biết 0x92, 0xAB, 0x90, 0x1c? Nhập từng

mfrc522.uid.uidByte [3] == 0x1C) {// của phần 2 chữ số sau chữ số 0x. Ví dụ: phần của ID cho biết

lcd.clear (); // 3E, sau đó nhập 3E sau 0x để tạo thành 0x3E. Làm điều này cho từng phần

lcd.setCursor (3, 0);

lcd.print ("Cuối cùng, nhập");

lcd.setCursor (1, 1);

lcd.print ("mật khẩu phím điều khiển");

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 = Ư;

}

if (analogRead (A3)> = 670) {

d1 = D;

}

chậm trễ (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 = Ư;

}

if (analogRead (A3)> = 670) {

d2 = D;

}

chậm trễ (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 = Ư;

}

if (analogRead (A3)> = 670) {

d3 = D;

}

chậm trễ (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 = Ư;

}

if (analogRead (A3)> = 670) {

d4 = D;

}

chậm trễ (500);

if (d1 == L && d2 == U && d3 == L && d4 == R) {// ================= CHỈNH SỬA MÃ ====== ================

lcd.clear (); // Phần này là bạn có thể chỉnh sửa mật khẩu bằng phím điều khiển

lcd.setCursor (2, 0); // mật khẩu được đặt sang trái, lên trái, phải. Nếu bạn muốn thay đổi

lcd.print ("Đã cấp quyền truy cập!"); // nó, đặt L cho trái, R cho phải, U cho lên hoặc D cho xuống ở bất kỳ

lcd.setCursor (2, 1); // 4 phần có một chữ cái sau dấu ==.

lcd.print ("Đã mở khóa ngăn kéo.");

lcd.setCursor (2, 2);

lcd.print ("Khi xong, di chuyen");

lcd.setCursor (1, 3);

lcd.print ("cần điều khiển để khóa lại");

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 ("Đã khóa ngăn kéo");

chậm trễ (3000);

resetFunc ();

}khác{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("TRUY CẬP BỊ TỪ CHỐI !!!");

lcd.setCursor (0, 2);

lcd.print ("Khởi động lại hệ thống…");

chậm trễ (3000);

resetFunc ();

}

}khác{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("TRUY CẬP BỊ TỪ CHỐI !!!");

lcd.setCursor (0, 2);

lcd.print ("Khởi động lại hệ thống…");

chậm trễ (3000);

resetFunc ();

}

}khác{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("TRUY CẬP BỊ TỪ CHỐI !!!");

lcd.setCursor (0, 2);

lcd.print ("Khởi động lại hệ thống…");

chậm trễ (3000);

resetFunc ();

}

trả lại ngón tay.fingerID; }

Bước 6: Kết thúc

Một điều tôi quên nói với bạn, 2 điều là tôi đã xây dựng cái này trước khi tôi chụp ảnh, vì vậy tôi không thể chỉ cho bạn cách tôi xây dựng chiếc hộp. Khác là bạn nên vặn vít phần servo vào phần quay. Nếu bạn không làm vậy, ai đó có thể kéo ngăn kéo trong khi nó bị khóa và kéo mảnh ngăn ra. Nhưng trước khi bạn vặn nó vào, hãy tìm đúng vị trí để đặt nó vào vì servo quay ở một mức độ nhất định. Hoặc bạn có thể chỉ cần thay đổi nó trong mã. Nếu một số thiết bị điện tử hoạt động buồn cười, bạn có thể muốn tìm một cách khác để lấy 5V cho một số thiết bị điện tử đó. Tôi nhận thấy khi máy quét dấu vân tay của tôi nhấp nháy, màn hình sẽ nhấp nháy nhẹ và servo sẽ phát ra tiếng ồn. Khi servo di chuyển, màn hình sẽ mờ đi. Tôi hy vọng bạn thích dự án! Nếu bạn có bất kỳ câu hỏi nào, hãy để lại chúng trong phần bình luận. Tôi không có nhiều hướng dẫn, nhưng tôi sẽ trả lời chúng ngay khi tôi có thể!

Đề xuất: