• HOME
  • DỰ ÁN & MẠCH ĐIỆN
    • Lập trình
      • ARDUINO PROJECT
      • ESP8266 PROJECT
      • ESP32 PROJECT
      • RASPBERRY PI PROJECT
      • Vi điều khiển
    • Điện tử ứng dụng
      • Audio / Amplifiers
      • Nguồn điện
      • Pin sạc/Acquy và mạch sạc
      • Biến đổi AC và DC
      • Robotic
      • Cảm biến
      • LED
      • LCD
      • Động cơ bước
      • Mạch linh tinh
      • Test & Measurement
      • RF – FM
    • Nixie Clock
    • HOME AUTOMATION
    • Dân dụng
    • Công nghiệp
  • KIẾN THỨC CĂN BẢN
    • Điện tử cơ bản
    • Điện tử số
    • PCB
    • Nixie Tube
    • Raspberry Pi
    • Vi điều khiển
    • Arduino
    • IN 3D
  • DOWNLOAD
    • Phần mềm điện tử
    • Giáo trình
      • Giáo trình Điện – Điện tử
      • Giáo trình Tự Động Hóa
      • Giáo trình Viễn thông
    • Đề tài
      • Đề tài – Điện – Điện Tử
      • Đề tài – Tự Động Hóa
      • Đề tài – Viễn thông
    • Điện tử ứng dụng
    • Tài liệu nước ngoài
    • Hướng dẫn, sửa chữa
    • Sơ đồ, nguyên lý thiết bị
    • Tiêu chuẩn – Đo lường – Thử nghiệm
    • Datasheet
  • LIÊN HỆ
  • SẢN PHẨM

Mạch Điện Lý Thú

Sơ đồ nguyên lý, PCB, đồ án, tài liệu, DIY

Trang chủ » DỰ ÁN & MẠCH ĐIỆN » Lập trình » ARDUINO PROJECT » Hệ thống khóa cửa thông minh sử dụng RFID RC-522 và Arduino

Hệ thống khóa cửa thông minh sử dụng RFID RC-522 và Arduino

28/12/2025 by admin Để lại bình luận

Đã được đăng vào 13/12/2019 @ 13:16

Nội dung bài viết hôm nay mình sẽ hướng dẫn cho các bạn cách làm một hệ thống khóa cửa thông minh với RFID RC-522 sử dụng Arduino để bảo vệ ngôi nhà của mình.

Để hiểu hơn về cấu tạo và cách hoạt động của tất cả cảm biến có trong dự án .Các bạn có thể tìm đọc bài viết về Arduino miễn phí dành cho người mới nhập môn.

Xem thêm:

  • Chế tạo gương thông minh
  • Hệ thống điều khiển thiết bị nhà thông minh sử dụng NodeMCU ESP8266 và App Blynk

Sơ đồ đấu nối

Mục lục hiện
Sơ đồ đấu nối
Các linh kiện cần thiết cho dự án
Code
Thư viện

Các linh kiện cần thiết cho dự án

Tên linh kiện Số lượng
 Arduino Uno 1
RFID RC- 522 1
Loa 1
Relay 1
LCD16X2 1
Board I2C LCD16X2 1
Khóa Chốt Điện 1
Nguồn Adapter 12V/1A 1

Code

#include <RFID.h>
#include <Wire.h>  // i2C Conection Library
#include <LiquidCrystal_I2C.h>  //Memanggil i2C LCD Library
LiquidCrystal_I2C lcd(0x3F, 16, 2);
/*
Sambungan Module RFID RC-522 ke Arduino
* MOSI: Pin 11
* MISO: Pin 12
* SCK : Pin 13
* SS/SDA: Pin 10
* RST: Pin 9
* RQ: Tidak digunakan
*/
#include <SPI.h>
#include <RFID.h>
#define SS_PIN 10
#define RST_PIN 9

RFID rfid(SS_PIN,RST_PIN);

