"ELMduino" 는 최근(2023.12.30일 기준)에도 활발하게 update되고 있어서 선택했습니다.
어떤 방식으로 동작하는지 궁금해서,
Arduino IDE와 PlatformIO로 upload해서 실행부터 해봤습니다.
(1) Arduino IDE로 upload 시도
라이브러리 메니저로 ELMduino 설치하면 예제 불러 올수 있도록 메뉴가 생성됩니다.
깃허브 소스코드 기준으로 보면, example 디렉토리에 "ESP32_WIFI"라는 파일입니다.
소유하고 있는 wifi에 맞게 2줄만 수정했습니다. (Mac mini(M1)) 환경에서 진행함.
Bluetooth의 경우 examples/ESP32_Bluetooth_Serial/ESP32_Bluetooth_Serial.ino 선택하면 되며,
BLE는 지원하지 않고, Bluetooth Classic만 가능합니다.
wifi의 경우 연결 잘됩니다!!!
하지만 rpm 정보 불러와야 하는데, 에러가 발생합니다. 역시나 한번에 동작하는 것은 없네요.. ㅠㅜ
Serial Monitor 창에서 전송 속도 맞춰주니 동작하기 시작합니다.
시리얼 모니터 창을 보니, 아래와 같은 결과가 나옵니다 : (검정색) ELM327칩 초기화 과정, (붉은색) 에러 관련 정보
초기화는 잘 된것 같은데... 010C1이라는 쿼리를 보내면 응답을 받지 못합니다.
(이상한것은 Python-OBD 학습할때는 010C만 쿼리로 보냈는데, ELMduino에서는 010C1을 보냅니다. 왜 그럴까?)
함수를 분석해야만 하는 시점이고,
그동안 열심히 준비했던, ESP-Prog 활용때가 되었습니다.
(2) VSC + PlatformIO + ESP-prog upload 시도
왜? 에러가 났을까? ESP-prog 활용해서 하나 하나 풀어볼 수 있습니다.
즉, 아래처럼 어떤 함수가 어떤 변수값을 처리하는지 확인하면서 코드 분석이 가능해졌습니다.!!!!
이전 사진에서 나타난 searching 및 stop 이슈는 ELM327칩 통신 프로토콜 초기화 문제가 있었습니다.
예제 파일에서 사용한 myELM327.begin() 함수의 인자중 통신 프로토톨 관련 인자가 없으면 자동검색해서
차량에 맞게 셋팅되는데, 어떤 이유에서인지 실제는 Standard(11bit 500k)인데 Extended 방식으로 초기화 되고 있었습니다.
따라서 통신 규격이 다르므로 data를 읽어 오지 못하는 문제였습니다.
<해결 방법> data와 동일하게 통신 방식을 standard 방식으로 강제 셋팅
(기존코드) myELM327.begin(client, true, 2000);
(변경코드) myELM327.begin(client, true, 2000, ISO_15765_11_BIT_500_KBAUD);
해결하고 나니, rpm 표시 오류가 추가로 발생했습니다.
값을 잘못 읽어 오거나, Timeout 되거나 합니다.
즉, OBDII 동글의 ELM327칩에서는 올바른 값을 보내주는데, ELMduino에서 잘 못 처리하고 있었습니다.
수정 코드 : findResponse()에 아래처럼 (uint64_t) 선언해줌 : response(64bit) << ctio()(uint8_t) 비트연산 오류 수정
정말 웃긴건...
현재 https://github.com/PowerBroker2/ELMduino/blob/master/src/ELMduino.cpp 이미 내부에 수정되어 있었습니다.
그런데 오류 코드가 올라온 이유는 PlatformIO에서 라이브러리를 불러오면 최신 ELMduino 라이브러리를 불러 오는것이 아니라
이전 버전을 불러온다는 것입니다.!!!! (헐..)
어쨌든..어려움은 있겠지만,
클래스나 함수 분석하는 유용한 도구가 있으니 에러를 하나씩 추적하면서 많이 배울 수 있습니다.
< 다음에 계속..>
'Peugeot OBD app 만들기 도전' 카테고리의 다른 글
(1단계)OBDII open 소스 코드 분석 : ELMduino BT/WiFi 통신 문제(2)-2 (0) | 2024.01.05 |
---|---|
(1단계)OBD open 소스 분석(Mac mini): esp32-S3 디버깅 후기(2)-1 (1) | 2024.01.04 |
(1단계)OBDII open 소스 코드 분석 (Mac mini): esp-prog 사용후기(1)-4 (0) | 2024.01.02 |
(1단계)OBDII open 소스 코드 분석 위한 준비물 : esp-prog(1)-3 (0) | 2024.01.01 |
(1단계)OBDII open 소스 코드 분석 위한 준비물 : esp32(1)-2 (0) | 2023.12.31 |