라즈베리파이 기반의 실시간 졸음 감지 시스템으로, 웹캠을 통해 사용자의 얼굴과 눈을 추적하여 졸음 상태를 감지하고 경고를 제공합니다.
Argus는 공부나 작업 중 졸음을 방지하기 위한 감시 시스템입니다. OpenCV를 활용한 실시간 얼굴/눈 감지 기술과 GPIO를 통한 하드웨어 제어를 결합하여 효과적인 졸음 방지 솔루션을 제공합니다.
- 실시간 얼굴 및 눈 감지
- 6초 이상 눈 감음 시 졸음 경고
- 부저를 통한 알림
- LED를 통한 시각적 표시
- 물리적 스위치로 간편한 제어
- 라즈베리파이 4/5 (Raspberry Pi OS 설치)
- USB 웹캠 (OpenCV 호환)
- 능동 부저 모듈 (GPIO 20번 핀)
- LED (GPIO 16번 핀)
- Tact 스위치 (GPIO 21번 핀)
- 점퍼 와이어 및 브레드보드
| 부품 | GPIO 핀 | 물리적 핀 | 설명 |
|---|---|---|---|
| LED | GPIO 16 | Pin 36 | 시스템 상태 표시 |
| 부저 | GPIO 20 | Pin 38 | 졸음 경고음 |
| 스위치 | GPIO 21 | Pin 40 | 모니터링 시작/정지 |
git clone https://github.com/qowlgur121/argus.git
cd argus# 시스템 패키지 업데이트
sudo apt update && sudo apt upgrade -y
# Python 패키지 설치
pip install opencv-python numpy gpiozero
# 추가 시스템 라이브러리 (필요한 경우)
sudo apt install python3-opencv python3-numpy# GPIO 접근 권한 부여
sudo usermod -a -G gpio $USER
# 재부팅 또는 로그아웃 후 재로그인
sudo rebootpython argus.py- 프로그램 시작:
python argus.py실행 - 모니터링 시작: Tact 스위치를 눌러 감시 모드 활성화
- LED가 켜지고 웹캠 창이 나타남
- 얼굴 인식 시 녹색 사각형 표시
- 졸음 감지: 6초 이상 눈을 감으면
- 부저에서 경고음 발생
- 화면에 "DROWSINESS DETECTED!" 메시지 표시
- LED가 빠르게 점멸
- 모니터링 종료: Tact 스위치를 다시 눌러 대기 모드로 전환
- 프로그램 종료: 웹캠 창에서 'q' 키 입력
- 대기 모드: LED 꺼짐, 웹캠 창 없음
- 감시 모드: LED 켜짐, 웹캠 창 활성화
- 졸음 감지: LED 점멸, 부저 울림
argus/
├── argus.py # 메인 프로그램
├── eye_tracking.py # 눈 감지 모듈
├── haarcascade_frontalface_default.xml # 얼굴 인식 cascade
├── haarcascade_eye.xml # 눈 인식 cascade
└── README.md # 프로젝트 문서
eye_tracking.py 파일의 13번째 줄에서 감지 시간을 변경할 수 있습니다:
self.drowsiness_threshold = 6.0 # 6초 → 원하는 시간으로 변경argus.py 파일의 16-18번째 줄에서 핀 번호를 변경할 수 있습니다:
self.LED_PIN = 16 # LED 핀 번호
self.BUZZER_PIN = 20 # 부저 핀 번호
self.SWITCH_PIN = 21 # 스위치 핀 번호- 실시간 처리: 20 FPS로 안정적인 얼굴/눈 감지
- 정확한 감지: Haar Cascade 알고리즘 기반 얼굴 인식
- 하드웨어 통합: gpiozero 라이브러리를 활용한 안정적인 GPIO 제어
- 640x480 해상도로 최적화된 처리 속도
- 효율적인 눈 감지 알고리즘으로 CPU 사용량 최소화
- 노이즈 필터링을 통한 오탐지 방지