VNマルチコントローラー開発&取り付け
1
Raspberry Pi Zero W + RS485 CAN HATを使用した自作 VNマルチコントローラーの開発と取り付け。
★★★★
お約束
★★★★
CAN通信は車を壊したり重大な事故に直結する可能性があるので知識のない方は安易に真似しないこと。何があっても全て自己責任。
2
以前アップしたCAN通信準備編ではアイドリングストップOFF制御を純正エンジンスターターカプラーから取り出したCAN信号線使って行おうと考えたが、いくらやってもうまくいかず。
自分のにわか知識だと、どのCAN信号線からメッセージを送っても制御できるはずと考えていた。しかし、実際にはDMS CAN信号線が制御OKで、エンジンスターターCAN信号線が制御NGという理由が分からずモヤモヤしていた。
ようやく時間が取れたのでディーラーにお願いしてVN CANシステムに関する資料を見せてもらいほぼクリアに。
自分は車内CANの各ノードは1つのバスに接続されているものと考えていたが、実際には6つのバス(SS、C、B、PU、PU2,SA)に分かれていて、それぞれのバスはセントラルゲートウェイCUに接続されていた。
ここからは推測になるが、エンジンスターターが接続されているバス上にCANモニタ機器を接続し、センターコンソール機器からアイドリングストップOFFを行うとそのCANメッセージはモニタできる。しかし、エンジンスターターCAN信号線からアイドリングストップOFFメッセージを送っても制御できない事から以下のような処理を行っていると考えると自分的には合点がいく。
(1)CGWは送信されたCANメッセージがそのバス配下から受け付けられるCANメッセージかどうかを監視
(2)受け付けられるCANメッセージであれば、CGWは他バスにブロードキャストし目的のノードにCANメッセージが届く
(3)受け付けられないCANメッセージであれば、CGWはブロードキャストせずにCANメッセージを廃棄。目的のノードにCANメッセージは届かない
実際にエンジンスターターCAN信号線からアイドリングストップOFFを送った時はセンターコンソールユニットのアイドリングストップがグレーアウトしていたと思うのでCANメッセージ廃棄だけではなく不正なメッセージとして処理しているのかもしれない
3
前置きが長くなったが、中嶋飛行機さんの整備手帳にA-PIT ドライブモードコントローラーを非アイサイトX車に取り付ける場合の説明がアップされていたので純正エンジンスターターカプラーからこちらのカプラー接続へ変更。まずは確認のためこのカプラーにRaspberry Pi ZeroからくるCAN信号ケーブルを簡易接続。
中嶋飛行機さん、ありがとうございます!
4
CANメッセージのモニタリングOKだったので確認のためのcansendコマンドでアイドリングストップOFFメッセージを送ってみると今までの苦労が嘘のように1発でアイドリングストップOFFになった。
5
アイドリングストップOFFがうまくいったのでRaspberry Pi ZeroからくるCAN信号ケーブルを固定する。本来は分岐コネクターをかまして固定すべきだが写真のようにカプラーロックを外して下側カプラーに端子を突っ込んで固定。
最初はグローブボックスを外さず作業していたため作業しずらかったが、グローブボックスを外したらめちゃ作業しやすくなり、カプラーロックもすんなり外れた。
6
カプラー接続とカプラーをロックして固定完了。
7
Raspberry Pi Zeroは100均で購入した伸び縮みするマジックテープを使用して固定。
8
あとは、元々作成してあったPythonコードを手直しし、動作確認して完了。
Raspberry Pi ZeroはLinux起動が遅いのでエンジンをONにしてからアイドリングストップがOFFになるまで大体60~90秒ぐらいかかる。
Pythonコードは公表しないが、ざっくり以下のような処理を行っている。
(1)canインタフェース設定
(2)python canライブラリのバス設定
(3)エンジンON(エンジン回転数)を監視
(4)エンジンがONになったらアイドリングストップメッセージ送信
(5)Linuxシャットダウン(Linuxファイルシステム破損防止のため)
ちなみに、AVH ONやドライブモードをINDIVIDUALに変更した際に送信されるIDも目星を付け、送信パターン等も確認して制御を試したがうまくいかず。
今接続しているCAN信号線だとダメなのかIDが違っているのかメッセージの送り方がダメなのか等々原因を特定できていないので気長に試してみる予定。
エンジン始動の儀式が1つ減っただけでもかなり楽になった。
取り付け後、1週間ほど何回も動作させたが1回だけエンジン始動後アイドリングストップOFFにならない事象が発生したがそれ以外は全く問題なし。途中でONになるようなこともなかった。
今今のPythonコードはアイドリングストップOFFメッセージ送ったら直ぐにLinuxをシャットダウンしているのでアイドリングストップがOFFになったことを確認し、OFFになっていない場合は再度メッセージを送るように修正すれば改善できると考えている。
関連パーツレビュー
[PR] Yahoo!ショッピング
おすすめ順
売れている順
入札多数の人気商品!
[PR] Yahoo!オークション
入札が多い順
終了時刻が近い順
関連コンテンツ
関連整備ピックアップ
関連リンク