ArduinoでOBDモニタみたいなのを作った話。

ちらっとOBDモニタみたいなのが欲しくて、Arduinoなら作れるんじゃないかな、と思って作ってみた。.NET環境がメインでC(に近いArduino)なんて初めてですが、ポインタがない分簡単に理解できそう(罠)
使った物

IDEに関しては、 arduino.cc にあるものではなく、arduino.org にある、Version 1.7.11 のIDEでないと、MultiLCDでの文字表示が正常に出来なかったのでメモ。
OBDの通信プロトコルは複数あり(Ref: 自動車の自己診断機能 - Wikipedia)基本的には、使用するライブラリの OBD.h の108行目付近にある

init(OBD_PROTOCOLS protocol = PROTO_AUTO)

を、その手前あたりにenum で定義されている OBD_PROTOCOLS に合わせれば大丈夫そう。(ほとんどの場合は PROTO_AUTO で大丈夫らしい(自車もPROTO_AUTOでいけた))
また、取得出来るパラメータは同じく OBD.h に定義されてるけれども、車種によって取得出来ないものもあるので注意。

ちなみに自車はZC72S(K12B)(RS)ですが、今のところ

  • PID_ENGINE_REF_TORQUE
  • PID_FUEL_PRESSURE
  • PID_ENGINE_OIL_TEMP
  • PID_AMBIENT_TEMP
  • PID_FUEL_PRESSURE

は取れませんでした(OBD.hでDEFINEしてる値)

ちなみに現在こんなところまで出来てます

OBDは常に通電しているので、エンジンカットしても値が表示されたままだし、Arduinoは基本、電源を切るというのがない(スリープモードはあるらしい)ので、現在スリープモードとかの実装の検討とか作業してます。

ここのサンプルコードを参考にして作ってます。