Q & A
안녕하세요. 자동차에 대해서 궁금한 것이 있어서 질문 드립니다.
일반 자동차에 보면 OBD 단자가 있고 이것을 통해서 자동차의 현재 상태 값을
볼 수 있는 것으로 알고 있습니다. (자동차 -> OBD 스캐너 -> 결과값)
궁금한 것은 이 OBD 단자를 이용해서 데이터 값을 전송할 수 있는 가 하는 것 입니다.
(데이터 -> OBD 장치 -> 자동차)
예를 들어 "차량 문닫기" 명령을 OBD 단자로 전송하여 문닫기 등등...
조언 부탁드립니다.

어느 차량이냐에 따라 다릅니다. 요즈음의 Can-bus장착 차량일경우 OBD단자가 아니라 can-bus에 터미네이션 된 장치를 붙이는 것과 다른 모듈에 이를 프로그래밍 해주는것 만으로도 어떤 명령이든 이용이 가능합니다. 기존의 단순 OBD-II의 경우 OBD-II를 통해서 게이트 웨이가 역방향을 막아 놓지만 않았으면, 문잠김등의 명령을 주는 것도 정확한 파라미터를 통해 이용이 가능합니다.
정확하게는 OBD-II포트를 통해 BCM(Body Control Module)의 메모리나 Keyless Entry등의 메모리를 호출하는데, 이 중간에 역방향 신호를 막아주는 게이트 웨이가 없으면 이 모듈에 직접 신호를 주는 방식으로 제어가 가능하다는 거죠.
예를 들어서.. 세상에 보면 OBD-II로 나사 하나 안뜯고 계기판의 주행거리를 조작하게 해주는 장치가 있다고 치죠. 그 장치가 작동하는 원리가 바로 그겁니다. OBD-II에서 순수한 OBD만의 프로토콜이 아니라 OBD-II포트에서 ECU를 거쳐서 BCM을 지나 BCM하단에 위치해 있는 계기판의 CMOS칩을 읽어 들이고 그 HEX값 안에 숨어 있는 주행거리를 찾아서 다시 재기록 하는 방법으로 작동합니다.
그런데 이중에서 어떤 회사는 차량을 잘 만들어서 그 계기판의 CMOS는 완전히 시스템이 다른 포트와는 연결 되지 않고, 단지 BCM과 ECU에서 오는 신호 만을 받아서 독립적으로 프로세스 하게 만드는 경우가 있고, 어떤 경우는 모든 통신에 시큐리티를 걸어서 만약 허가되지 않은 신호가 들어오면 자체적으로 자신을 혼수상태(?)에 몇시간 동안 빠지게 만드는 경우도 있다는 거죠.
결국 어떤 차량은 원하시는게 가능하겠지만, 잘 만들어놓은 차량(?)일수록 그런 제어는 불가능에 가깝습니다.
프로토콜만 알면 가능하겠죠.