2015年8月30日日曜日

ELM327を使ってArduinoをOBD2に繋いでみた。

だいぶ前に買ったOBD2 ScanっていうOBD2のBluetoothアダプタを改造してArduinoを繋いでみた。
裏側からBluetoothモジュールが透けて見える。HC-05かな?
このアダプタはELM327とBluetoothシリアル変換モジュールを組み合わせたもののよう。
ATコマンドでELM327のバージョンを調べるとv1.4bの模様。
最近はもっと小型のアダプタが出てて、バージョンも2.1らしいんだけど、対応車種減ってるとかで…

分解するには表面のシールを剥がす必要がある。カッターで軽く持ち上げてネジ4つを緩める。
結構ケーブルが雑…
裏面にはBluetoothモジュール、表面はELM327なんだけど実はPIC18F2480。さすが中華製。
BluetoothモジュールはHC-05もしくはHC-06かな?

Bluetoothモジュールはシリアル通信用なのでこいつをはがせばELM327と直接通信できる。
 BluetoothモジュールはVCCとGNDとTXとRXしかハンダ付けされてなかったのでさくっと外れた。ELM327は5V駆動でHC-05は3.3V駆動なのにレベルコンバーターがついてない…
5Vトレラントなのかな…
それはさておき、Arduinoと接続するために5VとGNDとRXとTXを取り出してみた。

ATコマンドなので比較的簡単にArduinoとやりとりできそうなんだけどELM327用のライブラリがあったので使わせてもらった。
というかFreematicsってところが出してるOBD-II Adapter for Arduino用のライブラリがそのまま使えた!
まぁModel Aは今回作ったものとほぼ同じものだろうし。ケースも同じっぽいし…

とりあえずArduinoにLCDモジュールを乗っけてテスト用に…
どうもFIT RS(GE8)で認識しない…
やはりライブラリはFreematicの製品専用なのかなーと思って眺めてみると中身はELM327と通信できるように作られてるだけでバージョン判定とかも全くしていない模様。
ELM327の方を疑ってみるとどうやらプロトコル自動判別が微妙らしい?
という情報を入手したのでプロトコルを手動選択にしてみた。
GE8はCAN 500Kbps/29bitのようなので、ATコマンドでATSP7で行けそう。
ATCVコマンドで電圧補正もかけといた。
とりあえずエンジン回転数を表示するテスト。
AndroidからBluetoothで接続してTorque使うより断然レスポンスが良い。
OBD2自体はだいぶ通信速度速いのねぇ(車種による
まぁOBD2につなぐ本格的なメーターも出てるぐらいだしね(すげー高いけど
ちなみに今回のOBD2のアダプタとArduinoとLCDで3k円ぐらい。
ELM327 v2.1(のパチモン)だとだいぶ安いけどどうなんだろう…

と、言うわけでひとまずArduinoでOBD2の情報読み出せるようになった
ELM327の自動認識微妙だなぁ
Arduino側で自動認識実装するしかないのかなぁ。
そういやELM327より高性能なSTN1110っていうICも出てきてるみたいなんだけど
高そう。

2015年8月1日土曜日

Xbox 360 ワイヤレス コントローラーをWindows 10で使ってみた。

Windows 10をインストールしたらドライバはほとんど入ってしまって、Intel INFとNvidiaのドライバを追加でインストールしたぐらいという。
自分が持ってるXbox 360のレシーバーは非純正品というかeBayで買ったパチモンなのでドライバを手動でインストールしてみた。
Windows 7の時は純正のドライバを最初にインストールしてたけど、Windows 8以上にはXbox360周辺機器のドライバが予め組み込まれてるようなのでソフトウェアのインストールは不要。

まずXbox 360 Wireless Receiver for WindowsをPCに接続して、デバイスマネージャーを開く。
純正品だと勝手にドライバが入るんだけど今回はコピー品なので不明なデバイスになる…
不明なデバイスを右クリックして「ドライバーソフトウェアを更新」
「コンピューターを参照してドライバー ソフトウェアを検索します」を選択。
ここまではWindows 7の時と同じ手順。
「コンピューター上のデバイスドライバーの一覧から選択します」を選択。
デバイス一覧が出るはずなのでスクロールして「Xbox 360 周辺機器」を選択。
「Xbox 360 Wireless Receiver for Windows」を選択。
パチモンなのでこんなエラーが出ますが気にせず「はい」を押す。
これで正常にインストール完了!
後はコントローラーのペアリングボタンを押してからレシーバーのペアリングボタンを押すとペアリングが完了して、コントローラー本体のドライバが勝手にインストールされるはず!

なんかXbox oneのコントローラーはWindows 10で不具合出てるようだけどXbox 360コンは問題なく動いてる模様。