Peugeot OBD app 만들기 도전

(1단계)OBDII open 소스 코드 분석 : ELMduino BT/WiFi 통신 문제(2)-2

peugeotory 2024. 1. 5. 12:01

OBDII 동글과 ESP32 Bluetooth/wifi 통신 활용한 ELMduino 라이브러리 실행시 경험한 문제점 2가지 정리합니다.

 

 

1) OBD 동글과 BT 통신시 문제점 

 

“ESP32_test.ino”로 돌려보면 이상한 경고 문이 나오긴 하지만 정상 동작함. → ELM327 명령 TEST는 성공함

(문제점) "ASSERT_WARN(1 8), in lc_task.c at line 1408" → 메시지가 지속 나옵니다. 왜 발생하는지 이유를 모릅니다

(스마트폰에서 상용 OBD앱으로 통신하면 아무런 문제가 없는 것으로 봐서, ESP32 문제로 추정됩니다.)

(참고자료1) https://github.com/PowerBroker2/ELMduino/issues/43  : 유사한 문제가 언급되어 있습니다. 

(참고자료2) https://github.com/espressif/arduino-esp32/issues/6193

(참고자료3) https://github.com/PowerBroker2/ELMduino/issues/208 

 

 

할 수 없이, Bluetooth는 포기하고 wifi 모듈 사용했습니다.

 

 

2) OBD 동글과 wifi(ESP32) 통신시 문제점 

 

wifi 사용하면 발생하는 문제는....

" Timeout detected with overflow of 0ms"라는 에러가 발생합니다.

처음부터 발생하는 것은 아니고, 아래처럼

초기 9 ~ 10회까지는 반복적으로 정상 엔진 data를 가져온 후 에러가 납니다. 


64-bit response: 

        responseByte_0: 0

        responseByte_1: 0

        responseByte_2: 0

        responseByte_3: 82

        responseByte_4: 17

        responseByte_5: 0

        responseByte_6: 0

        responseByte_7: 0

        response: 74390175744

        response: 74390175744

        numPayChars : 10

        numExpectedBytes 2

        scaleFactor 0.25

        bias 0.00

RPM: 1108

Service: 1

PID: 12

Normal length query detected

Query string: 010C1

Clearing input serial buffer

Sending the following command/query: 010C1

Timeout detected with overflow of 0ms

Received: 

ERROR: ELM_TIMEOUT

 

(해결방법)

ELM327 초기화시 ECHO_ON 하면 지속 응답함.  (AT E0 --> AT E1)

(추가 에러) 이번엔, 중간에 간헐적으로 "ELM_GENERAL_ERROR"가 발생합니다.

 

CAN 분석기로 확인해 보니, ELMDuino에서 명령 전송 오류 때문으로 확인됩니다.

아쉽게도 왜 이런 명령이 전달되는지 원인과 해결방법은 찾지 못했습니다.  

 

esp32나 esp32-s3등은 ELMduino와 궁합이 잘 맞는 HW는 아닌것 같습니다.
위에서 발생한 에러들 때문에 너무 많은 시간을 낭비하게 됩니다.

 

최신 스마트폰은 BT 5.0 이상을 지원하므로 오히려 스마트폰으로 직접 학습하는 것이 비용과 정신 건강을 위해  바람직합니다.