const int buzzer = 7;   //Passive buzzer ke Pin D7 dan GND
const int doorLock = 8; //Driver Selenoid Door Lock/Relay input ke pin D8
int serNum[5];          //Variable buffer Scan Card

int cards[][5] = {      //ID Kartu yang diperbolehkan masuk
  {141,125,2,197,55}
  
};

bool access = false;

int alarm = 0;
uint8_t alarmStat = 0;
uint8_t maxError = 5;
void setup(){
    Serial.begin(9600);
    lcd.begin();
    SPI.begin();
    rfid.init();

    pinMode(doorLock, OUTPUT);
    digitalWrite(doorLock, HIGH);

  tone (buzzer,1200);
  lcd.setCursor (0,0);
  lcd.print(F("  RFID System   "));
  lcd.setCursor (0,1);
  lcd.print(F(" Control Access "));
  delay (2000);
  lcd.clear();
  noTone (buzzer);
}

void loop(){
  if (alarm >= maxError){
    alarmStat = 1;    }
  
  if (alarmStat == 0){
  lcd.setCursor (0,0);
  lcd.print(F(" -System Ready- "));
  lcd.setCursor (0,1);
  lcd.print(F(" Scan Your Card "));

    if(rfid.isCard()){
    
        if(rfid.readCardSerial()){
            Serial.print(rfid.serNum[0]);
            Serial.print(" ");
            Serial.print(rfid.serNum[1]);
            Serial.print(" ");
            Serial.print(rfid.serNum[2]);
            Serial.print(" ");
            Serial.print(rfid.serNum[3]);
            Serial.print(" ");
            Serial.print(rfid.serNum[4]);
            Serial.println("");
            
            for(int x = 0; x < sizeof(cards); x++){
              for(int i = 0; i < sizeof(rfid.serNum); i++ ){
                  if(rfid.serNum[i] != cards[x][i]) {
                      access = false;
                      break;
                  } else {
                      access = true;
                  }
              }
              if(access) break;
            }   
        }
        
       if(access){
          Serial.println("Welcome!");
          lcd.setCursor (0,0);
          lcd.print(F(" Akses diterima "));
          lcd.setCursor (0,1);
          lcd.print("ID:");
          lcd.print(rfid.serNum[0]); lcd.print(rfid.serNum[1]);
          lcd.print(rfid.serNum[2]); lcd.print(rfid.serNum[3]);
          lcd.print(rfid.serNum[4]);
           digitalWrite(doorLock, LOW);
           tone (buzzer,900);
           delay(100);
           tone (buzzer,1200);
           delay(100);
           tone (buzzer,1800);
           delay(200);
           noTone(buzzer);  
           delay(600);
           lcd.setCursor (0,0);
           lcd.print(F(" Silahkan Masuk "));
           lcd.setCursor (0,1);
           lcd.print(F("AutoLock after "));
           for(int i=5; i>0; i--){
            lcd.setCursor (15,1); lcd.print(i);
            delay (1000);
           }
           digitalWrite(doorLock, HIGH);
           lcd.clear();
      } else {
           alarm = alarm+1;
           Serial.println("Not allowed!"); 
           lcd.setCursor (0,0);
           lcd.print(F(" Akses ditolak  "));
           lcd.setCursor (0,1);
           lcd.print("ID:");
           lcd.print(rfid.serNum[0]); lcd.print(rfid.serNum[1]);
           lcd.print(rfid.serNum[2]); lcd.print(rfid.serNum[3]);
           lcd.print(rfid.serNum[4]);
           tone (buzzer,900);
           delay(200);
           noTone(buzzer);
           delay(200);
           tone (buzzer,900);
           delay(200);
           noTone (buzzer);  
           delay(500);
           lcd.clear();      
       }        
    }

    rfid.halt();
}
else {
  lcd.setCursor (0,0);
  lcd.print(F("-System LOCKED- "));
  lcd.setCursor (0,1);
  lcd.print(F(" Please Wait "));
for(int i=60; i>0; i--){
tone (buzzer,1800);
lcd.setCursor (13,1); lcd.print(i);
lcd.print(F("  "));delay (1000);}
noTone (buzzer);
alarmStat = 0;
alarm = 0;
  }
}

 

