본문 바로가기
아두이노

Arduino를 사용한 DIY RFID 도어록 시스템 만들기

by 모빌리티키즈 2025. 3. 10.
728x90
반응형

사무실에서 카드 스와이프를 통해 열리는 도어 시스템을 본 적이 있나요? 놀랍게도, 집에서도 Arduino를 사용하여 RFID 도어록 시스템을 간단하게 만들 수 있습니다. 이 프로젝트는 저렴하고 재미있을 뿐만 아니라 스마트 홈 자동화의 첫걸음이 될 수 있습니다.

프로젝트 개요

이 RFID 도어록 시스템의 핵심은 등록된 RFID 카드의 ID를 확인하여 잠금을 제어하는 것입니다. 시스템은 다음과 같은 방식으로 작동합니다:

  1. RFID 카드를 RFID 리더 근처에 가져옵니다.
  2. 시스템이 카드의 고유 ID를 저장된 데이터와 비교합니다.
  3. ID가 일치하면 솔레노이드 잠금 장치가 열리며 문이 열립니다.
  4. 그렇지 않은 경우 문은 잠긴 상태로 유지되어 보안을 강화합니다.

이 방식은 편리함과 보안을 모두 충족하는 훌륭한 해결책입니다.

 

필요한 재료

이 프로젝트에 필요한 도구는 아래와 같습니다:

  • Arduino UNO R3 개발 보드
  • RC522 RFID 리더 및 RFID 카드/태그
  • 솔레노이드 도어록
  • 단일 채널 릴레이 모듈
  • 16x2 I2C LCD 디스플레이 (선택 사항)
  • 점퍼 와이어 및 브레드보드
  • 전원 공급 어댑터

이 모든 것은 저렴한 가격에 구할 수 있으며, 대부분의 DIY 전자 프로젝트 키트에서 찾아볼 수 있습니다.

설치 및 코드 작성

이제 설치와 코딩의 순서입니다:

  1. 각 부품을 Arduino 보드와 적절히 연결하세요.
  2. RFID 리더로부터 카드의 고유 ID를 읽고, Arduino IDE를 통해 ID를 등록합니다.
  3. 릴레이 모듈을 사용하여 솔레노이드 잠금을 제어하는 코드를 작성합니다.
  4. LCD 디스플레이를 사용하여 상태를 표시하면 더욱 직관적인 사용자 경험을 제공합니다.

인터넷에는 이런 프로젝트를 위한 튜토리얼과 샘플 코드가 많으니 이를 참고하여 시작할 수 있습니다.

응용 프로그램과 확장 아이디어

이 프로젝트는 다양한 실제 응용 프로그램에 활용할 수 있습니다:

  • 가정 보안 시스템으로 활용
  • 사무실 출입 관리
  • 맞춤형 사물함 잠금장치

공급

  1. Arduino UNO R3 개발 보드
  2. RC522 RFID 리더
  3. RFID 카드 또는 태그
  4. 솔레노이드 도어록
  5. 단일 채널 릴레이 모듈
  6. 16x2 I2C LCD 디스플레이
  7. 점퍼 와이어
  8. 전원 공급 장치 어댑터

1단계: Arduino RFID 도어록 시스템의 회로도 그리기

위의 RFID 도어록 시스템 회로도는 Arduino, RFID 모듈, 릴레이 모듈, 솔레노이드 잠금 장치 및 LCD 디스플레이가 연결되어 안전하고 자동화된 도어록 시스템을 만드는 방법을 나타냅니다.

여전히 어떤 핀에 어떤 핀을 연결하고 싶습니까? 걱정하지 마세요, 표 형식으로 배선 핀아웃 연결에 대해 자세히 언급한 제 공식 문서에 연락해 주십시오.

2단계: 하드웨어를 설정하는 동안 손을 더럽히십시오.

 

보시다시피 하드웨어 연결은 매우 쉽고 간단합니다. 우리는 이 프로젝트의 주요 두뇌 역할을 하는 Arduino UNO 보드를 가지고 있습니다. RC522 RFID 리더 모듈은 RFID 카드를 읽는 데 사용되며 16x2 LCD는 상태 정보를 표시하는 데 사용됩니다. 12V 솔레노이드 잠금 장치는 릴레이 모듈을 통해 Arduino UNO 보드에 연결됩니다. 설정은 12V 리튬 배터리 팩을 구입하여 프로젝트를 휴대하고 쉽게 설치할 수 있도록 전원이 공급되며 실용적인 목적을 위해 12V 어댑터를 선택할 수 있습니다.

우리는 이전에 많은 RFID 기반 프로젝트를 구축했으며, 완전히 새로운 RFID이고 RFID의 기본 사항과 Arduino와 어떻게 작동하는지 이해하고 싶다면 이 프로젝트를 진행하기 전에 Arduino RFID 자습서를 읽을 수 있습니다.

