前回の続きです。
最終的には、CANインタフェースを持っている「PIC18F2480」などを使って、スタンドアロンで動作するモジュールを作ることを目標としていますが、まずは小手調べとして、CANバス上に流れているデータを、ノートPCでロギングするツールを作ることにします。
なぜにロギング・ツールから先に作るかというと、つぎのような理由に依ります。
CANプロトコルでは、標準で用意すべきPID(Parameter ID)の他に、メーカーで独自にPIDを割り当てることができるようになっています。BMWでも、車載されている多数のモジュール対して、独自のPIDを割り当てているでしょうから、CANバス上に流れている膨大なデータの中から希望の情報を取り出すためには、どのPIDにどのような情報が割り当てられているのか、一つ一つ対照していく必要があります。
いつも親切丁寧な「BMWカスタマー・サポート」のお姉さんに聞いても良いのですが、そんなこと教えてくれる筈もなく(当たり前だ)0xF9C7、独自に解析していかなければなりません。ほとんど全検索するぐらいの勢いで。
初めて作る「PIC18F2480」のCANインタフェースの動作チェックをしながら、CANバス上に流れているデータのチェックをしていたのでは、どちらをデバッグしているのか分からなくなってしまいます。
(「PIC18F2480」の評価用ボードは、ボッタクリだし、DIYの精神に反するので却下)
そこで、まずはノートPCに接続して、CANネットワークのデータを解析できる環境を作ることにします。
CANバス上に流れているデータを吸い出すために、便利なチップがあります。カナダのElm Electronics社が開発・販売している、「ELM327」というチップです。
このELM327を使うことにより、OBD-IIコネクタに出ているCANの信号を、RS-232Cのシリアル信号に変換することができます。
とりあえず、データシートにある標準回路をベースに、実験用の回路を作ってみました。
回路を考えていた時に、気付いた点を一つ。
ELM327のピンアサインを眺めていたところ、「何となく、PIC18Fファミリのピンアサインとよく似ているなぁ」と思っていたのですが、データシートをよくよく読んでみたところ(英文60ページ!!)、脚注に小さく、「ELM327は、PIC18F2x8xファミリのデバイスを用いています」との記述が・・・。
(なんだよ~、早く言ってよ~)0xF9C7
当初、ELM327をテストベッドとして、(BMWの)CANネットワークの解析をしてから、PIC18F2480のCコンパイラ用のCANライブラリの勉強をしようと思っていたのですが(これがなかなか難儀そう)、ELM327をうまく使えば、後者を省くことができそうです。
ということで、CANからRS-232CへのインタプリタとしてELM327を用いて、各種数値を視覚化するためのコントローラとして、一般的なPIC(PIC18Fファミリ等)を使うことにします。
(最終的に、モジュールの小型化を図る際には、PIC18F2480を使うかも知れませんが)
〔関連情報〕
・ELM327 DataSheet
・ELM327 QuickSheet
・ELM327 AT Commands
SOARISTO様
はじめまして 横浜Gと申します.
いつも楽しく拝見しております.
CANについての記事 興味津々で読ませていただいております.
私も以前,挑戦しようかと思い色々と読みあさっていたのですが
仕事の方が忙しくなり保留状態です.
http://www.obd2-shop.eu/
以前,部品調達を試みようかと思っていたサイトです
参考になれば幸いです
では PCの向こうより 成功を応援しております.
横浜Gさん、こんばんは&はじめまして。SOARISTOと申します。
もの凄い情報、どうもありがとうございます。コネクタやケーブル、LCDに表示するキットも販売されているのですねっ!!
(OBDのフォーラムもあったのですが、ドイツ語だったので諦めました)0xF9C7
OBDは、日本では、まだあまり馴染みのないようですが(多くの車に搭載されてはいますが、いじり倒しているホビイストは少ない)、ヨーロッパでは、さすがボッシュが提唱しただけあって、様々なツールや情報が公開されているようですね。
現在、カナダからチップを取り寄せており、首を長くして到着を待っているところです。今後、どのような展開となるか、まったく分かりませんが、ポチポチ解析していこうと考えております。
有益な情報、どうもありがとうございました。また何かございましたら、ご教示いただければ幸いです。引き続き、どうぞよろしくお願いいたします。