ABCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXBYBZCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCWCXCYCZDADBDCDDDEDFDGDHDIDJDKDL
1
CAN 통신 인터페이스UART 통신 인터페이스MAIN ECU 인터페이스 명세서CLU ECU 인터페이스 명세서
2
3
센서 및 장치 목록 - VAPS (차량 무인 이동 방지 자동 제어 시스템)ECU 간 사용하는 센서ACT ECU 인터페이스 명세서
4
No.센서/장치부품명 (예시)인터페이스필요 핀 수배치 ECU대응 기능 요구사항용도 설명보유비고센서/장치인터페이스핀 수개 수비고CAN 통신 정의표상태 메시지 정의Risk Level 정의MON 통신 UART 데이터 형식IF-ID인터페이스 유형방향연결 대상프로토콜/방식비고LCD 인터페이스 정의경고 정의
5
입력 센서: 운전자 감지CLU ECU (TC275 )Message NameIDTx ECURx ECUDLCCycle설명MAIN → ACT 제어 메시지MAIN → CLU 상태 메시지의미MON - Event Code 정의16 Bit Status Word필드별 값 정의IF-CAN-01CAN TX 0x100MAIN → ACTTC375 #2 (ACT)CAN 2.0B, 500kbps제동/기어 제어 명령, 50ms 주기LCD - SensorData 표시 항목LCD - ControlCommand 표시 항목LCD-1 표시 인터페이스 설계 표 LCD-2 표시 인터페이스 설계 표DEVICE1차경고2차경고Rollaway제동
6
1압력 센서 (FSR)FSR-402 또는 동급ADC1MAINFR-DET-01운전석 착석 감지 (25kg 이상 하중 판정)O아날로그 출력, 3.3V 호환 확인부저GPIO (PWM)11MAIN_ACT_CTRL0x100MAINACT250ms제동/모터 제어 명령ByteSignalByteSignal0NORMALEvent정의Status Word = [15:14][13:12][11:10][9][8][7:0]1) warning_type (2bit)IF-CAN-02CAN TX 0x200MAIN → CLUTC275 (CLU)CAN 2.0B, 500kbps위험도/센서 상태, 100ms 주기구조체 필드표시 의미LCD 표시 예시구조체 필드표시 의미LCD 표시 예시항목내용항목내용브레이크등---ON
7
2ToF 거리 센서VL53L0XI2C2
(SCL, SDA)
MAINFR-DET-01운전석 상부 60cm 이내 인체 존재 보조 판단OI2C 주소 0x29, 3.3VLED (상태 표시 x2)GPIO2-MAIN_CLU_STATUS0x200MAINCLU4100ms경고 및 상태 표시0brake_cmd0: 해제 /1: 유지/ 2: 강제 제동0risk_level0~6 단계11차 경고0x01RISK_WARN_LV11차 경고 발생비트항목정의타입의미IF-CAN-03CAN RX 0x300ACT → MAINTC375 #2 (ACT)CAN 2.0B, 500kbps속도/제동/가속도 피드백, 타임아웃 300msdriverDRIVER_SEATED운전자 착석DRV:INrisk_levelRISK_NORMAL정상 상태RISK:OKLCD 명칭LCD-1LCD 명칭LCD-2비상등1초 토글-1초 토글ACT 인터페이스 정의RPI 인터페이스 정의
8
3초음파 센서
(운전석용)
HC-SR04GPIO2
(Trig, Echo)
MAINFR-DET-01운전석 착석 보조 감지 (거리 기반)O⚠ Echo 5V→3.3V 분압 필요LCD (I2C)I2C22SCL/SDAACT_FEEDBACK0x300ACTMAIN, CLU8100ms속도/실행 상태 피드백1gear_state0:P /1:R /2:N /3:D1
driver_present
0 : 부재 /1 : 존재22차(경고) 강화0x02RISK_WARN_LV22차(강화) 경고 발생15:14
warning_type
경고 종류enum RiskLevel00경고 없음IF-GPIO-01기어 스위치 (P/R/N/D)Input버튼 x4GPIO Pull-upP02.3/5/4/6, 3샘플 디바운싱 + press-release 래치driverDRIVER_ABSENT운전자 이탈DRV:OUTrisk_levelRISK_WARN_LV11차 경고RISK:W1역할운전자 안내용 표시기역할시스템 상태 모니터링용 표시기부저1초 토글0.3초 토글0.1초 단발ON센서 데이터 수집 및 전송기어별 모터 제어서보 브레이크 제어MAIN → ACT 제어 메시지 실제 매핑 (MAIN_ACT_CTRL 0x080)MAIN ← ACT 피드백 메시지 해석 (ACT_MAIN_FEEDBACK 0x120)Fail-safe 정의 (ACT ECU 관점)IF-ID인터페이스 유형방향연결 대상프로토콜/방식비고
9
입력 센서: 차량 상태UART → RPiUART2TX/RX2door_state0 : 닫힘 / 1 : 열림3Rollaway 경고0x03
RISK_ROLLAWAY_WARN,
Rollaway 경고 발생13:12brake_type제동 종류enum RiskLevel011차 경고IF-GPIO-02도어 스위치Input리밋 스위치GPIO Pull-upP02.7, 3샘플 디바운싱gearGEAR_P주차 기어G:Prisk_levelRISK_WARN_LV2강화 경고RISK:W2목적현재 위험 상태와 운전자가 즉시 수행해야 할 조치를 직관적으로 표시목적센서 입력 상태와 제어 출력 상태를 상세하게 표시IDINPUTDETAILOUTPUTIDINPUTDETAILOUTPUTIDINPUTDETAILOUTPUTByteSignal설명ByteSignalMAIN에서 해야 할 일설명ECU감지 조건타임아웃 / 동작이유IF-UART-01UART RX 이벤트 입력CLU → RPiRPi MONapp.py 직렬 수신, 115200bps, UTF-8 텍스트 또는 binary bitstreamJSON, key=value, WARN|..., BRAKE|..., 16bit binary 지원
10
4기어 스위치
(4위치)
로터리 스위치 4PGPIO 입력4
(P,R,N,D 각 1핀)
MAINFR-DET-02기어 위치 감지 (P/R/N/D)O풀업/풀다운 저항 필요CAN (내장)CAN21CAN_H/L고려사항:

