본문으로 건너뛰기

사용자 가이드 및 운영 (User Guide and Operation)

이 문서는 2FA Smart Door Lock System의 표준 운영 절차와 인증 흐름을 최종 사용자와 관리자 관점에서 설명한다.

시스템 시작 절차 (System Startup)

시스템을 가동하기 위해 다음 단계를 순차적으로 수행한다.

  1. 전원 공급: Arduino, 5V 전원 레일, 3.3V NFC 전원 레일, 공통 GND가 올바르게 연결되었는지 확인한다.
  2. Backend 실행: 서버 환경에서 Python FastAPI 서버(server/main.py)를 시작한다. 시작 시 SQLite 데이터베이스가 자동으로 점검 및 초기화된다.
  3. Serial Handshake: Arduino가 연결되면 SYSTEM_READY 신호를 Backend에 전송한다. Backend는 이 신호를 수신한 후 실시간 폴링 루프를 시작한다.
  4. Vision AI 모드 확인: 실제 얼굴 인증은 DOORLOCK_VISION_MOCK=false로 실행한다. YOLO 모델이 준비되지 않은 시연에서는 DOORLOCK_YOLO_ENABLED=false로 고정한다.

인증 프로세스 (Authentication Flow)

최종 사용자는 다음의 2단계 인증 과정을 통해 출입 권한을 획득한다.

1단계: 1차 인증 (NFC 또는 PIN)

  • NFC: 등록된 카드를 MFRC522 리더기에 탭한다.
  • PIN: TTP229 키패드에서 4자리 이상 숫자를 입력한다. 현재 8키 모드 펌웨어는 4자리 이상 입력 시 자동으로 PIN을 전송한다.
  • 1차 인증 정보가 데이터베이스와 일치하면 즉시 2단계 인증으로 전환된다.

2단계: 2차 인증 (얼굴 인식)

  • 카메라 렌즈를 정면으로 응시한다.
  • Vision AI 모듈이 사용자의 얼굴을 캡처하고 등록된 얼굴 인코딩과 비교한다.
  • 임계값 이상의 유사도가 감지되면 인증이 승인된다.

3단계: 잠금 해제 (Unlock)

  • 인증 성공 시 Backend가 Arduino로 OPEN_DOOR 명령을 전송한다.
  • Arduino는 SG-90 서보를 열림 각도(90도)로 이동시킨다.
  • 시간이 경과하면 서보가 잠김 각도(0도)로 자동 복귀한다.

실패 처리 및 로깅 (Error Handling)

모든 인증 시도는 SQLite 데이터베이스에 기록되며, 실패 시 시스템은 보안을 위해 잠금 상태를 유지한다.

구분이벤트 로그설명
1차 인증 성공1ST_AUTH_SUCCESS등록된 NFC 또는 PIN이 확인됨
최종 인증 성공FINAL_SUCCESS1차 인증과 얼굴 인증이 모두 통과됨
1차 인증 실패UNAUTHORIZED등록되지 않은 카드 또는 잘못된 PIN 입력
2차 인증 실패FINAL_FAIL얼굴 불일치, 카메라 오류, 또는 얼굴 정보 없음

안전 및 주의사항 (Safety and Precautions)

  • Fail-Secure 원칙: 전원 차단, 시스템 오류 또는 통신 단절 시 서버가 OPEN_DOOR를 보내지 않으므로 서보는 잠금 상태를 유지한다.
  • 조명 환경: 얼굴 인식의 정확도는 조도에 영향을 받으므로, 너무 어둡거나 강한 역광이 있는 장소에서의 사용은 권장하지 않는다.
  • 비상 개방: 전자적 고장 상황을 대비하여 물리적 열쇠나 수동 개폐 장치를 별도로 구비해야 한다.

개발자 모드 (Mock Execution)

물리적 하드웨어가 없는 환경에서는 다음과 같이 시뮬레이션할 수 있다.

  1. Backend 서버를 실행한다.
  2. python3 server/fake_arduino.py를 실행하여 가상의 Serial 장치를 만든다.
  3. 출력된 /dev/pts/XX 값을 DOORLOCK_SERIAL_PORT에 넣고 Backend를 실행한다.
  4. CLI 메뉴를 통해 NFC UID 또는 PIN을 입력하여 전체 2FA 로직의 동작 여부를 검증한다.

운영 한계점 (Operational Limitations)

  • 단일 노드: 현재 감사 로그는 Backend 서버의 로컬 데이터베이스에 저장된다.
  • 안티 스푸핑(Anti-Spoofing): 일반 RGB 카메라를 사용하므로 고해상도 사진이나 디스플레이를 이용한 2D 스푸핑 공격에 취약할 수 있다.