이전 Hardware편에 잠깐 언급했던 seeed-USB-CAN-ANalyzer (ELM327칩 적용)에 대해
사용 후기를 좀더 상세히 기록으로 남깁니다.
이유는 가격이 매우 저렴하고
오픈소스 python-CAN, python-OBD 라리브러리와 매우 궁합이 잘 맞습니다.
공식판매 사이트 (링크)
(참조) https://github.com/iDoka/awesome-canbus#obd-ii-tools
(참조) https://github.com/SeeedDocument/USB-CAN-Analyzer/
설치는 Github 링크를 따러서 하면 간단하게 설치할 수 있고, 아래처럼 포트에 드라이버가 인식되는지 확인만 하면됩니다.
응용 소프트웨어 : USBCAN V8.00을 실행하면
아래와 같티 하나의 창으로 구성된(심플합니다.) 화면이 나옵니다.
화면 좌측 좌측에 있는 옵션들에 대한 설명을 번호를 붙여서 정리했습니다.
Receive of ID configure usage instructions (ID 구성 사용 안내 받기)
첫번째, ID 인터페이스 수락 구성 : 변환기에서 수신한 ID 데이터를 처리하는 방법에는 두 가지가 있습니다.
예시 설명
1. 예를 들어 ID 0x00000001과 ID 0x00000002, 이 두 ID와 컴퓨터에 업로드할 의도가 없는 해당 데이터는
다음과 같이 구성합니다.
Reply to reply(1) 기능 → 응답이 오면 다시 응답하는 기능(자동 응답??)
“Add”버튼 눌러서 생성 → 각 세부 항목 변경 가능 → “Download”해서 저장후에 enable해 놓으면 알아서(?) 응답
More frames to send(2) 기능 → 여러개의 메시지(PID)를 순차 혹은 연속반복으로 보냄
“Add”버튼 눌러서 생성 → 각 세부 항목 변경 가능 → “Download”해서 저장후에 enable해 놓으면 알아서(?) 보냄
Transparent 전송 기능 (1) 선택
(2)은 CAN 프레임의 ID 필드를 제거하고 데이터만을 추출, (3)은 지정한 ID만을 수신하고, 해당 ID의 데이터를 ID를 제거한 후 시리얼 포트로 전송 (4) 선택시 Transparent 전송 시작되고(다른 기능은 모두 사용못함), 시리얼포트로 전송됨
해제하고 다른 기능들을 사용하려면 반드시 (5)을 클릭해야 함(중요)
Transparent 전송 기능은 그야 말로 CAN 통신 확장하는 것을 의미합니다.
https://wiki.seeedstudio.com/CAN-BUS_Shield_V2.0/ ← 이런 HW를 추가로 연결하면
여러개의 h/w와 Can통신을 할수 있지만 지금은 그닥 필요없는 기능이군요.
그런데...
막상 동작시켜보니 안됩니다. ㅠㅜ
https://www.youtube.com/watch?v=ttZ9ajQwT3A ← 여기서는 잘 동작하는데… 나는 안됨…왜!!!!!??????? 안될까??
2일만에 원인 찾았습니다.…. 헐..
(증상) ECU simulator에서 아무런 CAN 신호(명령)을 내보내지 않음.
(원인) Python-OBD나 ScanMaster-ELM과 같은 응용 SW로 명령을 던져야만 CAN 응답(OBD응답).
이제 어떻게 동작하는지 확인해 보기로 합니다.
동작 하는 경우 : CAN High/Low 신호의 일반적인 신호 레벨은 아래와 같습니다.
오실로스코프(알리에서 산것..) 붙여 보니 뭔가 잡히긴 합니다.
오!! 세상에나!!!!!! 구글링에서만 보던 신호가 나왔습니다.!!
(실측) 동작 하는 경우, CAN High, CAN Low 신호 잘 잡힘, 신호없는 경우 Tester기로 측정시 2.4V만 나옵니다.
이제 USBtoCAN 분석기로 ECU 시뮬레이터에게 data를 요청해서 오는지 확인하기 위해 아래처럼 두대의 노트북으로 연결했습니다.
아주 단순한 Python-OBD 코드를 하나 작성해서 실제로 돌려보기 → “RPM”에 대한 값 요청후 읽어오기 코드
(소스 코드)
import obd
import keyboard
obd.logger.setLevel(obd.logging.DEBUG)
connection = obd.OBD()
while True:
# returns the response from the car
r = connection.query(obd.commands.RPM)
print(r)
if keyboard.is_pressed('esc'):
break
(결과) OBD 명령을 보내서 원하는 값이 잘 읽어 오는것으로 확인됩니다.
기능중에 "자동 응답 기능"이 있습니다.
사용 사례는 .. 예를 들어 ECU가 주변 다른 ECU 호출하거나 연결되어 있는지 신호를 보내면
자동으로 응답하는 기능에 사용할 수 있을 듯 합니다.
Seeed-USB-CAN-Analyzer 2대(같은 라인 연결) + CANalystII(Ch0, Ch1)분리연결 → 잘 동작합니다.
난생 처음으로 CAN 신호를 읽어 보고, 직접 눈으로 확인했습니다.
신기하네요.... !!!!!!!
'Peugeot 차량 DIY CAN 통신 해보자!(508기준)' 카테고리의 다른 글
(9) 드디어, 푸조 엔진 ECU에 연결 시도하다!!! (2) | 2023.10.17 |
---|---|
(8) 나름 고급형?? CAN 분석기 : CANalyst-II pro (1) | 2023.10.17 |
(6)CAN 통신 활용해서 푸조 207, 208에 응용한 멋진 사례... (2) | 2023.10.16 |
(5)-2 Open 소스를 이용한 CAN 학습 방법을 찾다...(hardware편) (1) | 2023.10.16 |
(5)-1 Open 소스를 이용한 CAN 학습 방법을 찾다...(software편) (0) | 2023.10.15 |