OBD2 データ(車両情報)を csv で取得する方法

# OBD2/OBDⅡ って何？
ざっくり言うと、元々の意味は「自動車の自己診断システム」、
転じて「車両情報」の意味でも使われる。車両情報とは、車速や、エンジン回転数など、車の中のネットワーク(CAN)を流れているデータのこと。

# OBD2/OBDⅡ の歴史と今
OBD = On-board diagnostics 
元々は車の故障診断のための仕組み。
1991年、US カリフォルニア州にて、州内で販売される新車に搭載が義務付けられた。
1996年、US 全土でも新車に搭載が義務付け。
2001年、EU でも排出ガス規制の一環で新車に搭載義務付け。
2006年、日本でも新車に搭載義務付け。

排気ガスの量など本来の目的のデータ以外にも、車速、エンジン回転数などが取得できる。
規定されているデータの種類(PID)は100種類超。プラス、各自動車メーカ独自拡張（どなたか詳しい方いらっしゃいますでしょうか？）。

今では車両情報を取得するための、車に接続する OBD2 コネクタ、OBD2コネクタから情報を取得するスマホアプリ、なども登場している。

# CAN とは違うの？
異なる。
CAN (Controller Area Network) = プロトコル
OBD2 = CAN 上でやり取りされるデータ
＃気が向いたらプロトコルの仕組み書く。

# この記事でやること

* OBD2 データ取得方法
* OBD2 データのサンプル例示

# OBD2 データ取得方法
## 取得環境
| 機材 | 使用Ver/詳細 | 備考 |
|:-----------|:------------|:------------|
| 車         | OBD2 の口が付いてる車種 | - |
| OBD2 コネクター/スキャンツール | ELM327 OBD2 | Amazon で 1000~2000円|
| スマホ | Android | - |
| スマホアプリ | Torque Pro (OBD2/Car) | 425円 |

## ELM327 OBD2
![FB_IMG_13980879163977227.jpg](https://qiita-image-store.s3.amazonaws.com/0/35514/1111976c-52f3-7912-ad67-5180d5d14214.jpeg)


## Torque Pro (OBD2/Car)
![Screenshot_2014-04-20-14-34-20.png](https://qiita-image-store.s3.amazonaws.com/0/35514/e1f048b8-ce4f-1b3f-858c-11b181f03996.png)


## 手順

* 取り付け方法

大抵の車はドライバー席のハンドル下近くにある（らしい）。
![DSC_1933.JPG](https://qiita-image-store.s3.amazonaws.com/0/35514/c06a56e9-498f-ec28-7461-66b252c8fd02.jpeg)

* 発進！

![DSC_1949.JPG](https://qiita-image-store.s3.amazonaws.com/0/35514/c4f8f225-d7b2-fab3-80ac-8e0294d5cf1e.jpeg)


* 停車後

アプリを操作してログ取得を停止。
アプリを操作してログをメール送信。 zip を解凍すれば csv が出てくる。

![Screenshot_2014-04-20-14-38-04.png](https://qiita-image-store.s3.amazonaws.com/0/35514/14056e82-de86-e163-a4b2-e4b0300d2f09.png)




# OBD2 データ取得サンプル
取得可能なデータは以下の and。

* 車が出力可能なデータ
* OBD2 コネクター/スキャンツールが出力可能なデータ
* スマホアプリで取得可能なデータ


手元の環境ではもっとデータが取得出来ているが、表の横幅の都合上、適当に抜粋。

|Device Time	|Longitude	|Latitude	|GPS Speed(km/h)	|Altitude(m)	|Fuel flow rate/minute(cc/min)	|CO₂ in g/km (Average)(g/km)|
|:-----------|:------------|:------------|:-----------|:------------|:------------|:-----------|:------------|:------------|:-----------|:------------|:------------|
|11/2/2013 21:28:41	|139.7328588	|35.67952733	|35.64	|60	|28.14078903	|252.3701019|
|11/2/2013 21:28:42	|139.7328784	|35.67944345	|34.2	|60.2	|29.78537941	|251.6822205|
|11/2/2013 21:28:43	|139.7329019	|35.67936183	|33.839996	|59.7	|81.37682343	|252.40625|
|11/2/2013 21:28:44	|139.7329311	|35.67928105	|34.92	|59.2	|84.90965271	|253.214798|
|11/2/2013 21:28:45	|139.7329689	|35.67919697	|35.64	|59.7	|82.59503937	|253.8924103|
|11/2/2013 21:28:46	|139.7330095	|35.67911344	|36	|59.8	|90.57435608	|254.700119|
|11/2/2013 21:28:47	|139.7330672	|35.67903379	|36.36	|59.9	|98.91913605	|255.5753479|
|11/2/2013 21:28:48	|139.7331467	|35.67896226	|37.440002	|60.2	|101.8428574	|256.3912048|
|11/2/2013 21:28:49	|139.7332261	|35.67888301	|39.239998	|60.5	|89.90434265	|256.8464966|
|11/2/2013 21:28:50	|139.7333308	|35.67882111	|42.12	|60.3	|87.40699768	|257.1639404|


# 今後
車両情報は HTML/JavaScript から取得可能になる見込みです。

W3C で "Vehicle Information API" という名前で標準化活動がされています。

2014/04/25 1st draft がリリースされました。
http://www.w3.org/community/autowebplatform/2014/04/25/first-draft-of-vehicle-information-api-published-by-automotive-and-web-platform-business-group-2/

https://rawgit.com/w3c/automotive-bg/master/snapshots/vehicle_spec_snapshot20140425.html


# 参考
## OBD 概要
http://ja.wikipedia.org/wiki/OBD

http://ja.wikipedia.org/wiki/%E8%87%AA%E5%8B%95%E8%BB%8A%E3%81%AE%E8%87%AA%E5%B7%B1%E8%A8%BA%E6%96%AD%E6%A9%9F%E8%83%BD

## OBD2 で取得可能なデータ種類一覧（英語）
http://en.wikipedia.org/wiki/OBD-II_PIDs

## CAN 概要
http://monoist.atmarkit.co.jp/mn/kw/can_basic.html

## W3C Community and Business Groups
http://www.w3.org/community/autowebplatform/


# あとがき
OBD2 のまとめをどこかに書きたかったので、 Qiita 向きじゃない気がしたけど勢いで書いてしまった。
プログラミングぽいことしてないし。。Orz