[OBD2/2편] ELM327을 자동차의 OBD2에 연결해서 자동차정보를 아두이노에 1602LCD에 출력해보자!(녹칸다/포로리야공대가자)
프로그래밍/OBD2 2021. 3. 9. 23:02
회로도준비중
녹칸다의 OBD2시리즈 2편 영상입니다!
실제 차에서 왔다갔다 하면서 영상을 찍어야해서 스트리밍으로 못하고 녹화본으로 진행하고 있습니다~!
1편에서 ELM327과 스마트폰을 블루투스로 페어링하고 블루투스 시리얼 앱으로 Request에 대해서 어떤 response가 날라오는지 확인을 해보았습니다~~!
2편에서는 스마트폰이 하던 역할을 아두이노로 대체해보고자 합니다!
블루투스통신은 마스터와 슬레이브간의 통신으로 이루어지는데, 1편에서는 ELM327이 슬레이브이고 스마트폰이 마스터였습니다~~!
스마트폰이 블루투스 마스터역할을 할 수 있었기에 가능한 부분이었죠!
아두이노에 블루투스 모듈을 연결해서 ELM327과 페어링하려면 마찬가지로 마스터 역할을 수행할 수 있어야합니다~~!
오픈마켓에서 대략 구할 수 있는 블루투스 모듈이 AT09, HC06, HC05가 있는데 가장 적합해 보이는 것은 HC05입니다~~!
ELM327과 HC05를 페어링하고 PID를 Request해서 차량정보를 raw data로 받아오는 것과 1편 내용을 참조로해서 raw data를 가공해서 사람이 이해할 수 있는 값으로 가공한 것을 1602LCD에 출력해보았습니다~~!
1편에서 진행했던 ELM327과 스마트폰의 통신을 ELM327과 아두이노로 변경합니다~~!
쉽게 구할 수 있는게 대략 AT09, HC05, HC06인데 HC05가 가장 적합했습니다~~!
먼저 HC05를 마스터모드로 설정하고 보레이드를 확인한다음 특정 블루투스제품과 페어링을 하도록 세팅해야합니다!
HC05를 AT모드로 변경하기 위해서 기판에 있는 버튼을 누른채로 전원을 넣으면 됩니다!
이때 느리게 LED가 깜빡이면(대략1~2초) AT모드이고 빠르게 깜빡이면 페어링? 모드인것입니다!
영상에서 직접 ELM327과 페어링해서 데이터주고 받는것은 보여드릴 수 없어서 HC06을 ELM327이라고 가정하고 request & response 방식으로 데이터를 주고받아 보았습니다~~!
HC05에서 연결하고자하는 블루투스제품의 MAC어드레스를 알아내는 과정인데요~~!
먼저 스마트폰으로 페어링한다음에 시리얼모니터 앱으로 MAC 어드레스를 알아내면 됩니다~~!
사진의 MAC어드레스는 아래와 같은 형태로 타이핑하면 됩니다~~!
AT+BIND=0019,09,11167D
4개 2개 6개로 끊어서 입력하면 끝!
AT+BIND? 라는 명령어로 확인해보면 설정을 확인할 수 있습니다!
그럼 HC05와 HC06에 전원을 넣으면 서로 페어링이 됩니다~~!
HC05쪽에서 HELLO라는 request를 하면 HC06쪽에서 WORLD라는 response를 하도록 했습니다!
(잘되는 것을 확인하는 정도의 예제)
자동차에서 직접 테스트를 해보기 위해서 버튼 3개와 LCD를 달았습니다!
1번버튼을 누르면 AT메시지 전송 2번버튼을 누르면 0105(냉각수온도PID) 전송 3번버튼을 누르면 010C(엔진RPM)을 보내도록 세팅했습니다~~!
0105에 대한 PID를 보내보니 1편과 마찬가지로 raw data가 잘 수신되었습니다~~!
010C에 대한 PID도 잘 수신되었습니다~~!
1편에서 설명한 수식에 의해서 계산하면 현재 냉각수 온도는 59도로 측정되는군요!
엔진 RPM을 확실히 보기위해서 가속페달을 좀 밟아 보았습니다~~!
매우 잘 측정되는군요!
3편에서는 제가 PID를 직접 입력할 수 있도록 4x4 키패드를 이용해서 구현해볼 생각입니다~~~!
그럼 끝~~!