diff --git a/README.md b/README.md index 424141d..5c0f9b2 100644 --- a/README.md +++ b/README.md @@ -1 +1,77 @@ -# driving-risk-flow-scoring \ No newline at end of file +# OBD CAN 기반 운전 성향 분석 시스템 + +## 프로젝트 개요 +차량 OBD-II 기반 CAN 통신으로 주행 데이터를 수집하고, +운전 행동을 분석하여 **운전 성향(캐릭터)** 및 **주행 점수**를 실시간으로 시각화하는 시스템입니다. +속도(Speed), RPM, 조향각(Steering), 브레이크(Brake) 데이터를 활용하여 운전 습관을 평가합니다. + +## 프로젝트 목표 +- 차량 OBD CAN 데이터를 안정적으로 수집 및 처리 +- 위험 운전 행동과 교통 흐름 방해 행동을 분리하여 감점 요소를 설계 +- 정체 구간에서의 오판을 줄이기 위한 보호 로직 적용 +- TFT 디스플레이를 통해 실시간 점수/캐릭터 UI 출력 + +## 시스템 구성 + +### 전체 구조 +1. **차량 OBD-II → CAN 데이터 수신** +2. **MCP2515 CAN Controller**로 프레임 수신 +3. **Arduino Nano Mini**에서 데이터 파싱 및 점수 산출 +4. **TFT LCD(ILI9341)**에 속도/조향/브레이크/RPM/점수 출력 +5. (선택) **microSD**로 캐릭터 RAW 이미지 표시 + +## 동작 방식 +- CAN 통신으로 차량 주행 데이터를 주기적으로 수신합니다. +- 수신된 값은 노이즈 완화를 위해 필터링 후 점수 로직에 적용됩니다. +- 감점 요인은 다음과 같이 구성됩니다. + +### 감점 요인 설계 +**[위험 요인 감점]** +- 급가속 +- 급제동 +- 급조향 +- 고속 + 급조향 +- 고RPM 유지 +- 급가속 + 급조향 동시 발생 +- 위험 행동 반복 + +**[흐름 방해 감점]** +- 저속 지속 +- 평균 대비 과도한 저속 +- 불필요 감속 후 회복 지연 +- 저속 시간 누적 감점 + +**[정체 구간 보호(오판 방지)]** +- 정체 판단 시 흐름 방해 감점 적용 X +- 정체 구간에서는 위험 감점 기준 완화 +- 정체 해제 판단 시 정상 평가로 복귀 + +## 사용 기술 스택 + +### Hardware +- Arduino Nano Mini +- MCP2515 CAN Module +- 2.2inch TFT LCD (ILI9341) +- microSD Module (캐릭터 RAW 리소스) +- DS1302 RTC Module + +### Software +- Arduino IDE (C/C++) +- CAN 통신: `mcp_can` +- TFT UI: `Adafruit_GFX`, `Adafruit_ILI9341` +- SD 처리: `SPI`, `SD` +- UDS/ISO-TP 기반 데이터 요청/응답 처리 + +## 한계 및 개선 사항 +- **차종별 CAN/UDS 데이터 차이** + - DID/바이트 오프셋이 차량마다 달라 호환성 확장이 필요함 + +- **정체/고속/저속 모드 판별 한계** + - 현재는 속도 기반 추정이므로 환경에 따라 오탐 가능 + +- 향후 개선 방향 +- 주행 기록에 날짜/시간 타임스탬프 추가 +- **N분 이내 재시동 시 이전 운전 기록(점수/상태) 이어서 사용** + - 예: 시동 OFF 후 5분 이내 재시동 → 이전 세션 이어서 누적 + - 예: 시동 OFF 후 5분 초과 재시동 → 새 세션으로 초기화 +- SD 로그 저장 시 시간 기반 주행 분석(하루/주간 통계) 기능 확장