Mục tiêu
Mỗi khi trở về đến nhà, nếu như trong tay đang bắt buộc xách rất nhiều đồ đạc và lại phải sử dụng chìa khóa để xuất hiện thì cũng phiền các bạn nhỉ? họ hãy có tác dụng một phương án khóa cửa ngõ thông minh như sau:
Nhấn nút A trên remote để khóa cửa.
Bạn đang xem: Khóa thông minh dùng arduino
Nhấn nút B bên trên remote để bắt đầu nhập mật mã cùng nút C để ngừng quá trình nhập.
Trong lúc nhập mật mã, thông tin sẽ được hiển thị lên màn hình LCD.
Nếu mật mã nhập đúng, cửa ngõ sẽ mở ra.
Chúng ta vẫn dùng hộp động cơ Servo nhằm đóng và xuất hiện ngôi nhà.
Thiết bị buộc phải sử dụng
Kết nối phần cứng
Viết chương trình
Mở ứng dụng Arduino IDE.
Copy đoạn code sau, click vào nút Verify để đánh giá lỗi chương trình. Sau khi biên dịch ko báo lỗi, chúng ta cũng có thể nạp đoạn code vào board.
#include #include #include #include #define PASSCODE "1234"XController xcon;IRrecv irrecv(IR_RX);LCD_1602 lcd(0x21);Servos s;int ir
Command;void setup() Serial.begin(9600); irrecv.begin(); s.init(); s.position(0, 0); lcd.begin(D1_1, D1_2); lcd.backlight();void loop() if (irrecv.decode()) ir
Command = irrecv.decoded
IRData.command; Serial.println(ir
Command); irrecv.resume(); if (ir
Command == IR_REMOTE_A) // khóa cửa ngõ lại s.position(0, 0); else if (ir
Command == IR_REMOTE_B) // ban đầu nhập mật mã lcd.clear(); lcd.set
Cursor(0, 0); lcd.print("Hay nhap mat ma:"); String passcode = ""; while (ir
Command != IR_REMOTE_C) // liên tiếp đọc biểu lộ remote nhằm nhập // mật mã cho tới khi phím C được thừa nhận if (irrecv.decode()) ir
Command = irrecv.decoded
IRData.command; Serial.println(ir
Command); char input; switch (ir
Command) case IR_REMOTE_0: passcode += "0"; break; case IR_REMOTE_1: passcode += "1"; break; case IR_REMOTE_2: passcode += "2"; break; case IR_REMOTE_3: passcode += "3"; break; case IR_REMOTE_4: passcode += "4"; break; case IR_REMOTE_5: passcode += "5"; break; case IR_REMOTE_6: passcode += "6"; break; case IR_REMOTE_7: passcode += "7"; break; case IR_REMOTE_8: passcode += "8"; break; case IR_REMOTE_9: passcode += "9"; break; lcd.set
Cursor(0, 1); lcd.print(passcode); delay(500); irrecv.resume(); // nhập mật mã sẽ xong, nên kiểm tra if (passcode == PASSCODE) lcd.set
Cursor(0, 1); lcd.print("Mat ma dung"); s.position(0, 90); else lcd.set
Cursor(0, 1); lcd.print("Mat ma sai");
Nội dung nội dung bài viết hôm nay bản thân sẽ trả lời cho các bạn cách có tác dụng mộthệ thống khóa cửa thông minh cùng với RFID RC-522 sử dụng
Arduinođể bảo đảm ngôi nhà của mình.
Để gọi hơn về cấu trúc và cách hoạt động vui chơi của tất cảcảm biến gồm trong dự án.Các bạn cũng có thể tìm đọc nội dung bài viết vềArduino miễn chi phí dành cho những người mới nhập môn.
Xem thêm: Giải Pháp Đỗ Xe Thông Minh, Giải Pháp Bãi Đỗ Xe Thông Minh
Module hiểu thẻ RFID RC-522
RFID RC-522 là một trong module phát âm thẻ RFID được sử dụng phổ biến trong những ứng dụng như đóng mở cửa, điều hành và kiểm soát truy cập, hệ thống làm chủ thời gian chấm công… Module này áp dụng kỹ thuật truyền thông không dây RFID (Radio Frequency Identification) nhằm đọc và ghi tài liệu trên những thẻ bao gồm chứa tin tức về ID, dữ liệu cá nhân hoặc tin tức sản phẩm. Module khoá cửa ngõ điện tử RFID RC522 có khả năng đọc thẻ RFID sinh hoạt tần số 13.56 MHz và giao tiếp với vi tinh chỉnh thông qua tiếp xúc SPI.
Cấu sinh sản của RFID RC522
RFID RC-522 là 1 module RFID được sử dụng để đọc và ghi dữ liệu từ những thẻ RFID. Module này được kết nối với vi tinh chỉnh và điều khiển bằng giao tiếp SPI (Serial Peripheral Interface).
RFID RC-522 gồm một số chân đặc biệt như sau:
Chân VCC: là nguồn cấp cho cho module, đây là chân có điện áp 3.3V.Chân GND: là chân mát của module, được liên kết với đất.Chân RST: được sử dụng để tùy chỉnh cấu hình lại tâm lý của module, và có thể được điều khiển và tinh chỉnh bởi vi điều khiển.Chân IRQ: được áp dụng để đo lường các sự khiếu nại của module tuy thế không bắt buộc phải sử dụng.Chân MISO: là chân cổng đầu ra của module cùng được áp dụng để truyền dữ liệu từ module mang đến vi điều khiển.Chân MOSI: là chân nguồn vào của module với được thực hiện để truyền tài liệu từ vi tinh chỉnh đến module.Chân SCK: là chân tạo thành xung dấu hiệu cho tiếp xúc SPINguyên lý hoạt động của RFID RC-522
RFID RC-522 vận động dựa trên nguyên lý sử dụng sóng radio tần số cao để media tin giữa sản phẩm công nghệ đọc và thẻ RFID.
Khi một thẻ RFID được đưa vào vùng đọc của RC-522, một sóng tần cao được phân phát ra từ bỏ anten bên trên RC-522. Sóng tần này sẽ thúc đẩy với anten bên trên thẻ RFID, tạo ra một trường từ và kích hoạt thẻ RFID. Thẻ RFID vẫn phản hồi bằng phương pháp phát ra một biểu hiện chứa tin tức cần thiết.
RC-522 đã nhận biểu lộ này trải qua anten của nó và chuyển tiếp biểu thị đó mang lại vi điều khiển trên mạch. Vi điều khiển và tinh chỉnh này sẽ giải thuật tín hiệu và kéo ra thông tin cần thiết trên thẻ RFID. Sau đó, vi điều khiển sẽ gửi tin tức này đến bộ xử lý để cách xử lý hoặc tàng trữ vào cỗ nhớ.
Quá trình này ra mắt rất nhanh và đối chọi giản, có thể chấp nhận được RC-522 đọc thông tin trên thẻ RFID một cách thuận tiện và bao gồm xác.
Các linh kiện quan trọng cho dự án
Tên linh kiện | Số lượng | Shopee |
Arduino Uno R3 | 1 | Mua ngay |
Cáp nạp | 1 | Mua ngay |
RFID RC522 | 1 | Mua ngay |
Loa | 1 | Mua ngay |
Relay 5V/1 kênh | 1 | Mua ngay |
Dây cắn (Đực – Cái) | 2 | Mua ngay |
LCD16X2 | 1 | Mua ngay |
Board I2C LCD16X2 | 1 | Mua ngay |
Khóa Chốt Điện 12V | 1 | Mua ngay |
Nguồn Adapter 12V/2A | 1 | Mua ngay |
Jack nguồn DC | 1 | Mua ngay |
Code
#include #include // i2C Conection Library#include //Memanggil i2C LCD Library
Liquid
Crystal_I2C lcd(0x3F, 16, 2);/*Sambungan Module RFID RC-522 ke Arduino* MOSI: pin 11* MISO: sạc 12* SCK : pin 13* SS/SDA: pin sạc 10* RST: pin 9* RQ: Tidak digunakan*/#include #include #define SS_PIN 10#define RST_PIN 9RFID rfid(SS_PIN,RST_PIN);const int buzzer = 7; //Passive buzzer ke pin sạc D7 dan GNDconst int door
Lock = 8; //Driver Selenoid Door Lock/Relay đầu vào ke pin D8int ser
Num<5>; //Variable buffer Scan Cardint cards<><5> = //ID Kartu yang diperbolehkan masuk 141,125,2,197,55 ;bool access = false;int alarm = 0;uint8_t alarm
Stat = 0;uint8_t max
Error = 5;void setup() Serial.begin(9600); lcd.begin(); SPI.begin(); rfid.init(); pin
Mode(door
Lock, OUTPUT); digital
Write(door
Lock, HIGH); tone (buzzer,1200); lcd.set
Cursor (0,0); lcd.print(F(" RFID System ")); lcd.set
Cursor (0,1); lcd.print(F(" Control Access ")); delay (2000); lcd.clear(); no
Tone (buzzer);void loop() if (alarm >= max
Error) alarm
Stat = 1; if (alarm
Stat == 0) lcd.set
Cursor (0,0); lcd.print(F(" -System Ready- ")); lcd.set
Cursor (0,1); lcd.print(F(" Scan Your thẻ ")); if(rfid.is
Card()) if(rfid.read
Card
Serial()) Serial.print(rfid.ser
Num<0>); Serial.print(" "); Serial.print(rfid.ser
Num<1>); Serial.print(" "); Serial.print(rfid.ser
Num<2>); Serial.print(" "); Serial.print(rfid.ser
Num<3>); Serial.print(" "); Serial.print(rfid.ser
Num<4>); Serial.println(""); for(int x = 0; x 0; i--) lcd.set
Cursor (15,1); lcd.print(i); delay (1000); digital
Write(door
Lock, HIGH); lcd.clear(); else alarm = alarm+1; Serial.println("Not allowed!"); lcd.set
Cursor (0,0); lcd.print(F(" Akses ditolak ")); lcd.set
Cursor (0,1); lcd.print("ID:"); lcd.print(rfid.ser
Num<0>); lcd.print(rfid.ser
Num<1>); lcd.print(rfid.ser
Num<2>); lcd.print(rfid.ser
Num<3>); lcd.print(rfid.ser
Num<4>); tone (buzzer,900); delay(200); no
Tone(buzzer); delay(200); tone (buzzer,900); delay(200); no
Tone (buzzer); delay(500); lcd.clear(); rfid.halt();else lcd.set
Cursor (0,0); lcd.print(F("-System LOCKED- ")); lcd.set
Cursor (0,1); lcd.print(F(" Please Wait "));for(int i=60; i>0; i--)tone (buzzer,1800);lcd.set
Cursor (13,1); lcd.print(i);lcd.print(F(" "));delay (1000);no
Tone (buzzer);alarm
Stat = 0;alarm = 0;
Giải ưng ý code RFID RC-522
bool access = false;int alarm = 0;uint8_t alarmStat = 0;uint8_t max
Error = 5;Biến access chất vấn quyền truy vấn của người dùng được khẳng định bằng thẻ RFID.Biến alarm lưu lại số lần truy vấn bị khước từ và sẽ kích hoạt chế độ khóa khối hệ thống nếu vượt quá max
Error.Biến alarm
Stat khắc ghi trạng thái khóa hệ thống, khi bởi 0, khối hệ thống sẵn sàng cho những người dùng quét thẻ. Khi bởi 1, hệ thống đã biết thành khóa.Biến max
Error là giá bán trị buổi tối đa có thể chấp nhận được số lần truy cập bị khước từ trước khi hệ thống bị khóa.void setup() Serial.begin(9600); lcd.begin(); SPI.begin(); rfid.init(); pin
Mode(door
Lock, OUTPUT); digital
Write(door
Lock, HIGH); tone (buzzer,1200); lcd.set
Cursor (0,0); lcd.print(F(" RFID System ")); lcd.set
Cursor (0,1); lcd.print(F(" Control Access ")); delay (2000); lcd.clear(); no
Tone (buzzer);Trong hàm setup(), các chức năng quan trọng được khởi tạo, bao gồm:Khởi tạo liên kết Serial cùng với baudrate là 9600.Khởi tạo kết nối SPI.Khởi tạo module RFID.Cấu hình chân điều khiển khóa cửa là chân đầu ra.Thiết lập quý hiếm mặc định mang lại chân điều khiển khóa cửa.Phát ra âm thanh lưu ý với tần số 1200 Hz.Hiển thị thông tin trên screen LCD vào khoảng thời gian 2 giây.Xóa màn hình LCD.Tắt âm thanh cảnh báo.
void loop() if (alarm >= max
Error) alarm
Stat = 1; if (alarm
Stat == 0) lcd.set
Cursor (0,0); lcd.print(F(" -System Ready- ")); lcd.set
Cursor (0,1); lcd.print(F(" Scan Your thẻ ")); if(rfid.is
Card()) if(rfid.read
Card
Serial()) Serial.print(rfid.ser
Num<0>); Serial.print(" "); Serial.print(rfid.ser
Num<1>); Serial.print(" "); Serial.print(rfid.ser
Num<2>); Serial.print(" "); Serial.print(rfid.ser
Num<3>); Serial.print(" "); Serial.print(rfid.ser
Num<4>); Serial.println(""); for(int x = 0; x 0; i--) lcd.set
Cursor (15,1); lcd.print(i); delay (1000); digital
Write(door
Lock, HIGH); lcd.clear(); else alarm = alarm+1; Serial.println("Not allowed!"); lcd.set
Cursor (0,0); lcd.print(F(" Akses ditolak ")); lcd.set
Cursor (0,1); lcd.print("ID:"); lcd.print(rfid.ser
Num<0>); lcd.print(rfid.ser
Num<1>); lcd.print(rfid.ser
Num<2>); lcd.print(rfid.ser
Num<3>); lcd.print(rfid.ser
Num<4>); tone (buzzer,900); delay(200); no
Tone(buzzer); delay(200); tone (buzzer,900); delay(200); no
Tone (buzzer); delay(500); lcd.clear(); rfid.halt();else lcd.set
Cursor (0,0); lcd.print(F("-System LOCKED- ")); lcd.set
Cursor (0,1); lcd.print(F(" Please Wait "));for(int i=60; i>0; i--)tone (buzzer,1800);lcd.set
Cursor (13,1); lcd.print(i);lcd.print(F(" "));delay (1000);no
Tone (buzzer);alarm
Stat = 0;alarm = 0; Phần loop() là phần thiết yếu của chương trình, nó đang kiểm tra những thẻ được chuyển vào và khẳng định liệu chúng gồm hợp lệ để truy vấn hay không. Ví như thẻ được xác minh là phù hợp lệ, khối hệ thống sẽ mở khóa và có thể chấp nhận được người dùng truy cập vào quanh vùng đã được thiết lập đặt. Nếu như thẻ không được khẳng định là phù hợp lệ, khối hệ thống sẽ đo lường và thống kê số lần truy vấn không hợp lệ cùng phát ra biểu đạt cảnh báo. Ví như số lần truy vấn không thích hợp lệ vượt quá số lượng giới hạn cho phép, khối hệ thống sẽ bị khóa với không có thể chấp nhận được truy cập trong một khoảng thời hạn nhất định.
Thư viện
Kết luận
Trong nội dung bài viết này, chúng ta đã tò mò về khối hệ thống khóa cửa ngõ thông minh sử dụng RFID RC-522 sử dụng Arduino. Vấn đề ứng dụng technology RFID vào trong các khối hệ thống khóa cửa ngõ thông minh là rất quan trọng và đem về nhiều lợi ích. Với kỹ năng đọc và chính xác thẻ cấp tốc chóng, độ đúng mực cao hệ thống này sẽ là một trong những giải pháp an ninh và thuận tiện trong việc làm chủ cửa ra vào. Vì vậy, nếu như khách hàng đang tìm kiếm kiếm một giải pháp khóa cửa ngõ thông minh an toàn, dễ áp dụng và hiệu quả, hệ thống khóa cửa RFID Arduino là 1 lựa lựa chọn tuyệt vời giành riêng cho bạn.