<h1>아두이노 전자 도어락 시스템 만들기 – RFID + 부저 + 서보모터로 출입 제어 구현하기</h1>
<p>
<strong>현관문도 아두이노로 제어할 수 있을까?</strong><br>
이번 글에서는 <strong>RC522 RFID 카드 리더</strong>, <strong>피에조 부저</strong>, <strong>SG90 서보모터</strong>를 이용해
실제처럼 작동하는 전자식 도어락 시스템을 만들어보겠습니다.<br>
RFID 카드가 등록된 UID와 일치하면 서보모터가 회전하며 "문 열림"을 구현하고,
그 외 카드는 거부음과 함께 출입이 차단됩니다.
</p>
<!-- 광고 영역 1 -->
<div style="margin: 30px 0; text-align: center;">
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8362837465904837" crossorigin="anonymous"></script>
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-8362837465904837"
data-ad-slot="5674748480"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
</div>
<h2>📦 준비물</h2>
<ul>
<li>아두이노 UNO</li>
<li>RC522 RFID 리더기</li>
<li>RFID 카드 또는 키태그</li>
<li>SG90 서보모터</li>
<li>피에조 부저</li>
<li>점퍼 와이어, 브레드보드</li>
</ul>
<h2>🔐 시스템 구성도</h2>
<ul>
<li>✔️ RFID 카드 인식 → UID 확인</li>
<li>✔️ 등록된 UID면 서보모터 90도 (문 열림)</li>
<li>✖️ 미등록 UID면 부저 울림 (출입 차단)</li>
</ul>
<h2>⚙️ 핀 연결 요약</h2>
<table border="1" cellpadding="5">
<thead>
<tr><th>모듈</th><th>핀</th><th>아두이노 핀</th></tr>
</thead>
<tbody>
<tr><td>RC522</td><td>SDA</td><td>D10</td></tr>
<tr><td></td><td>SCK</td><td>D13</td></tr>
<tr><td></td><td>MOSI</td><td>D11</td></tr>
<tr><td></td><td>MISO</td><td>D12</td></tr>
<tr><td></td><td>RST</td><td>D9</td></tr>
<tr><td>서보모터</td><td>Signal</td><td>D6</td></tr>
<tr><td>부저</td><td>+</td><td>D5</td></tr>
</tbody>
</table>
<h2>💻 전체 코드 예제</h2>
<pre><code>#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#define SS_PIN 10
#define RST_PIN 9
#define BUZZER_PIN 5
#define SERVO_PIN 6
MFRC522 rfid(SS_PIN, RST_PIN);
Servo servo;
String masterUID = "F1043B2A"; // 여러분 카드의 UID를 여기 입력하세요
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
pinMode(BUZZER_PIN, OUTPUT);
servo.attach(SERVO_PIN);
servo.write(0); // 기본 잠금 상태
}
void loop() {
if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) return;
String uid = "";
for (byte i = 0; i < rfid.uid.size; i++) {
uid += String(rfid.uid.uidByte[i], HEX);
}
uid.toUpperCase();
Serial.println("UID: " + uid);
if (uid == masterUID) {
Serial.println("▶ 출입 허용");
tone(BUZZER_PIN, 1000, 200);
servo.write(90); // 문 열림
delay(3000);
servo.write(0); // 문 닫힘
} else {
Serial.println("✖ 출입 거부");
for (int i = 0; i < 3; i++) {
tone(BUZZER_PIN, 300, 150);
delay(150);
noTone(BUZZER_PIN);
delay(100);
}
}
rfid.PICC_HaltA();
delay(1000);
}
</code></pre>
<!-- 광고 영역 2 -->
<div style="margin: 30px 0; text-align: center;">
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8362837465904837" crossorigin="anonymous"></script>
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-8362837465904837"
data-ad-slot="5674748480"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
</div>
<h2>🧠 확장 아이디어</h2>
<ul>
<li>📦 EEPROM에 여러 UID 등록</li>
<li>📆 RTC 모듈 연동 → 시간 제한 출입</li>
<li>🌐 블루투스/앱 연동으로 출입 기록 확인</li>
<li>🔒 서보모터 대신 전자자석 자물쇠 사용</li>
</ul>
<h2>✅ 마무리</h2>
<p>
전자 도어락은 단순한 센서 조합만으로도 실용적인 시스템을 만들 수 있는 대표적인 아두이노 프로젝트입니다.<br>
실제 보안 기초 개념도 배울 수 있고, 부저 + 서보모터 조합으로 피드백까지 주면 훨씬 완성도 높은 시스템이 됩니다.<br>
이제 여러분도 집 문에 직접 만든 RFID 도어락을 설치해보세요!
</p>
<hr>
<p><em>Arduino 시리즈 21편 | 작성자: YT</em></p>
'아두이노' 카테고리의 다른 글
Nextion + 아두이노 통신 명령어 종합 가이드 – 텍스트, 버튼, 페이지 전환까지 완벽 정리 (0) | 2025.04.19 |
---|---|
아두이노 + USART HMI LCD 사용법 – Nextion LCD로 터치 UI 만들기 (0) | 2025.04.19 |
아두이노 시프트 레지스터 74HC165 입력 확장 가이드 – 버튼 8개 이상 제어하는 법 (1) | 2025.04.19 |
아두이노 시프트 레지스터 74HC595 제어 가이드 – LED 출력 확장과 멀티 연결 완벽 설명 (0) | 2025.04.19 |
아두이노 + MAX31855로 K-Type 써모커플 온도 측정하기 – SPI 방식 온도 센서 예제 (0) | 2025.04.19 |