프로그래밍/OBD2

[OBD2/3편] ELM327을 자동차의 OBD2에 연결해서 4x4키패드로 PID를 입력하고 자동차정보를 아두이노에 1602LCD에 출력해보자!(녹칸다/포로리야공대가자)

덕력킹 2021. 3. 16. 16:22
반응형

 

회로도준비중

 

아두이노용 소스코드

elm328_3편_소스코드.txt
0.01MB

녹칸다의 OBD2시리즈 3편입니다~!
2편에서 버튼을 누르면 지정된 PID를 request하고 받아온 response를 계산해서 1602LCD에 출력을 해보았습니다~~!

3편에서는 유저가 입력하기 원하는 PID를 직접 입력할 수 있는 방법에 대해 아두이노적인? 해법을 하나 내보았습니다~~!
아두이노는 키보드와 같은 입력 인터페이스가 없기 때문에 가장 적합하다고 생각한 것이 바로 4x4 키패드입니다~!

4x4키패드는 아두이노에 디지털핀 8개를 사용해서 16개의 버튼 입력을 감지할 수 있는 아주 기특한 녀석입니다~!
만약 택트 스위치로 16개 버튼을 구현한다면 16개의 디지털핀이 필요하게 될 것입니다~!

아무튼 시중에 숫자와 문자가 프린팅 되어있는 4x4키패드를 구입하면 숫자패드와 별표, 샵버튼, 영어A~D까지가 있을텐데요~~!
OBD2의 PID를 입력하기 위해서는 0~9와 A~F까지 표현 가능해야합니다!
그래서 별표버튼을 E로 맵하고 샵버튼을 F로 맵해서 16개의 버튼으로 16진수를 입력가능하도록 한 것입니다~~!

입력은 아직은 확장PID가 아니기때문에 4회 입력을 받도록 했습니다!
유저가 4x4키패드로 4개의 PID를 입력하면 1회 블루투스를 이용해서 ELM327로 request을 하게 되는 것입니다!

그리고 PID별로 response의 길이가 가변적이고 계산하는 공식도 다르기 때문에 유저가 입력한 PID에 대한 조건을 걸어줘야는데 우선 1편에서 보여드렸던 내용만 PID로 입력가능하도록 했습니다~!

PID를 늘리려면 조건을 추가하고 response의 길이와 계산공식을 지정해주면 아마...? 작동이 될 것입니다~!

 

ELM327모듈을 이용해서 3편 예제를 만들어보겠습니다~~!

OBD2포트에 챡 연결해주고..!

시동을 걸어줍니다~~~!

이번에 녹칸다가 준비한 OBD2용 실습도구 입니다~!

2편에서는 버튼을 이용해서 버튼을 누를때 지정된 PID가 request 되도록 했지만..!

이번에는 유저가 PID를 16진수로 직접 입력하도록 했습니다~!

(내가 원하는 것은 내가 입력하겠다!)

1편내용을 다시 복습하면서.. 0104를 입력하면 엔진부하(로드)가 퍼센트로 표현됩니다~~!

0105는 냉각수 온도가 나옵니다~!

010B는 차가 흡입하는 공기의 압력입니다!

010C는 엔진RPM입니다!

010D는 주행속도입니다!

멈춰있으니 ... 0km/h

010F는 흡기온도입니다~!

차가 흡입하는 공기의 온도!

011F는 엔진작동시간입니다~~!

시동을 걸고나서 얼만큼 시간(초)이 경과했는지~~~

마지막으로 012F는 연료량을 퍼센트로 표현한것입니다~~!

기름을 어제 넣었거덩요~~~~!

4편에서는 OBD2의 확장PID를 다루는 방법에 대해서 한번 고민을 해보도록 하겠습니다~~!

반응형