3단계: Arduino RFID 도어록 시스템에 대한 코드 작성

내가 제공한 아래 코드로 이동하기 전에 먼저 승인된 RFID 태그 UID 값에 대해 알고 싶습니다. RFID 도어록이 승인된 RFID 태그를 승인되지 않은 RFID 태그 그룹과 구별할 수 있도록 하는 것이 필수적입니다.

승인된 RFID 태그의 UID 세부 정보를 알아보려면 RFID 카드 UID 값을 스캔하기 위한 완전한 코드를 제공하는 공식 문서를 확인할 수 있습니다.

덤프 한 후에는 위의 이미지와 같이 직렬 모니터와 디스플레이에서 스캔 한 RFID 태그 UID 값을 볼 수 있습니다. 해당 UID 값을 복사하여 아래 코드의 "byte authorizedUID[] = {0x69, 0xA9, 0x81, 0x5A}; "위 이미지와 같이 변수입니다.

 

#include <MFRC522.h>
#include <LiquidCrystal_I2C.h>

// Define RC522 pins
#define RST_PIN 9
#define SS_PIN 10

// Relay pin
#define RELAY_PIN 8

// Initialize MFRC522 instance
MFRC522 rfid(SS_PIN, RST_PIN);

// Initialize LCD (address 0x27 may vary)
LiquidCrystal_I2C lcd(0x27, 16, 2);


// Authorized UID (replace with your tag's UID)
byte authorizedUID[] = {0x69, 0xA9, 0x81, 0x5A};

// Door status
bool doorLocked = true;

void setup() {
// Initialize SPI and RC522
SPI.begin();
rfid.PCD_Init();

// Initialize LCD
lcd.init();
lcd.backlight();

// Set up relay pin
pinMode(RELAY_PIN, OUTPUT);

// Display startup message
lcd.setCursor(0, 0);
lcd.print("RFID Door Lock");
delay(2000);
lcd.clear();
lockDoor(); // Start with door locked
}

void loop() {
// Check if a new RFID card is present
if (!rfid.PICC_IsNewCardPresent()) {
return;
}

// Check if the RFID card can be read
if (!rfid.PICC_ReadCardSerial()) {
return;
}

// Display scanned UID
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Scanning...");
delay(2000);

// Compare scanned UID with authorized UID
if (isAuthorized(rfid.uid.uidByte, rfid.uid.size)) {
lcd.setCursor(0, 1);
lcd.print("Access Granted!");
delay(2000);
unlockDoor(); // Lock or unlock the door
} else {
lcd.setCursor(0, 1);
lcd.print("Access Denied!");
delay(2000);
lockDoor();
}

// Halt communication with the card
rfid.PICC_HaltA();
}

// Function to check if UID matches authorized UID
bool isAuthorized(byte *uid, byte size) {
if (size != sizeof(authorizedUID)) {
return false;
}

for (byte i = 0; i < size; i++) {
if (uid[i] != authorizedUID[i]) {
return false;
}
}
return true;
}

// Function to lock the door
void lockDoor() {
digitalWrite(RELAY_PIN, LOW); // Turn OFF relay (lock engaged)
doorLocked = true;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Door Locked");
delay(2000);
}

// Function to unlock the door
void unlockDoor() {
digitalWrite(RELAY_PIN, HIGH); // Turn ON relay (unlock door)
doorLocked = false;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Door Unlocked");
delay(10000); // Keep door unlocked for 5 seconds
lockDoor(); // Auto-lock after 5 seconds
}

이것은 RFID 도어록 시스템의 주요 코드이므로 UID를 Authorized Tag UID 값으로 바꿔야 합니다.

4단계: 위의 코드를 Arduino에 업로드

"byte authorizedUID[] = {0x69, 0xA9, 0x81, 0x5A}; " 를 바꾼 후귀하의 승인 된 RFID 태그 UID 값으로. 위의 코드를 Arduino에 덤프 할 수 있습니다.

5 단계 : RFID 도어록 시스템을 테스트 할 수 있습니다.

드디어 가장 흥미로운 단계, 즉 Arduino를 사용한 RFID 도어록 시스템의 최종 테스트에 들어섰습니다!

위의 이미지에서 Authorized RFID 태그를 스캔한 후 액세스 권한을 부여하고 솔레노이드 도어록을 잠금 해제하는 것을 볼 수 있습니다.

초보자이든 숙련된 제작자이든 상관없이 이 DIY RFID 도어록 시스템을 사용하면 RFID 리더에 대해 재미있고 간단하게 배울 수 있습니다. 나만의 건물을 만들 준비가 되셨나요? 시작하려면 ARDUINO를 사용하여 DIY RFID DOOR LOCK SYSTEM 만들기에 대한 자세한 가이드를 확인하세요!

 

728x90
반응형