今回のデバイスは自動車だ。「OBD-II」をご存じだろうか。自動車のECU(電子制御ユニット、自動車の中にあるコンピュータ)の自己診断の規格のことだ。ECUはそれぞれ「CAN(Controller Area Network)」と呼ばれる車載ネットワークに接続されており、自己診断結果などの車載情報はCANの中を流れている。OBD-IIは自己診断の規格であるが、スピード、エンジンの回転数など、自動車のインパネ(計器板)に表示される多くの情報を取得できる。

 現在販売されている自動車はOBD-IIと接続するための「OBD-IIコネクター」を搭載している。ほとんどの自動車では、ハンドルの下あたりにあるはずだ。OBD-IIコネクターにOBD-IIアダプターを接続することで、CANに流れている車載情報を取り出せるようになる。

 OBD-IIにはいくつかのプロトコルが存在するが、国内で販売している自動車は「ISO 15765」と呼ばれる規格をサポートしている。対応したOBD-IIアダプターを使えば、プロトコルを知らなくても、簡単なコマンドで車載情報を取得可能だ。OBD-IIアダプターには様々な種類があるが、PCとはBluetooth、Wi-Fi、USBで接続する。

ODBシミュレーターツールを利用

 今回は、JavaScriptを使って車載情報を取り出してみよう。OBD-IIアダプターにはUSB接続方式の製品を使う。USBシリアル通信をサポートしたプログラミング環境が必要なので「Chrome Apps」を利用する。問題は肝心の自動車だ。残念なことに私の自動車は古すぎて、OBD-IIコネクターは存在するものの、CANの中に流れるデータのプロトコルが違うため、データをうまく取得できない。

 そのため、米ScanTool.netのOBDシミュレーターツール「ECUsim 2000 OBD Simulator」を使った。OBD-IIアダプターは同社の「OBDLink SX Scan Tool」を利用する。

米ScanTool.netのOBDシミュレーターツール「ECUsim 2000 OBD Simulator」とOBD-IIアダプター「OBDLink SX Scan Tool」
米ScanTool.netのOBDシミュレーターツール「ECUsim 2000 OBD Simulator」とOBD-IIアダプター「OBDLink SX Scan Tool」
[画像のクリックで拡大表示]