ESP32-CAM으로 얼굴 인식 도어락 만들기 – IoT 보안 시스템 완성!

🔐 들어가며 지문이나 비밀번호는 더 이상 안전하지 않습니다. 이제는 얼굴이 열쇠가 되는 시대! 본 프로젝트에서는 ESP32-CAM을 활용하여 실시간 얼굴 인식 기반의 스마트 도어락을 구현합니다. 아두이노와 딥러닝 기반 라이브러리의 조합으로, 저비용으로도 강력한 보안 시스템을 직접 구축해보세요. 얼굴을 인식하고 자동으로 문을 여는, 영화에서나 보던 기술이 이제 내 손안에 들어옵니다.
🧰 1. 준비물
부품명 설명
| ESP32-CAM 모듈 | WiFi + 카메라 내장 마이크로컨트롤러 |
| FTDI232 USB to TTL | ESP32-CAM 업로드용 시리얼 변환기 |
| SG90 서보모터 | 도어 개폐 제어용 |
| 점퍼 케이블 | 연결용 |
| 브레드보드 | 테스트 구성용 |
| 5V 전원 (1A 이상) | 안정적인 작동을 위한 외부 전원 |
🔌 2. 하드웨어 연결
장치 ESP32-CAM 핀
| 서보모터 VCC | 5V (외부 전원 권장) |
| 서보모터 GND | GND |
| 서보모터 PWM | GPIO 14 |
| FTDI VCC | 5V |
| FTDI GND | GND |
| FTDI TX | U0R |
| FTDI RX | U0T |
| GPIO 0 (IO0) | GND로 연결 후 업로드 모드 |
💻 3. 개발 환경 준비
- 아두이노 IDE 설치
- 보드 매니저에 ESP32 URL 추가 후 보드 설치
- ESP32-CAM 보드 선택, Flash Size: 4MB
- "ESP32" > "AI Thinker ESP32-CAM" 선택
📦 4. 얼굴 인식 라이브러리 구성 ESP32-CAM에는 자체 얼굴 감지 및 인식 라이브러리가 포함되어 있습니다. 웹 서버 형태로 실행되며, 사용자가 등록되면 해당 얼굴과 일치하는 경우 특정 GPIO 핀을 통해 서보모터를 제어할 수 있습니다.
📜 5. 기본 코드 개요
- 얼굴 등록 기능 내장 (최대 7명)
- HTTP 웹캠 페이지 자동 생성
- 얼굴 인식 성공 시 GPIO14 핀 HIGH → 서보 개방
- 일정 시간 후 자동 잠금
🧾 6. 얼굴 인식 기반 도어락 코드
#include "esp_camera.h"
#include <WiFi.h>
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
#define SERVO_PIN 14
void startCameraServer();
void setup() {
Serial.begin(115200);
camera_config_t config;
config.ledc_channel = LEDC_CHANNEL_0;
config.ledc_timer = LEDC_TIMER_0;
config.pin_d0 = 5;
config.pin_d1 = 18;
config.pin_d2 = 19;
config.pin_d3 = 21;
config.pin_d4 = 36;
config.pin_d5 = 39;
config.pin_d6 = 34;
config.pin_d7 = 35;
config.pin_xclk = 0;
config.pin_pclk = 22;
config.pin_vsync = 25;
config.pin_href = 23;
config.pin_sscb_sda = 26;
config.pin_sscb_scl = 27;
config.pin_pwdn = 32;
config.pin_reset = -1;
config.xclk_freq_hz = 20000000;
config.pixel_format = PIXFORMAT_JPEG;
config.frame_size = FRAMESIZE_QVGA;
config.fb_count = 1;
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
Serial.printf("Camera init failed: 0x%x", err);
return;
}
pinMode(SERVO_PIN, OUTPUT);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
startCameraServer();
}
void loop() {
// 웹 페이지로 제어하므로 별도 loop 없음
}
🧪 7. 테스트 및 실행
- ESP32-CAM 업로드 완료 후, IO0을 GND에서 해제하고 재부팅
- 시리얼 모니터로 IP 주소 확인 후 브라우저 접속
- 얼굴 등록 → 얼굴 인식 → GPIO14 제어
- 서보모터 회전 확인 (문 개방 시도)
🛠️ 8. 확장 기능 제안
- 🔒 얼굴 인식 + RFID 카드 복합 인증
- 🧠 음성 피드백 추가 (DFPlayer Mini)
- 📷 얼굴 데이터 클라우드 업로드 (Firebase 등)
- 🕒 출입 시간 기록 및 통계
- 📱 스마트폰 알림 기능 연동 (IFTTT, Blynk)
- 👨👩👧👦 사용자별 권한 관리 및 알림
💡 9. 제작 팁
- 전원 부족 시 재부팅 → 외부 5V 2A 이상 권장
- 밝기 부족 시 인식률 저하 → IR LED 활용
- 얼굴 인식은 20~50cm 거리에서 가장 안정적
- 브라우저는 크롬 사용 권장, 모바일 접속도 가능
🧠 10. 마무리하며 이제 얼굴이 열쇠가 되는 시대, 누구나 직접 만들 수 있습니다. ESP32-CAM은 가격도 저렴하고 기능도 강력하여, 보안 시스템 구축에 더없이 훌륭한 도구입니다. 직접 만들어보면, 보안의 본질은 '기술'이 아니라 '주인의 의지'라는 것을 느낄 수 있습니다. 얼굴 인식 기반 스마트 도어 시스템, 이제 형님의 손끝에서 구현해보세요!
📌 출처: ythouse.tistory.com
'개발이야기' 카테고리의 다른 글
| 아두이노로 만드는 IoT 조명 시스템 – 자동화부터 원격제어까지 (0) | 2025.03.31 |
|---|---|
| 아두이노 스마트 미러 만들기 – 실시간 날씨·시간·뉴스를 한눈에! (0) | 2025.03.31 |
| 도어락 해킹? 내가 만든 아두이노 보안 시스템으로 끝! (0) | 2025.03.31 |
| 아두이노로 만드는 스마트 홈 – 자동화의 모든 것 (0) | 2025.03.31 |
| 아두이노에 ChatGPT를 연결해봤습니다 – AI와 대화하는 나만의 스마트 디바이스 만들기 (0) | 2025.03.31 |