2016년 5월 26일 목요일

OBD-II (On-Board Diagnostics) 로 자동차 정보 보기 - 3편 (Digital Dashboard 만들기)

OBD-II Adapter 를 사용해서 유의미한 값들이 들어오는 것도 확인하고 이제 무엇을 해 볼까 고민을 하면서 이것 저것 찾아보다가 Audi TT 의 reconfigurable display 라는 것을 봤다.
Audi virtual cockpit (reconfigurable display) - 2016 Audi TT
기존 Analog Dashboard 를 과감히 없애고 Display 하나만 덜렁 놔두고 원하는 설정의 dashboard 를 선택하여 볼 수 있게 했다. Map 이 바탕에 깔리는게 매력 적이다. 우리 나라는 google map 이 route 를 제공할 수 없기 때문에 아쉽게도 이런 모습은 하기 힘들겠다.

그런데 자꾸 볼수록 OBD-II 로 할만한게 이것 밖에 보이지 않았다.

뭐.. 안될건 없지 않은가. 기본 정보는 OBD-II 를 통해 얻어 오고 Map 만 어떻게 해결하면 될것 같으니 한번 도전해 보는 것도 나쁘지 않을 것 같았다.

우선 줄자를 들고 차로 가서 Dashboard 가로 세로 길이를 측정해 보니 라운드 된 상단의 frame 때문에 아무리 크게 잡아 봤자 직사각형으로 넣을 수 있는 Display 크기는 8인치 였다. Audi 처럼 뽀대나게 길쭉한 Display 를 달아 보고 싶지만, 대공사가 될것 같아서 우선 기존 dashboard 를 뜯지 않고 덮는 방법으로 고민을 해야 겠다. 8인치 길쭉한 display 라.... Smart Mirror 를 만들때 사용했던 slate 는 세로가 너무 커서 불가능하고, Nexus6 는 5인치라서 너무 작다.

내가 갖고 있는 display 중에는 만족할 만한 것들이 없어서 TFT-LCD 를 구매해 볼까 하고 인터넷에 찾아보니 원하는 크기는 있었지만, HDMI 나 DVI/RGB 출력을 하려면 별도의 보드를 구매해야 하고 그 전원을 차에서 감당할 수 없기 때문에 맘을 접었다. 그렇게 한참을 찾아보다가 '9만원짜리리 Dual OS 태블릿' 이라는 키워드로 검색이 되는 중국 제품이 하나 눈에 들어왔다. 길쭉한 8인치 (211.2 mm x 123.2 mm x 9.3 mm) 로 딱 맞는 크기였다! 태블릿이라서 SIM 카드는 없고 Wifi / Bluetooth 만을 지원한다. OS 가 Windows 10 과 안드로이드 듀얼 부팅이라니... 사실 windows 는 필요없는데 구매할 때 만원이 추가 되는 아픔까지 주는 부질없는 widnows. 하여간 이거면 충분할 것 같아서 일단 구매 진행을 했다.
길쭉한 8인치 내가 찾던 사이즈다.
그런데 중국에서 오는 물건이라 시간이 걸려서 우선 slate 로 작업을 해 둬야 겠다.

음.. 그런데 ubuntu 를 깔아서 쓰는게 개발시간을 최소로 단축 시킬 수 있는데, Hi8 Pro 에 가능한지 모르겠다. Vi8 모델은 Ubuntu 을 설치할 수 있는 것 같은데 (링크), Hi8 은 일단 물건을 받아보고 확인 해 봐야 겠다.

자.. 그럼 우선 slate 에 ubuntu 가 깔려 있으므로 UI 를 만들어 보기로 하자. Dashboard 는 말 그대로 계기판이기 때문에 Gauge 가 핵심이다. 지도도 중요하지만 자동차이기 때문에 gauge 로 정확한 data 를 이쁘게~ 보여 줘야 한다. Open Source 중에 그럴싸한 것을 2가지 찾아 봤는데, 하나는 Native 용, 또 하나는 Web 용이다.
Native open source Gauge
Web open source Gauge
딱 봐도, Web Gauge 가 더 다양하고 화려하다. 요즘은 확실히 Web 이 대세긴 한가 보다. 뭐 그렇다면 대세를 따라야지... (ㅠㅜ.. 또 공부 해야 하나...)

지난번 smart mirror 를 할 때 node.js 를 좀 봐 뒀었는데, 이렇게 도움이 될 줄이야 ㅋㅋ.
간단한 node.js template 을 만들어서 UI 를 만들고 Web Gauge 를 import 했다.
Open soruce gauge 와 T-map 을 조합해서 node.js 앱을 하나 만들어 봄
짜잔! 이정도면 Audi TT 정도는 아니더라도 그럴싸하지 않은가? T-Map 은 chrome plugin 중에 usb mirroring 을 제공하는 것(Vysor) 이 있어서 그것을 사용했다. (fake 로 그림 붙인게 아니라 실제 동작 한다)

자~ UI 가 만들어 졌으니, 실제 data 를 넣어 볼까.
data 를 연동하려면 기존에 OBD-II 코드를 좀 변경해서 HM-10 과 연결해서 BLE 통신을 해야 편할 것 같다. 이건 Xiao Mi 체중계 할때 얻은 python ble 기억을 살려서 python 과 node.js 의 zero rpc 를 다시 구현해 줬다.
hm-10 과 연결해 준 OBD-II
이제 HM-10 은 필수 아이템이 되 버렸다. OBD-II 나오는 5V 출력을 부담없이 사용할 수 있는 Arduino Nano 와 HM-10 의 조합은 더할나위 없는 것 같다. 일단 RPM, SPEED, TEMPERATURE, VOLTAGE 값만 사용해서 구현해 보고 UI 를 좀 더 멋지게 꾸민 뒤 다른 값도 추가해 나가는 방식으로 해야 겠다.

TEMPERATURE, RPM, SPEED 만 대충 연동하고 급한 마음에 밤중에 시운전을 나갔다.




test 로 날조한 sketch 코드때문에 delay 가 좀 있고 VOLTAGE 는 아직 연동 하지 않았다.
T-MAP 은 안드로이드에서 돌아가는 것을 USB Mirroring 한 것이고 무료 버전이라서 화질이 썩 좋지는 않다. 이런식으로 prototype 을 만들어 봤는데, 잘 꾸미고 기능을 최적화 해서 CHUWI Hi 8 Pro 에다가 올리면, 내 차의 Dashboard 를 꾸밀 수 있을 것 같다.

아.. 피곤피곤.. 오늘은 여기까지.

댓글 1개:

익명 :

Hello!! It is very cool! I am also developing a similar device and would like to ask. Could you share your source dashboard software?