자동차는 단순한 이동 수단으로서의 역할을 넘어 현재에 이르러서는 커넥티드카에서 자율주행에 이르기까지 자동차 기술의 발전에 따라 많은 편의사양들이 운전자에게 제공되기 시작했다. 현재에 이르러 자동차는 미국자동차공학회(SAE: Society of Automotive Engineers) 분류에 따른 자율주행 기술 6단계 중 1단계에 해당하는 첨단운전자보조시스템(ADAS: Advanced Driver Assistance System) 기술 적용을 통해 더욱 편리하고 안전한 주행을 할 수 있게 되었다. 스마트 크루즈 컨트롤(SCC: Smart Cruise Control), 차로 이탈방지 보조(LKA: Lane Keeping Assist), 전방/후방 주차 거리 경고(PDW: Parking Distance Warning), 후측방 충돌방지 보조(BCA: Blind-Spot Collision Avoidance Assist) 등 첨단운전자보조시스템(ADAS)을 통해 운행과 편의에 관련된 기술은 나날이 발전하고 있지만, 그에 반해 자동차 자체의 보안 및 고장, 상태 체크 등의 운전자 및 사용자의 안전과 주의해야 할 사항에 대한 지원 시스템은 미비하다고 할 수 있다.
이에, 본 논문에서는 자동차를 운행하기 전 또는 필요와 상황에 따라 자동차 상태를 실시간으로 체크할 수 있도록 OBD-II(On Board Diagnostic-II)를 활용하여 자동차 네트워크 CAN(Controller Area Network) 통신 상태, 과거 고장진단 이력, 자동차 연료 유형, 차량 경고등 점등 상태, 엔진 RPM, 엔진 부하, 엔진 냉각수 온도, EGR(Exhaust Gas Recirculation) 에러 등 11가지 항목에 대한 자동차 상태 및 내부 고장진단과 엔진 실화, 연료 시스템, 구성 요소, 예약, 촉매, 히터 촉매, 증발 시스템, 2차 공기 시스템, 냉방기 냉매, 산소 센서, 산소 센서 히터, EGR 시스템 등 OBD-II 배출가스 법규에 따른 12가지 진단 항목에 대하여 운전자 및 사용자가 모바일 애플리케이션을 통해 확인할 수 있도록 구성한다. 또한, 자동차 주행 후 시동이 종료된 것이 감지되어 CAN 인터럽트가 발생했을 때 고장진단을 요청하는 메시지 포맷을 전송하여, 그에 대한 응답을 기록 및 저장하고 고장진단이 발견됐을 경우 다시 자동차 시동 켜짐이 감지되면 메인 모듈의 부저음을 동작시켜 운전자에게 주행 전 주의사항을 알릴 수 있도록 한다. 모바일 애플리케이션을 이용한 고장진단 및 자동차 상태 확인 뿐만 아니라 차량 운행 전 위험요소 대비 및 관리에도 용이하도록 최적화된 시스템을 구현하고자 한다.
본 논문에서 구현하고자 하는 시스템에서 중점적인 기술은 자동차 네트워크인 CAN 버스의 Baud Rate를 파악하고 CAN 통신에 접속하여 데이터 수집 및 분석을 통해 자동차와 통신 하는 방법에 있다. 또한, CAN 모니터링에 필요한 MASK, FILTER 설정을 통해 CAN ID의 인터럽트 관리와 OBD-II의 PID(Parameter ID) 메시지 포맷 전송을 통해 차량의 데이터를 응답받아 DTC(Diagnostic Trouble Code) 고장코드를 활용하는 방안에 있다.
본 논문의 구성은 제 1장 서론에서 연구 배경과 자동차 네트워크 기술 동향에 대하여 서술하고, 제 2장 관련 기술에서는 자동차 네트워크인 CAN의 개요와 데이터 프레임, 메시지 포맷, 식별자 우선순위에 대한 연구 내용과 OBD-II를 통한 PID 메시지 포맷, DTC 코드를 이용한 고장진단에 대해 연구한다. 제 3장 설계 및 구현에서는 자동차 CAN 데이터 수집 및 분석 방안에 대하여 서술하고, CAN 데이터를 활용하는 방안과 메인 모듈, 커넥션 모듈의 마이크로 컨트롤러 유닛(MCU: Micro Controller Unit) 펌웨어와 Flutter를 이용한 모바일 애플리케이션을 통해 실질적인 시스템을 구현한다. 또한, 제 4장 테스트 및 검증에서 실제 구현된 시스템을 통해 연구계획 및 목적성을 검증하고, 자동차 OBD 커넥터에 결합하여 자동차 상태 및 고장 데이터 결과값을 확인 후 실제 시중에서 이용되는 자동차 제조사 진단기와 결과값을 비교 검증하도록 한다.