Peugeot OBD app 만들기 도전

(1단계 최종)Arduino-psa-diag C++ 활용 ELM327 명령 송수신(2)-5

peugeotory 2024. 1. 8. 12:35

마지막으로 검토했던 오픈 소스코드입니다.

(세번째) Arduino-psa-diag  (hw) arduino 사용

     ; Peugeot 엔지니어 출신이 만든것으로 추정됩니다. 찾아본 자료중에 가장 전문적인 오픈 소스입니다.


< 실행환경 >

-mac mini (M1)

-arduino IDE

 

<사전 준비물>

-Arduino (uno 사용했습니다)

-MCP2515 SPI CAN 버스 모듈 (Arduino와 함께 MCP2515 SPI CAN 버스 모듈을 사용하는 방법)

 


1) 소스 코드 다운로드하고.. git clone https://github.com/ludwig-v/arduino-psa-diag.git  ← 다운로드시 내부에 libraries가 있음

2) Arduino IDE에서 MCP2515 사용할 수 있도록 Custom 헤더 파일 포함합니다.

 

3)MCP2515 제품 사양 확인 (8Mhz or 16Mhz 제품)

 

4) 엔진 시뮬레이터와 연결(이전글 참조)

 

 

5) SW 수정 및 실행결과

;푸조 차량의 어떤 ECU와 통신할지 Frame ID 결정(여기서는 엔진 ecu로 변경)

;작성자분이 얼마나 푸조 엔진에 대한 전문가 인지 소스코드를 보면 알 수 있습니다. (놀라웠습니다.) 놀랍도록 정확하게 동작합니다.

 

 

 

6)( 참고 할만한 내용) query vs response 체계

 

저도 잘 모르는 부분이 있었는데, 푸조 엔진에서 data를 주고 받을 때 필요한 전송/응답 체계에 대한 내용이 있습니다.
워낙 난수표 같은 data만 오고 가는데... 그 의미를 파악하는데 많은 도움이 됩니다.

 

 

그밖에, Dump 모드라는 것을 제공하여

Frame ID와 응답 data를 보기 쉽게(? - 여전히 어렵지만..) 표시해줍니다.

 

 

<검토 결과>
이번에 검토한 오프 소스는 Python-CAN(파이썬) 라이브리의 푸조 전용 C++ 버전입니다.
이전에 제가 만들어서 올렸던 것(이전글 참조)과 동일한데 C++로 만들어져있습니다.

단, OBD(ELM327)명령을 사용하는 것이 아닌, CAN Bus 신호를 사용하는 것이 특징입니다.

 

 

지금까지 총 3개의 C++로된 오픈 소스 코드를 검토했습니다.
H/W와 S/W 모두를 알아야 접근이 가능하기 때문에 상당한 시간이 소요된것 같습니다. (대략 2개월??)

< 1단계 > 기본 기술 학습 완료했습니다.

 

1) C 나 C++로 만들어진 오픈 소스 코드 분석
2) 임베디드 소형 PC에 올려서 동작 확인( Arduino or ESP32 )



다음에는 실제로 스마트폰을 사용해서 전송/응답 받는 과정 정리할 예정입니다.
(Dart /Flutter 활용)


<2단계> 
다음편에 계속....