얼굴 인식으로 잠금 해제하는 스마트 도어 액세스 시스템
부품 및 소모품
| 부품 | 수량 |
| 볼트 IoT 와이파이 모듈 | 1 |
| 아두이노 우노 | 1 |
| 부저 | 1 |
| 풀사이즈 브레드보드 | 1 |
| 택트 스위치 12mm | 2 |
| 5mm LED (적/녹) | 각 1 |
| 저항 10kΩ | 2 |
| 저항 330Ω | 2 |
| 점퍼 와이어 | 1묶음 |
필요한 도구
앱 및 온라인 서비스
- 볼트 IoT 클라우드
- 마이크로소프트 윈도우 10
- 비주얼 스튜디오 (C# 윈폼 개발)
- 아두이노 IDE
- Face++ API (얼굴 인식)
프로젝트 소개
인터셜라 IoT 트레이닝(볼트 IoT 제공) 캡스톤 프로젝트로, 선반/서랍/도어에 얼굴 인증 잠금 장치를 추가하는 시스템입니다. C# 윈폼 앱이 웹캠으로 얼굴을 촬영해 Face++ API로 검증하고, 볼트 클라우드를 통해 아두이노의 서보 모터를 제어해 잠금/해제합니다.
소프트웨어 아키텍처
1. 도어 잠금/해제
- 볼트 모듈 D0=HIGH → 잠금, D3=HIGH → 해제 신호
DigitalMultiWrite로 동시 제어 후 즉시 LOW로 복구 (펄스 방식)
2. 신뢰 얼굴 등록/삭제
- AForge.NET으로 웹캠 영상 캡처
- Face++ Detect API로 얼굴 검출 확인
- 이미지 Base64 인코딩해 로컬 설정(Properties.Settings)에 이름과 함께 저장
- 삭제는 리스트에서 인덱스로 제거
3. 얼굴 검증
- Face++ Compare API로 등록된 얼굴들과 순차 비교
- 신뢰도(confidence) 80% 이상이면 해제
WebClient.UploadValues로 POST 요청, JSON 파싱으로 confidence 추출
4. 도어벨 리스닝 스레드
- 전용 스레드에서 볼트 D4 핀 주기적 폴링 (2초 간격)
- HIGH 감지 시 얼굴 촬영→검증→해제 시퀀스 실행
- API 할당량 고려해 2초 대기
하드웨어 회로
- 적색 LED: 잠금 상태, 녹색 LED: 해제 상태
- 도어벨 버튼 → 볼트 D4 (누르면 HIGH)
- 잠금 버튼 → 아두이노 D8 (직접 잠금 가능)
- 부저: 도어벨/잠금 시 알림음
- 서보 모터(D4): 잠금 장치 구동
- 볼트 D0/D3 → 아두이노 D2/D3 (잠금/해제 신호 수신)
- 볼트 D6 → 아두이노 D5 (도어벨 신호 송신)
아두이노 코드
#include
#define ServoPin 4
#define LockSignalPin 2
#define UnLockSignalPin 3
#define BellButtonPin 5
#define LockButtonPin 8
#define RingBellSignalPin 6
#define BuzzerPin 7
#define GreenLedPin 9
#define RedLedPin 10
Servo myServo;
void setup() {
// 핀모드 설정, 서보 연결, 시리얼 시작
}
void loop() {
int lock = digitalRead(LockSignalPin);
int unlock = digitalRead(UnLockSignalPin);
if (lock == HIGH) {
myServo.write(120); // 잠금 위치
digitalWrite(GreenLedPin, LOW);
digitalWrite(RedLedPin, HIGH);
// 부저 알림
} else if (unlock == HIGH) {
myServo.write(0); // 해제 위치
digitalWrite(GreenLedPin, HIGH);
digitalWrite(RedLedPin, LOW);
}
// 도어벨 버튼 처리
if (digitalRead(BellButtonPin) == HIGH) {
digitalWrite(RingBellSignalPin, HIGH);
// 부저 패턴 재생
digitalWrite(RingBellSignalPin, LOW);
}
// 수동 잠금 버튼
if (digitalRead(LockButtonPin) == HIGH) {
myServo.write(120);
// LED/부저
}
}
기계적 잠금 장치 (DIY)
신발장 도어를 예로 들어 설명:
- 병목 부분과 병뚜껑을 이용해 서보-잠금축 커플링 제작
- 병목은 잠금축에, 병뚜껑은 서보 혼에 고정
- 나일론 실로 연결해 서보 회전→잠금축 회전 전달
- 서보를 글루건으로 고정, 실 길이 조절로 맞춤
자신의 잠금 장치에 맞는 방식으로 커플링을 제작하세요.
윈폼 애플리케이션 실행
- 볼트 IoT API 닷넷 라이브러리 다운로드
- 비주얼 스튜디오로
Facebolt Doorlock.sln 열기
Form1.cs에 API 키 입력 (볼트 Device ID/API Key, Face++ Key/Secret)
- 실행 → 카메라 선택 → 신뢰 얼굴 등록 → '얼굴 모니터링 시작'
- 도어벨 누르거나 앱에서 직접 잠금/해제 가능
코드
- BoltDoorLock.ino: 아두이노 스케치 (위 참조)
- WinForms Application: 비주얼 스튜디오 프로젝트 전체 (압축 파일, 깃허브에서 다운로드)
- Bolt IoT Cloud API Client Library: 깃허브 (C# 비공식 클라이언트)
회로도
프리칭 파일: facebolt_doorlock_2RfOtkPW2i.fzz