Thư viện

  • Các bạn có thể tải code tìm địa chỉ bus ở đây: Tải ngay.
  • Thư viện LiquidCrystal_I2C.h: Tải ngay.

Nguồn: arduinokit.vn

5/5 - (2 bình chọn)
  • Chia sẻ lên Facebook
  • Chia sẻ lên Twitter
  • Chia sẻ lên LinkedIn

Thuộc chủ đề:ARDUINO PROJECT, HOME AUTOMATION, LCD Tag với:arduino, cơ bản, code, cửa, khóa, lcd, LCD1602, RFID, thông minh

Bài viết trước « Mạch chuyển đổi RS232 – RS485 cho PC, Board
Bài viết sau Các mạch điện tử lý thú by minhdt »

Reader Interactions

Để lại một bình luận Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Sidebar chính

Zalo hỏi đáp 24/7

Theo dõi qua mạng xã hội

  • Facebook

Bạn đang tìm gì?

Bài viết mới nhất

Bảng tra tham số IGBT

Bảng tra tham số IGBT

16/01/2026

Hướng dẫn cài đặt IAR Embedded Workbench cho 8051

16/01/2026

Bảng tra Varistor phần tử bảo vệ quá áp

Bảng tra Varistor phần tử bảo vệ quá áp

16/01/2026

Mạch khuyếch đại có độ méo thấp

Mạch khuếch đại có độ méo thấp

16/01/2026

Thông số dây quấn cách điện cho máy biến áp và cuộn kháng

Thông số dây quấn cách điện cho máy biến áp và cuộn kháng

15/01/2026

Danh mục

  • DỰ ÁN & MẠCH ĐIỆN (241)
    • Công nghiệp (16)
    • Dân dụng (29)
    • Điện tử ứng dụng (178)
      • Audio / Amplifiers (34)
      • Biến đổi AC và DC (24)
      • Cảm biến (40)
      • Động cơ bước (5)
      • Kiểm thử và đo đạc (23)
      • LCD (15)
      • LED (20)
      • Mạch linh tinh (27)
      • Nguồn điện (42)
      • Pin sạc/Acquy và mạch sạc (24)
      • RF – FM (5)
      • Robotic (2)
    • HOME AUTOMATION (23)
    • Lập trình (82)
      • ARDUINO PROJECT (39)
      • ESP32 PROJECT (6)
      • ESP8266 PROJECT (17)
      • RASPBERRY PI PROJECT (9)
      • Vi điều khiển (24)
    • Nixie Clock (3)
  • Kiến thức căn bản (168)
    • Arduino (36)
    • Điện tử cơ bản (77)
    • Điện tử số (9)
    • IN 3D (9)
    • Nixie Tube (13)
    • PCB (16)
    • Raspberry Pi (10)
    • Vi điều khiển (16)

Footer

Bài viết mới nhất

  • Bảng tra tham số IGBT
  • Hướng dẫn cài đặt IAR Embedded Workbench cho 8051
  • Bảng tra Varistor phần tử bảo vệ quá áp
  • Mạch khuếch đại có độ méo thấp
  • Thông số dây quấn cách điện cho máy biến áp và cuộn kháng
  • Mạch điều chỉnh âm lượng (Audio Fader)

Bình luận mới nhất

  • Hè trong IC 4017 và ứng dụng 555 với 4017
  • Dương trong Mua đồng hồ vạn năng loại kim hay số?
  • admin trong Tự chế mỏ hàn xung cao tần 12v nhỏ gọn
  • admin trong Tự làm KIT thực hành Arduino

Tìm kiếm

Tất cả nội dung trên website chỉ dùng để tham khảo. Chúng tôi không chịu trách nhiệm về thông tin thành viên đăng tải lên website và xóa bài viết khi có vi phạm bản quyền tác giả.