
車のOBD-IIコネクタは、CAN通信インターフェイスを介してマイコンと通信することで、車から様々なデータを取得表示することができます。
そこで、 Seeed Studioで販売のマイコン「Wio Terminal」とシリアル「CAN-BUSモジュールキット」を使って、車にPIDを送出し情報を取得LCD表示してみます。
OBD(On Board Diagnosticsの略)
PID (Parameter Identification Dataの略)
1.OBDⅡモジュールの選定
シリアルCAN-BUSモジュール(MCP2551)とマイコンとの通信モジュール(MCP2515)が搭載されたキットをスイッチサイエンスさんより入手しました
コネクタのピン配置を図に示します。
2.OBDⅡ用マイコンの選定
Seeed StudioのWi-Fi/Bluetooth機能搭載のマイコン「Wio Terminal」を使ってみました。
ARM Cortex-M4F 32bitCPUコアを実装したマイコン「ATSAMD51P19」をメインに、2.4インチのカラー液晶ディスプレイ、加速度センサー、マイク、光センサー、赤外線送信用ランプ等のデバイスが一体化されています。Arduino IDEにボード設定とLongan-Labs/Serial_CAN_Arduinoのライブラリーをインクルードして使いました。
3.CAN-BUSモジュールとマイコンの接続
マイコン「Wio Terminal」とシリアルCAN-BUSモジュールを専用ケーブルで接続します。
専用ケーブルは、コネクタのすべてのピンが接続されていますが、6ピンと14ピンおよびグランドピンしか使いません。
コネクタの電源ピンは、常時電源が接続されておりバッテリ上りを防ぐため、ACC電源をシリアルCAN-BUSモジュールに接続しました。
電源ラインが取り出せるようになっているケーブルをamazonで見つけました。
4.ソフトウェア
ライブラリ(Longan-Labs/Serial_CAN_Arduino)の中にsampleプログラムが提供されているので、IDE(統合開発環境)でアレンジしてマイコン「Wio Terminal」に書き込みました。
表示したいデータを決定しLCDに表示するプログラムを作りました。
数値データだけでは分かりずらいため、スピードとエンジン回転数は、直観でわかるようにバーグラフ表示も追加してみました。
LCDとCAN通信のライブラリをインクルードして
#include"TFT_eSPI.h“
#include
下記の4つの情報を定義する
#define PID_ENGIN_PRM 0x0C // engin speed, 0-999
#define PID_VEHICLE_SPEED 0x0D // speed, 0-200
#define PID_COOLANT_TEMP 0x05 // cooltant temp: 0-999
#define PID_INTAKE_TEMP 0x0f // intake temp: 0-999
5.LCD表示結果
プログラム上でデータを設定しシミュレーション表示させ確認しました

SPEED、は100km/h以下のため数値とともに青色バーグラフ表示
RPMは、3000rpm以下のため青色バーグラフ表示

SPEEDは、100km/h以上では数値とともに赤色バーグラフ表示
RPMは、3000rpm以上では赤色バーグラフ表示
6.走行状態でのOBDモニタの表示結果
走行状態での車の速度計とOBDモニタの表示を比較してみました

TOYOTAのPRIUSに今回製作したOBDモニタを取り付けて、高速道路での走行状態で表示させ比較してみました。
PRIUSの速度表示は、OBDモニタの表示よりどの速度でも5km/h高めに表示されていました。
タイヤの空気圧の違いによる誤差やその他の設計意図により高めのスピードを表示しているように推察されます。
エンジンの回転数は上がらず、またエンジンが停止している時間も長いため、燃費が良いという事を、今回の実測から実感できました。 さすがハイブリッド!でした。
ブログ一覧 |
OBD2 | クルマ
Posted at
2024/09/16 10:08:25