74 lines
2.0 KiB
Markdown
74 lines
2.0 KiB
Markdown
# OBD CAN 기반 운전 성향 분석
|
|
|
|
차량 OBD-II CAN 데이터를 받아 운전 점수를 계산하는 시스템 설계 자료입니다.
|
|
|
|
속도, RPM, 조향각, 브레이크 값을 기준으로 급가속, 급제동, 급조향, 저속 지속 같은 상황을 나눕니다. 결과는 TFT 화면에 점수와 상태로 표시하는 구조로 잡았습니다.
|
|
|
|
## 기간
|
|
|
|
- 2026.01.06 ~ 2026.01.19
|
|
|
|
## 맡은 부분
|
|
|
|
- MCP2515 기반 CAN 통신 회로 구성
|
|
- Arduino와 TFT, SD, RTC 모듈 연결
|
|
- 차량 OBD-II 환경에서 데이터 요청/응답 확인
|
|
- 점수 화면과 기록 구조 설계
|
|
|
|
## 사용한 것
|
|
|
|
- `Arduino`
|
|
- `C/C++`
|
|
- `MCP2515`
|
|
- `CAN`
|
|
- `UDS`
|
|
- `OBD-II`
|
|
- `Adafruit_ILI9341`
|
|
- `SD`
|
|
- `DS1302`
|
|
|
|
## 데이터 흐름
|
|
|
|
1. OBD-II 포트에서 CAN 프레임을 받습니다.
|
|
2. MCP2515가 CAN 프레임을 Arduino로 넘깁니다.
|
|
3. Arduino가 UDS 응답 payload를 바이트 위치와 스케일 값으로 변환합니다.
|
|
4. 변환한 속도, RPM, 조향각, 브레이크 값을 점수 계산에 사용합니다.
|
|
5. TFT 화면에 현재 값, 점수, 운전 상태를 표시합니다.
|
|
|
|
## 평가 기준
|
|
|
|
### 위험 행동
|
|
|
|
- 급가속
|
|
- 급제동
|
|
- 급조향
|
|
- 고속 상태의 급조향
|
|
- 고RPM 유지
|
|
- 위험 행동 반복
|
|
|
|
### 흐름 방해
|
|
|
|
- 저속 지속
|
|
- 평균 속도 대비 낮은 속도 유지
|
|
- 감속 뒤 회복 지연
|
|
|
|
### 정체 보호
|
|
|
|
- 정체 상태에서는 흐름 방해 감점을 제외합니다.
|
|
- 정체 상태에서는 급가속/급제동 기준을 별도로 둡니다.
|
|
- 정체가 끝나면 일반 평가 상태로 돌아갑니다.
|
|
|
|
## 자료
|
|
|
|
- `IMAGE/CAN_3.png`: CAN 요청/응답 흐름
|
|
- `IMAGE/CAN_!.png`: ECU / CAN ID 맵
|
|
- `IMAGE/CAN_2.png`: payload 바이트 매핑
|
|
- `IMAGE/FSM.png`: 상태 전환 흐름
|
|
- `IMAGE/HW.png`: 하드웨어 구성
|
|
|
|
## 한계
|
|
|
|
- 차량마다 DID와 payload 위치가 달라 그대로 재사용하기 어렵습니다.
|
|
- 정체 판단은 속도 기반이라 실제 도로 상황과 다를 수 있습니다.
|
|
- 차종별 CAN 맵을 따로 분리해야 다른 차량에 맞추기 쉽습니다.
|