Raspberry Pi 3B+でOBD2接続の車両情報ディスプレイを作る
たまにはIT研究所らしく、Raspberry Pi 3B+(以降はラズパイといいます。)を使って、ノートe-POWERやキックスの車両情報を取得できるようにしてみました。
この車両情報ディスプレイの構成などを簡単に紹介してみたいと思います。
自作した車両情報ディスプレイで出来ることは、OBD2コネクタから取得できる車両情報の表示、12V補機バッテリーの電圧値の表示、ブレーキランプの点灯状態を表示できます。
OBD2とは、エンジンなどを制御するための車載コンピュータと通信する規格(プロトコル)です。メーカーや整備工場では、自動車の故障診断などに使われています。
自作した車両情報ディスプレイで表示している数値のデータは、全てがOBD2から取得しているものではありません。
OBD2で取得できる情報
・エンジン回転数
・エンジン冷却水温度
・車両速度
など
OBD2で取得できない情報
・12V 補機バッテリーの電圧
・ブレーキランプの点灯状態
など
OBD2はこんな感じのデータが流れています。
can0 ……
can0 1C3 [8] 00 00 00 00 64 02 FF 29
can0 2B0 [8] DC 53 A2 8C 1B 00 AE 03
can0 245 [8] 7F E8 02 18 00 00 7F E0
can0 174 [8] 00 00 00 AA 0F 00 00 00
can0 284 [8] 00 00 00 00 00 00 80 06
can0 ………
車両情報ディスプレイを使用している様子は、以前の記事やYoutubeの動画を参考にどうぞ。
Youtubeの動画を撮影した時とは、画面デザインは変えていますので見た目は違いますが、中身は同じです。
Python初心者ですが、ネットからの情報で何とかしています。
車両情報ディスプレイの概要構成
次に構成を簡単に説明します。
写真のように、画面表示をする液晶ディスプレイ部、ラズパイや車両と通信をするためのコントローラーがある本体部、OBD2コネクタの接続・遮断をするリレー部で構成しています。
ディスプレイ部
ディスプレイ部は既製品です。Amazonで購入しました。
ラズパイとHDMIケーブルで接続して、画面を表示することができます。
USBコネクタは2つあり、1つは電源供給用、もう1つは静電容量方式のタッチパネル用です。
本体部
本体部は更に細かく分けられます。
ラズパイ(Raspberry Pi 3B+)
ラズパイはシングルボードコンピュータと呼ばれる小さなコンピュータです。
パソコンよりも性能は低いですが、様々な入出力と拡張ボードがあるので、使い方によってはタイマーからロボットカーまでいろんなものを作ることができます。
このラズパイにGUI(グラフィカル・ユーザ・インタフェース)を使用できるRasbian OSをインストールして、プログラム言語のPythonを動かしています。
プログラムの作成は初心者ですから、ネットで調べながら、悪戦苦闘して、取り敢えず動作させることができました。
このPythonで作成したプログラムで、車両のコンピュータから情報を取得するための通信要求を作成したり、画面表示のデザインを描画しています。
CANコントローラー
OBD2コネクタに接続したケーブルから入力する電気信号を、プログラムが処理できるように変換をしている部分です。
ICやコンデンサなどの部品を買ってきて、ユニバーサル基板に半田ゴテで取り付けていきました。
回路図はネット上に詳しく書いてくれているブログなどがありましたので参考としました。
今はIT系の仕事をしているので、手を動かす電子工作が久しぶり過ぎて、手間取りました…
電流・電圧測定ユニット
入力された電気の電流値や電圧値をラズパイが読める形に変換している基板です。
電流値はブレーキランプの点灯状態、電圧値は12Vの補機バッテリーの電圧を表示するために使用しています。
リレー部
黒いケースに収めているので分かりにくいですが、中身は普通のリレーです。
価格が安い中国製の怪しいリレーモジュールですが、意外としっかりした作りになっています。
電圧を掛けて長時間使っても熱を持つこともありません。
では、なぜリレーモジュールが必要になったのか。
実はノートe-POWERに車両情報ディスプレイを接続してテストしたとき、e-POWERシステムの起動と同時にCANコントローラーに電源が入ると、車両側にエラーが出てしまい、エンジンが掛けられないという事象が発生しました。
これを防ぐために、e-POWERシステムがスタートした後、USBケーブルに給電され、ラズパイが起動し、プログラムの準備が出来てからOBD2コネクタと接続するような動作にするため、ケーブルの間にリレーを割り入れました。
これで問題無く動作します。
最後に
このようにラズパイやプログラム言語のPythonを使うと色々なことができます。
車両情報ディスプレイのような表示項目は、市販品として、レーダー探知機などに同様の機能がついていたり、スマホのアプリで見られるようにBluetoothで接続できるような商品もあります。
メーターパネルには表示できないような情報を見たりすることができるので面白いのですが、OBD2コネクタは点検や整備士が使うようなもので、一般の運転者が取り扱うことをあまり想定していません。
出所の分からない製品や不具合のある製品を接続すると、車両のコンピュータにダメージを与えたり、故障の原因になるので、扱うときは十分に注意してください。