개발이야기

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

게임교수 2025. 3. 31. 16:36
반응형

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. 테스트 및 실행

  1. ESP32-CAM 업로드 완료 후, IO0을 GND에서 해제하고 재부팅
  2. 시리얼 모니터로 IP 주소 확인 후 브라우저 접속
  3. 얼굴 등록 → 얼굴 인식 → GPIO14 제어
  4. 서보모터 회전 확인 (문 개방 시도)

🛠️ 8. 확장 기능 제안

  • 🔒 얼굴 인식 + RFID 카드 복합 인증
  • 🧠 음성 피드백 추가 (DFPlayer Mini)
  • 📷 얼굴 데이터 클라우드 업로드 (Firebase 등)
  • 🕒 출입 시간 기록 및 통계
  • 📱 스마트폰 알림 기능 연동 (IFTTT, Blynk)
  • 👨‍👩‍👧‍👦 사용자별 권한 관리 및 알림

💡 9. 제작 팁

  • 전원 부족 시 재부팅 → 외부 5V 2A 이상 권장
  • 밝기 부족 시 인식률 저하 → IR LED 활용
  • 얼굴 인식은 20~50cm 거리에서 가장 안정적
  • 브라우저는 크롬 사용 권장, 모바일 접속도 가능

🧠 10. 마무리하며 이제 얼굴이 열쇠가 되는 시대, 누구나 직접 만들 수 있습니다. ESP32-CAM은 가격도 저렴하고 기능도 강력하여, 보안 시스템 구축에 더없이 훌륭한 도구입니다. 직접 만들어보면, 보안의 본질은 '기술'이 아니라 '주인의 의지'라는 것을 느낄 수 있습니다. 얼굴 인식 기반 스마트 도어 시스템, 이제 형님의 손끝에서 구현해보세요!

📌 출처: ythouse.tistory.com

반응형