2016년 7월 5일 화요일

OBD-II (On-Board Diagnostics) 로 자동차 정보 보기 - 12편 (Integration - 다 모아 볼까~)

비도 많이 와서 걸어다니기도 힘들고 시운전은 더더욱 어려워서 집근처 스타벅스로 장비를 주섬주섬 챙기고 왔다.

따뜻한 Vanilla latte 한잔을 시켰는데 이벤트 쿠폰에 무료 음료 쿠폰까지 받는 행운이... 살면서 못 누렸던 뽑기운을 요즘 스벅에서 보상 받는 기분이다.

지난번 Gear Indicator 때문에 어찌나 신경을 썼던지 정신력 회복이 그리 녹녹하지 않았다. 비록 Inhibitor Switch 값을 TCM 을 통해 직접 받는 것은 접었지만, 어쨌든 결과적으로 기어 값을 얻게 되었으니 후방 카메라와 틈틈히 추가해 준 Canvas Animation 을 통합하기 딱 좋은 날씨다.

테스트 serial-dummy.js 를 만들고 random 으로 RPM, Speed, Gear 값을 사용했다. 이렇게 dummy server 를 만들어 놓으니 비오는 날 스벅에서 놀기에 딱 좋은 거 같다.

날 편하게 만들어준 dummy serial 코드는 아래처럼 간단하다.
var server = require('http').createServer();
var io = require('socket.io')(server);
io.on('connection', function(socket){});
server.listen(3000);

setInterval(function () {
   var gear = [7, 9, 11, 13];
   io.emit("RPM", Math.random() * (4000 - 2000) + 2000);
   io.emit("SPEED", parseInt(Math.random() * 140));
   io.emit("DIST", gear[parseInt(Math.random() * 4)]);
}, 1000);
1초에 한번씩 2000~4000 범위의 RPM, 0~140 의 SPEED, P-R-D-N 중 하나의 DIST 를 client 에게 쏴준다.

통합 테스트 시나리오는 이렇다.
1. 기본으로 Navigation View (RPM - Navigation - Speed) 를 보여 준다.
  - RPM 텍스트에 P-R-N-D 값을 같이 보여주고 Speed 는 Value 값도 같이 보여준다.
2. 기어가 R 로 바뀌면 후방 카메라를 보여준다.
  - laptop camera 로 하다보니 자다나온 얼굴이 찍힐까봐 스벅 휴지를 덮어줬다 (ㅋ PPL 아님)
3. 기어가 바뀌면 다시 Navigation 화면이 나온다.
4. 버튼이 눌리면 Simple View 로 전환한다.
  - 지도와 후방카메라가 없는 순수 계기판으로만 구성된 화면이다.
  - RPM/Speed 이외에 좀 의미 있는 값들을 보여줄 canvas 를 구성해서 더 추가 할 예정.
5. 다시 버튼이 눌리면 Navigation View 로 돌아온다.

버튼은 아두이노에 똑딱이를 달아 줄 예정이고, 현재는 2개 View 밖에 없지만, Multimedia Viuew 라던지 Google earth View 같은 것도 하나씩 추가해 나가야 겠다.

그럼 시연을 해 보자.

댓글 3개:

정예진 :

우와 이런것도 가능하군요! 대단하십니다ㅋㅋ 동수원 스타벅스DT점인가싶어서..자주는 안가지만 갈때마다 혹시나 계실까 싶어 기웃거리는데 안보이시더군요!

brian Park :

헛. 애들 방학이라 시골에서 아두이노와 함께 놀고 있어서 한동안 스벅에 못갔었는데 엇갈렸나 보군요 ㅋㅋㅋ

Unknown :
작성자가 댓글을 삭제했습니다.