- signal 하나당 1 byte 씩 (무조건)
- main은 ECU에게 주기적으로 데이터 전송 (제동 Fail-Safe 대응)
- 하트비트가 불필요 - > 주기적 메시지가 이미 생존 확인을 겸합니다. 300ms 안에 안 오면 죽은 것으로 판단 가능
ACT → MAIN 피드백, CLU 속도 표시
브로드캐스트
3gear_state0:P /1:R /2:N /3:D4D단 자동 제동 발생0x11 RISK_D_BRAKE,
D단 자동 제동 발생11:10gear_state기어 상태enum GearState10강화 경고IF-GPIO-03초음파 Trig/EchoOutput/InputHC-SR04GPIO + ERU ISRTrig=P02.0, Echo=P02.1(ERU 인터럽트)gearGEAR_R후진 기어G:Rrisk_levelRISK_D_BRAKED단 자동 제동RISK:B1표시 우선 원칙일반 상태보다 경고 상태, 경고 상태보다 자동 제동 상태를 우선 표시표시 방식2개 페이지 순환 또는 상태 우선 고정 표시FR-DET-04
(인코더)
인코더 펄스 값인코더 펄스를 카운트하여 바퀴 회전수 및 속도를 산출한다.
· 채널 A/B 위상차로 정방향/역방향 판별
· 속도 산출 후 km/h 단위로 변환
· D/R단: 2 km/h 이상 → MOTION_MOVING 판정
· N단: 7 km/h 이상 → MOTION_MOVING 판정 (Rollaway 기준)
MAIN에 인코더 값, 속도 전송기어 D단MAIN으로부터
모터 전진 명령
D단 크리프 시뮬레이션.
바퀴 저속 정회전.
모터 저속 정회전FR-CTL-04MAIN으로부터
D단 제동 명령
D단 제동 명령 수신 시 모터 정지 + 서보 제동.
차량 속도 10 km/h 이하에서의 제동을 전제로 한다.
D/R단 기준: 2 km/h 이상 이동 시 즉시 제동.
모터 정지
서보 제동
0brake_cmd0: 해제 / 1: 강제 제동서보 브레이크 제어0speed_L속도 하위 바이트 저장km/h × 100, little-endianACTMAIN 보내는
0x080 미수신
500 ms → 제동 중이라면
자동 기어 P 전환
제동 해제 시 밀림 위험IF-HTTP-01HTTP Web UIRPi ↔ 사용자 브라우저Flask Web ServerHTTP, 기본 포트 5000, route=/이벤트 목록, 통계, 필터, raw frame 표시
11
5도어 스위치리미트 스위치
(마이크로 스위치)
GPIO 입력1MAINFR-DET-03운전석 문 열림/닫힘 감지O눌림=닫힘, 해제=열림합계9I2C 버스 공유로 실질 핀 절약ByteSignal5R단 자동 제동 발생0x12RISK_R_BRAKER단 자동 제동 발생9door_state도어 상태enum DoorState11Rollaway 경고IF-GPIO-04LED 출력 x3OutputLEDGPIO Push-pullDebug=P10.4, Board=P00.5/P00.6gearGEAR_N중립 기어G:Nrisk_levelRISK_R_BRAKER단 자동 제동RISK:B2기본 표시 방식2행 문자 표시 기준, 1행은 상태명, 2행은 조치 안내페이지 구성Page A: 센서 상태 / Page B: 제어 상태FR-DET-04
(가속도)
가속도 센서 값3축 가속도 데이터를 읽어 차체 이동 보조 감지.
· I2C 주소: 0x68 (MPU6050)
· 샘플링 주기: 100 ms 이하
· g×100 정수 인코딩, 클램핑 범위 ±100
MAIN에 가속도 값 전송기어 R단MAIN으로부터
모터 후진 명령
R단 크리프 시뮬레이션.
바퀴 저속 역회전.
모터 저속 역회전FR-CTL-05MAIN으로부터
R단 제동 명령
R단 제동 명령 수신 시 모터 정지 + 서보 제동.
차량 속도 10 km/h 이하에서의 제동을 전제로 한다.
D/R단 기준: 2 km/h 이상 이동 시 즉시 제동.
모터 정지
서보 제동
1motor_cmd0: 정지 / 1: 정방향 / 2: 역방향DC 모터 방향 제어1speed_H속도 상위 바이트와 합쳐 실제 속도 계산km/h × 100, little-endianACTMAIN_HEARTBEAT
0x150 미수신
300 ms → 현재 상태 유지
(제동 중이면 제동 유지)
MAIN 이상 판단
안전 상태 유지
IF-HTTP-02HTTP 상태 API클라이언트 → RPi/health, /api/serial/statusHTTP GET, JSON직렬 상태, 카운터, DB 경로, LED/URL 전송 활성화 상태 제공
12
입력 센서: 차량 이동MAIN ECU (TC375 #1)0-3speed차량 속도
little-endian km/h x100
6Rollaway 제동0x13
RISK_ROLLAWAY_BRAKE,
Rollaway 자동 제동 발생8
driver_present
운전자 유무
enum DriverState
2) brake_type (2bit)IF-GPIO-05CAN 트랜시버 STBOutputCAN TransceiverGPIO Push-pullP20.6, Low=활성화gearGEAR_D주행 기어G:Drisk_levelRISK_ROLLAWAY_WARNRollaway 경고RISK:W3갱신 주기100ms 이하정상 상태 전환2초 주기로 자동 전환 가능기어 N단MAIN으로부터
모터 중립 명령
N단 자유회전 시뮬레이션.
모터 단자 개방, 바퀴 자유 회전.
모터 개방 (자유회전)FR-CTL-07MAIN으로부터
Rollaway 제동 명령
Rollaway 제동 명령 수신 시 서보 제동.
N단이므로 모터는 원래 개방 상태.
N단 기준: 7 km/h 이상 이동 시 즉시 제동.
서보 제동2gear_state0:P / 1:R / 2:N / 3:D현재 기어 상태2speed_valid속도 유효성 확인0: 무효 / 1: 유효ACT인코더 이상
(10회 연속 이상치)
speed_valid=0 전송
fault_flag=1 설정
잘못된 속도 데이터로
MAIN 오판 방지
IF-HTTP-03HTTP 이벤트 API클라이언트 ↔ RPi/api/events, /api/test/sample, /sampleHTTP GET/POST, JSON로그 조회, 외부 이벤트 등록, 샘플 주입
13
7DC 모터 + 인코더DC 기어드 모터
+ 홀 인코더
GPIO 인터럽트
+ PWM
3
(A, B채널 + PWM)
ACTFR-DET-04바퀴 회전 감지 + 속도 산출. DC 모터는 차량 이동 시뮬레이션용O인코더: 인터럽트 핀 사용
PWM: 모터 제어용
압력 센서 (FSR)ADC134brake_state0: 해제 / 1: 유지 / 2: 강제 제동7:0speed_kmh차량 속도uint32의미IF-I2C-01ToF 거리 센서BidirectionalVL53L0XSoftware I2C (Bit-bang)주소 0x29, 100kHz, 50ms 주기gearGEAR_ERROR기어 상태 오류G:ERRrisk_level
RISK_ROLLAWAY_BRAKE
Rollaway 자동 제동RISK:B3우선 표시 대상risk_level, lcd_msg_code위험 상태 전환위험 종류에 따라 특정 페이지 우선 고정기어 P단MAIN으로부터
모터 잠금 명령
P단 잠금 시뮬레이션.
모터 쇼트 브레이킹, 회전 저항 최대.
모터 쇼트 브레이킹FR-CTL-08MAIN으로부터
제동 유지 명령
제동 해제 조건 충족 전까지 서보 제동 + 모터 정지 상태 유지.서보 제동 유지
모터 정지 유지
→ 고려사항
3target_speed_L목표속도 하위 바이트km/h × 100, little-endian3movement_flag정지/이동 여부 판단0: 정지 / 1: 이동중IF-SSE-01SSE 실시간 스트림RPi → 사용자 브라우저/api/streamServer-Sent Events(EventSource)hello, ping, new_event 전송
14
8가속도 센서MPU6050I2C2
(SCL, SDA)
ACTFR-DET-04차체 이동 보조 감지, 경사도 측정OI2C 주소 0x68, ToF와 버스 공유 가능ToF (VL53L0X)I2C21SCL/SDA (버스 공유)5accel_xX축 가속 (g × 100, ±100 클램핑)00제동 없음IF-ADC-01압력 센서 x3 (FSR)InputFSR 402EVADC Group 8P40.6/7/8, CH4/5/6, Queue0 연속변환doorDOOR_OPEN문 열림DR:Obrake_cmd0제동 OFFBRK:OFF정상 상태 표시기어 상태 및 안전 여부 표시자동 제동 상태제어 상태 페이지 우선 표시FR-CTL-09MAIN으로부터
제동 해제 명령
제동 해제 명령 수신 시 서보 해제 + 모터를 현재 기어에 맞는 모드로 전환.
· D단 → 정회전 / R단 → 역회전
· N단 → 자유회전 / P단 → 쇼트 브레이킹
서보 해제
모터 기어모드 전환
→ 고려사항
4target_speed_H목표속도 상위 바이트km/h × 100, little-endian4motor_stateACT 구동 상태 확인0:STOP / 1:FWD / 2:REV / 3:NEUTRAL / 4:PARKIF-DB-01Local DB I/ORPi MON ↔ SQLitemon_logs.dbSQLite file I/Oevents 테이블 저장 및 조회
15
출력 장치: 제동초음파 (운전석)GPIO21Trig + Echo6accel_yy축 가속 (g × 100, ±100 클램핑)01D단 제동IF-ERU-01초음파 Echo 인터럽트InputHC-SR04 EchoERU Ch2 → SRC_SCUERU2Rising+Falling Edge, Priority 40doorDOOR_CLOSE문 닫힘DR:Cbrake_cmd1제동 ONBRK:ON위험 상태 표시경고, 자동 제동, 해제 대기 메시지 표시갱신 주기100ms 이하5control_release_flag0: 유지 / 1: 해제제동 해제 허용 여부5brake_state_fb실제 제동 상태 확인0: 해제 / 1: 유지 / 2: 강제제동IF-GPIO-01GPIO RGB LED 제어RPi MON → RGB LEDRGB LED 모듈RPi.GPIO, BCM 22/27/17, PWM 1kHzred/orange/green/off 및 auto-off 처리
16
9서보 모터
(브레이크)
MG996R
또는 SG90
PWM1ACTFR-CTL-04~07자동 제동 액추에이터. 서보 각도로 브레이크 패드 압착/해제 시뮬레이션O⚠ 서보 전원은 외부 5V 사용
신호선만 MCU PWM에 연결
도어 스위치GPIO117accel_zz축 가속 (g × 100, ±100 클램핑)10R단 제동IF-SW-01태스크간 공유 데이터InternalFreeRTOS TasksMutex 보호g_sensor(xSensorMutex), g_command(xCommandMutex)speed_kmh실수값차량 속도SPD:1.2motor_mode0STOPM:0오류 상태 표시센서 오류, 데이터 미갱신, 기어 오류 표시주요 참조 데이터g_sensor, g_command6reserved0예비6fault_flag오류 비트 확인0: 정상 / 1: 오류IF-UART-02UART TX MP3 제어RPi MON → MP3 모듈DFPlayer 계열 오디오 모듈Serial /dev/serial0, 9600bpswarning/brake 음원 재생
17
10모터 드라이버L298N 또는
TB6612FNG
GPIO + PWM3
(IN1, IN2, ENABLE)
ACTFR-CTL-04~07DC 모터 정/역회전 및 속도 제어추가 필요DC 모터 직접 MCU 연결 불가 드라이버 필수기어 스위치 (4P)GPIO41P/R/N/D 각 1핀11Rollaway 제동motionMOTION_STOPPED차량 정지MOV:STOPmotor_mode1FWDM:1복귀 안내 표시상태 복귀 안내 표시7reserved예비-IF-HTTPS-01HTTPS URL 알림RPi MON → 외부 알림 서비스ntfy.sh/VAPSHTTPS POSTMON system URL 부팅 후 1회 전송
18
출력 장치: 경고CAN (내장)CAN2CAN_H/L3) gear_state (2bit)VIEWmotor_mode2REVM:2IF-SVC-01서비스 제어systemd → MON 프로세스mon.serviceLinux systemdnetwork-online 이후 기동, Restart=always
19
11부저 (능동형)능동 부저 모듈
5V/3.3V
GPIO
(PWM 가능)
1CLUFR-CTL-01~02경고음 출력. 단속음(1초)/연속음(0.3초) 패턴 구분OPWM으로 주파수 가변 가능합계12연산 중심, 핀 사용 최소Fail-safe 정의의미GPIO 인터페이스G ---km move
driver - door -
motor_mode3NEUTRALM:3IF-HTTP-02상태/이벤트 API클라이언트 ↔ RPi
/health, /api/serial/status, /api/events, /api/test/sample
HTTP JSON상태 조회, 이벤트 조회/등록, 샘플 주입
20
12LED
(브레이크등)
고휘도 LED 적색GPIO1CLUFR-CTL-11제동 시 브레이크등 점등O저항(220Ω) 직렬 연결ACT ECU (TC375#2)ECU감지 조건타임아웃동작이유00PIF-ID연결 장치용도Active Level디바운싱motor_mode4PARKM:4액추에이터 상태 다이어그램IF-SSE-01실시간 이벤트 스트림RPi → 브라우저/api/streamServer-Sent Eventshello, ping, new_event 전송
21
13LED
(비상등)
고휘도 LED 황색GPIO1CLUFR-CTL-10제동 시 비상등 1초 간격 점멸O저항(220Ω) 직렬 연결서보 (브레이크)PWM1ACTMAIN 보내는
0X100 미수신
500ms제동 중이라면
자동 기어 P 전환
제동 해제 시 밀림 위험01RIF-GPIO-01a기어 P 버튼P단 선택High=Pressed3샘플 + press-release 래치
buzzer_mode
0부저 OFFS:0클러스터 시퀀스 다이어그램
IF-DB-01로컬 로그 DBRPi MON ↔ SQLitemon_logs.dbSQLite file I/Oevents 테이블 저장/조회
22
14LED
(시스템 상태)
LED 녹색/적색GPIO2
(녹색, 적색)
CLUFR-DSP시스템 정상(녹색)/위험(적색) 상태 표시추가 권장LCD 보완용 시각 표시DC 모터 + 인코더GPIO2센서A/센서BCLUMAIN이 보내는
0x200 미수신
300msLCD "통신 끊김" 표시 +
비상등 LED 경고 점멸
운전자에게 이상 알림10NIF-GPIO-01b기어 R 버튼R단 선택High=Pressed3샘플 + press-release 래치
buzzer_mode
1단속 경고S:1
IF-UART-02MP3 제어RPi MON → MP3 모듈DFPlayer 계열Serial /dev/serial0, 9600bpswarning/brake 음원 재생
23
출력 장치: 표시가속도 센서 (MPU6050)I2C2ToF와 I2C 버스 공유CLUACT가 보내는
0x300 미수신
300ms속도 표시 "---"속도 정보 없음 표시11DIF-GPIO-01c기어 N 버튼N단 선택High=Pressed3샘플 + press-release 래치
buzzer_mode
2연속 경고S:2
24
15LCD 디스플레이I2C LCD 16x2
또는 20x4
I2C2
(SCL, SDA)
제어ECU
(TC275)
FR-DSP-01~05
FR-CTL-09
기어/도어/경고/제동/운전자 상태 표시 + 제동 해제 안내 메시지OI2C 주소 0x27(일반적)모터 드라이버GPIO + PWM3MAINACT가 보내는
0x300 미수신
300msspeed=0으로 간주속도 모르면 정지로 가정4) door_state (1bit)IF-GPIO-01d기어 D 버튼D단 선택High=Pressed3샘플 + press-release 래치led_hazard0비상등 OFFL:0RPI 시퀀스 다이어그램
25
통신CAN (내장)CAN2CAN_H/L의미IF-GPIO-02도어 스위치도어 열림/닫힘 감지High=닫힘, Low=열림3샘플 다수결led_hazard1비상등 점멸L:1
26
16CAN 트랜시버
(보드 내장)
TLE9251V
(Lite Kit 내장)
CAN2
(CAN_H, CAN_L)
전체 ECU
(3개 보드)
전체 CAN 통신3개 ECU 간 CAN 2.0B 500kbps 통신. Lite Kit에 트랜시버+종단저항 내장O (내장)⚠ CAN_STB 핀 LOW 설정 필수
보드당 1채널 기본 제공
합계100닫힘IF-GPIO-03aHC-SR04 Trig초음파 트리거 펄스High=10us 펄스led_brake0브레이크등 OFFB:0
27
17UART
(로그 전송)
USB-UART 내장
(Lite Kit)
UART2
(TX, RX)
CLUFR-LOG-01~04CLU 이벤트/상태 프레임을 RPi MON으로 전달O (내장)115200bps, JSON/key=value/WARN|BRAKE|binary bitstream 지원Raspberry Pi1열림IF-GPIO-03bHC-SR04 Echo초음파 에코 수신High=에코 구간ERU 인터럽트led_brake1브레이크등 ONB:1
28
UART ← 판단ECUUART3TX/RX/GND5) driver_present (1bit)ADC 인터페이스VIEW
29
18Raspberry PiRaspberry Pi 4 또는 5
UART, LAN/Wi-Fi
2 (RX, TX)RPiFR-LOG-01~21CLU 이벤트 수신, SQLite 로그 저장, 웹 대시보드, 상태 API, SSE, LED/MP3, URL 알림, 서비스 자동 실행 제공O기본 포트 5000, SQLite DB(mon_logs.db), systemd 서비스 운용합계3로그 수신 전용의미IF-ID연결 센서측정 범위변환 공식필터RISK:__ BRK:___
M:_ S:_ L:_ B: _
30
19microSD 카드32GB 이상 microSD--RPiFR-LOG-01~13, FR-LOG-19~21SQLite DB 및 웹 애플리케이션 파일 저장 매체OSQLite DB 및 애플리케이션 저장, 순환 삭제 기능 없음0운전자 부재IF-ADC-01a압력 센서 #10~4095 (12bit)g = ADC × 10000 / 40953샘플 중앙값
31
20LED (모니터링 이벤트 표시)
RGB LED 모듈 또는 적/주황/녹 3색 LED
GPIO3 (R, G, B)RPiFR-LOG-14~17경고/제동/해제 기록 발생 시 이벤트 종류를 색상으로 구분하여 시각적으로 표시Owarning=Orange, brake=Red, system release=Green, status/OK=Off1운전자 존재IF-ADC-01b압력 센서 #20~4095 (12bit)g = ADC × 10000 / 40953샘플 중앙값
32
전원/기타6) speed_kmh (8bit)IF-ADC-01c압력 센서 #30~4095 (12bit)g = ADC × 10000 / 40953샘플 중앙값
33
21외부 전원 어댑터DC 12V 2A 어댑터--전체-Lite Kit 외부 전원 (7~14V 권장) + 모터/서보 전원확인 필요USB 전원만으로 모터 구동 불가의미I2C 인터페이스
34
22점퍼선/브레드보드---전체-센서-MCU 연결O0~255차량 속도 km/hIF-ID항목설명
35
23저항 키트220Ω, 1kΩ, 2kΩ, 10kΩ 등--전체-LED 전류 제한, 풀업/풀다운, 분압OIF-I2C-01센서VL53L0X (ST)Time-of-Flight 거리 센서
36
통신 방식Software I2C (Bit-bang)iLLD I2C의 Repeated Start 미지원으로 SW 구현
37
I2C 주소0x29VL53L0X 기본 주소
38
클럭 속도100kHzStandard mode
39
측정 주기50msTask_ToF 주기
40
측정 범위0~2000mm유효 범위, 센서 스펙 상 최대
41
복구 재시도 주기250ms복구 실패 시 재시도 간격
42
초기화 시퀀스DataInit → StaticInit →
RefSpad → RefCal → SetMode
VL53L0X API 초기화 순서
43
ERU 인터페이스
44
IF-ID항목설명
45
IF-ERU-01입력 핀P02.1HC-SR04 Echo 핀
46
엣지 감지Rising + FallingFEN0=1, REN0=1
47
인터럽트 우선순위40 (SRPN)ERU_ISR_PRIO
48
ISR 동작Rising: rise_tick 저장, state=MEASURING
Falling: fall_tick 저장, echo_us 계산, state=DONE
STM0 타임스탬프 기반
49
STM 클럭100MHz1 tick = 10ns
50
51
sw 테스크 인터페이스
52
53
태스크명주기 (ms)우선순위역할읽기 데이터쓰기 데이터Mutex 사용소스 파일
54
Task_Sensor103센서 수집 + 운전자 존재 판정GPIO(기어/도어), 초음파,
EVADC(압력), ToF 최신값
g_sensor
(driver, gear, door)
xSensorMutex (쓰기)sensor_driver.c
55
네이밍 컨벤션Task_Judge503위험도 상태 전이 + 제동 명령 생성g_sensor (복사)g_command
(risk_level, brake_cmd)
xSensorMutex (읽기)
xCommandMutex (쓰기)
state_machine.c
56
소문자 + 언더바Task_Can104CAN 송수신 + Bus-Off 복구g_sensor (복사)
g_command (복사)
RX FIFO0
g_sensor
(speed, accel, brake,
act_feedback_alive)
xSensorMutex (읽기/쓰기)
xCommandMutex (읽기)
can_handler.c
57
전역 변수는 g_ 로 시작Task_ToF502VL53L0X 블로킹 측정 +
I2C 에러 복구
g_tofDistanceMm
(volatile 전역)
없음
(volatile 단일 변수)
tof_sensor.c
58
자료형은 "Platform_Types.h"에서 제공하는 것을 기준으로
59
60
공유 데이터 구조체 상세
61
구조체필드타입초기값쓰기 태스크읽기 태스크보호 방식설명
62
SensorDatadriverDriverStateDRIVER_ABSENTTask_SensorTask_Judge, Task_CanxSensorMutex운전자 착석 상태
63
gearGearStateGEAR_PTask_Sensor, Task_Can
(gear override)
Task_Judge, Task_CanxSensorMutex기어 상태
64
doorDoorStateDOOR_CLOSETask_SensorTask_Judge, Task_CanxSensorMutex도어 상태
65
speed_kmhfloat0Task_Can (RX)Task_JudgexSensorMutex차량 속도 (×100 정수 → float)
66
accel_x/y/zsint160Task_Can (RX)Task_JudgexSensorMutex3축 가속도
67
motionMotionStateMOTION_STOPPEDTask_Judge
(derive_motion)
Task_JudgexSensorMutex차량 이동 상태 (파생값)
68
act_brake_stateBrakeCommandBRAKE_CMD_RELEASETask_Can (RX)Task_Judge, Task_CanxSensorMutexACT 제동 피드백
69
act_feedback_alivebooleanFALSETask_Can (RX/Timeout)Task_JudgexSensorMutexACT 통신 정상 여부
70
ControlCommandrisk_levelRiskLevelRISK_NORMALTask_JudgeTask_CanxCommandMutex위험도 레벨 (0~6)
71
brake_cmdBrakeCommandBRAKE_CMD_RELEASETask_JudgeTask_CanxCommandMutex제동 명령
72
73
74
75
운전자 존재 판정 로직
76
77
센서측정 위치유효 범위단위 변환필터점수 기준 (0~5)가중치판정 기여
78
초음파
(HC-SR04)
운전석 천장20~4000mmmm → cm (÷10)3샘플 중앙값<2cm=0, 2~7cm=5, 8~11cm=3,
12~14cm=1, 15cm+=0
0.3 (RU)WS = 0.3×RU + 0.3×RT + 0.4×RP
79
ToF
(VL53L0X)
운전대0~2000mmmm → cm (÷10)3샘플 중앙값<5cm=0, 5~12cm=5, 13~15cm=3,
16~17cm=1, 18cm+=0
0.3 (RT)
80
압력
(FSR×3)
운전석 시트 방석 부분0~4095 ADCADC → g
(×10000/4095)
3채널 평균
+ 3샘플 중앙값
<200g=0, 200~1999g=1,
2000~3999g=3, 4000g+=5
0.4 (RP)
81
82
운전자 판정 로직
83
항목설명
84
가중 점수 (WS×10)3×RU + 3×RT + 4×RP정수 연산 (소수점 회피, ×10 스케일)
85
ABSENT 임계값WS×10 ≤ 10 (WS ≤ 1.0)임계값 이하 → DRIVER_ABSENT
86
SEATED 임계값WS×10 > 10 (WS > 1.0)임계값 초과 → DRIVER_SEATED
87
확정 카운트 (PRESENT)3회 연속3회 연속 SEATED → stable = SEATED
88
확정 카운트 (ABSENT)3회 연속3회 연속 ABSENT → stable = ABSENT
89
판정 주기10ms (Task_Sensor)확정까지 최소 30ms
90
91
92
93
94
MAIN 상태 다이어그램
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003