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 이상을 지원하므로 오히려 스마트폰으로 직접 학습하는 것이 비용과 정신 건강을 위해 바람직합니다.
'Peugeot OBD app 만들기 도전' 카테고리의 다른 글
(1단계)오픈 소스 :OBD2 C++ 활용 ELM327 명령 보내고 받기(2)-4 (0) | 2024.01.07 |
---|---|
(1단계) 오픈 소스 분석 : ELMduino- ELM327 명령 송수신(2)-3 (0) | 2024.01.06 |
(1단계)OBD open 소스 분석(Mac mini): esp32-S3 디버깅 후기(2)-1 (1) | 2024.01.04 |
(1단계)OBDII open 소스 코드 분석 : ELMduino 사례(2) (1) | 2024.01.03 |
(1단계)OBDII open 소스 코드 분석 (Mac mini): esp-prog 사용후기(1)-4 (0) | 2024.01.02 |