Subaru Select Monitor for OpenSource

 OpenSSMとは、スバル(SUBARU)の インプレッサ(IMPREZA) や レガシィ(LEGACY)、フォレスター (FORESTER) などに搭載されている SSMP : Subaru Select Monitor Protocol を使って通信を行い、ECU : Engine Control Unit 表示するオープンソースハードウェア (open source hardware) です。NTSCカメラにも対応しており、映像の上に ECU情報をテロップ(スーパーインポーズ)のように表示や録画ができます。

 ハードウェアの動作に最低限必要なものは、OpenSSM本体と SSM対応の自動車などです。単にメータ表示だけを行いたい場合は、外付けの液晶モニタを用意してください。PCへログを保存したいときには、RS-232ケーブル(USB-RS232変換ケーブル)を用意してください。また、WinSSMのように映像を記録したい場合は、NTSC出力のカメラとビデオレコーダを用意してください。

 OpenSSMは頒布されておりますが、回路図/基板図などの各種図面とファームウェアはすべて公開されており、ユーザは自由にカスタマイズできます。ぜひファームウェア書換環境 (Microchip PICkit2 *1 または PICkit3 *2 など) を購入して、カスタマイズしてください! *3

SystemArchitecture.png
 
 

必要な機器

 OpenSSMをお使いになるために、別途ご用意して頂く機器について説明します。
 OpenSSMでは、主に下記の使い方を想定しています。

  1. ビデオ出力による多機能メータ
  2. スーパーインポーズによるビデオ撮影+多機能メータ
  3. WinSSM / ECU Explorer / RomRaiderなどを使ったデータロガー (tactrix OpenPort 1.3 下位互換*4)
  4. ブースト計など外部メータのコントロール*5
  5. 単なるスーパーインポーズシステムとして... (クルマ関係なしで ^^;)
  6. etc...

 ご利用になる環境によって、ご用意して頂く機器が異なりますので順に説明します。

ビデオ出力による多機能メータ

 ビデオ出力による多機能メータとしてご利用になる場合には、OpenSSM対応の自動車と OpenSSM本体の他に、下記の物をご用意ください。

  1. 液晶ディスプレイ (LCD)
  2. コンポジットビデオケーブル (RCAコネクタのもの)
  3. PS/2対応のキーボード
1.png

スーパーインポーズによるビデオ撮影+多機能メータ

 スーパーインポーズによる多機能メータとしてご利用になる場合には、OpenSSM対応の自動車と OpenSSM本体の他に、下記の物をご用意ください。

  1. 液晶ディスプレイ (LCD) または ビデオレコーダ
  2. コンポジットビデオケーブル (RCAコネクタのもの)
  3. ビデオカメラ
  4. PS/2対応のキーボード
2.png

WinSSM / ECU Explorer / RomRaiderなどを使ったデータロガー

 tactrix OpenPort 1.3対応の各種ロギングソフトウェアをご利用になる場合には、OpenSSM対応の自動車と OpenSSM本体の他に、下記の物をご用意ください。

  1. PS/2対応のキーボード
  2. Windows2000以降が動作するPC
  3. ストレート結線の RS232Cケーブル または USB-RS232変換ケーブル
OpenSSMの回路が対応していないため、ECUの書換はできません.
3.png

ブースト計など外部メータのコントロール

 エンジンにセンサを取り付けずに、ECUとの通信データを元に外部メータを制御する場合には、OpenSSM対応の自動車と OpenSSM本体の他に、下記の物をご用意ください。液晶ディスプレイと PS/2対応のキーボードは、初期設定のみに使用します。設定後は、不要です。

  1. 液晶ディスプレイ (LCD)
  2. PS/2対応のキーボード
  3. 外部メータ (AUTOGAUGE AGBOSMSWL270-PK.BARでのみ動作確認)
本機能は、電気/電子に詳しい方向けとなります。自力でなんとか出来る方のみ、ご使用ください。
4.png

単なるスーパーインポーズシステムとして

スーパーインポーズのおもちゃとして使えるようにする、予定 (未定)
5.png

PS/2 キーボードについて

 PS/2 キーボードは、OpenSSM本体の設定のために使用します。
 設定完了後には OpenSSM上の EEPROMへ設定内容を記録できるため、PS/2 キーボードを取り外すことができます。また次回の電源投入時からは、EEPROMの内容が自動的に読み込まれます。したがって、設定以外の場面では PS/2 キーボードは不要になります。

 OpenSSMが対応している PS/2 キーボードについては、こちらをご覧下さい。

使い方

配線と接続方法

 必要な機器のページをご覧になった上で、本章のコネクタ図を参考に配線接続を行ってください。

SystemArchitecture.png

OpenSSMと自動車との接続について

 OpenSSMを OBD-IIのコネクタに取り付けます。OBD-IIのコネクタは、車種によって若干位置が異なります。例えばインプレッサ WRX STi (GDB-F) の場合は、下図のように運転席のハンドル下部にコネクタが取り付けられています。レガシィB4では、運転席のアクセルペダルの右脇(タイヤ側)にコネクタが取り付けられています。

 また OBD-IIのコネクタには取り付け方向があります。上下逆向きに差し込むと、OpenSSM側のコネクタを破損するだけでなく、車両側のコネクタを破損してしまったり、ECUの故障の原因となります。そのほかコネクタにゴミなどが付着していないか、差し込む前に必ず確認してください。

OpenSSMを取り付ける際には、コネクタをよくご確認の上で作業を行ってください。
OpenPort_01.jpg
 
OpenPort_02.jpg

コネクタについて

 コネクタについて説明します。

No.コネクタ名信号名 / 接続デバイス備考
(1)RJ-45OBD-IIケーブル
(2)PS/2PS/2キーボード
(3)φ3.5ステレオジャック外付けメータ
(4)RCAメスモニタ出力
(5)RCAメススーパーインポーズ入出力
(6)RCAメススーパーインポーズ入出力
(7)D-Sub 9pin メスRS-232
(8)丸ピンソケット加速度センサEEPROMリセットまたはファームウェア書き込み時に抜く
(9)ピンヘッダPickit2用 ICSPコネクタ
(10)可変抵抗外付けメータ調整用
 
cn.jpg
 
connector.png

ケーブル接続例

view.jpg

操作方法

スクリーンの種類と切り替え方法

 OpenSSMのスクリーンは、全部で 12画面あります。ちょうど PS/2キーボードのファンクションキーと一対一で割り当てられています。ユーザはファンクションキーを押すと、いつでも画面を切り替えることができます。

[PageUp] [PageDown] キーでも順次画面を切り替えることができます
KeyFunctionNote
[F1]Multi Meter for Monitor
[F2]Racing Meter for Monitor
[F3]Fuel Meter for Monitor
[F4]Multi Meter for Superimpose
[F5]Racing Meter for Superimpose
[F6]Fuel Meter for Superimpose
[F7]SSM SetupOpenSSMの基本設定
[F8]NTSC Setup画面の表示位置、タイミング調整など
[F9]External Meter Setupメータの種類、出力値の調整など
[F10]Configuration Setup環境設定の読込と保存、初期化
[F11]DEBUG Monitorデバック情報の表示
[F12]Product Infomation基板名、バージョン、シリアル番号などの表示

基本操作一覧

Key操作内容
[F1] 〜 [F12]画面切り替え
[PageUp][F1] → [F2] ... [F12]へ順次画面を切り替える
[PageDown][F12] → [F11] ... [F1]へ順次画面を切り替える
[↑]画面にカーソル > があるとき、カーソルを上に動かす
[↓]画面にカーソル > があるとき、カーソルを下に動かす
[←]カーソル行の数値を小さくする、またはカーソル行の設定を切り替える
[→]カーソル行の数値を大きくする、またはカーソル行の設定を切り替える
[DEL]キーリピートの速さを変える (Fast <--> Slow)
[HOME]クイックセーブ. いつでも設定が保存できます
[END]内部時計の表示する/表示しないを切り替える
[Enter]Configuration Setupのときに、Load/Save/Initializeを実行する

[F1] : SSM Multi Monitor

 
 

[F2] : Multi Meter

 
 

[F3] : Fuel Consumption Monitor

 
 

[F4] : Multi Meter for Superimpose

 
 

[F5] : Racing Meter for Superimpose

 
 

[F6] : Fuel Meter for Superimpose

 
 

[F7] : SSM Setup

 OpenSSMの各種設定を行います.

  • 設定項目
    項目表示/設定内容
    MODEOpenSSMモードと OpenPort下位互換モード*6を切り替えます
    TIRE Widthタイヤの幅を設定します
    TIRE Flatタイヤの扁平率を設定します
    TIRE Inchホイールの直径を設定します
    TIRE Circleタイヤの円周を表示します
    Fuel Priceガソリンの価格を入力します。燃費モニタに走行単価が表示されます
    SSM WaitOpenSSMモードのときの通信待ちウェイトを設定します。
    小さくするとデータの取得が早くなりますが、失敗する可能性も高まります
    SSM CycleOpenSSMモードのときのデータ取得間隔を表示します。
    通信できていないときは、65535が表示されます
    SSM ErrorOpenSSMモードのときのデータ取得に失敗した回数を表示します
    Final最終減速比を設定します
    1st1速目のギア比を設定します
    2st2速目のギア比を設定します
    3st3速目のギア比を設定します
    4st4速目のギア比を設定します
    5st5速目のギア比を設定します
    6st6速目のギア比を設定します
    7st7速目のギア比を設定します
使わないギア(シフトポジション)は、数値を小さくして計算上表示されないようにしてください
 

 
  • UART1 (RS-232Cコネクタ側) / UART2 (ECUコネクタ側)
項目表示内容
117.8kbpsUART1のボーレートを表示します。実測値のボーレートなので、PC側では近い値を設定してください
スクリーンショットの場合は、PC側を 115200bps に設定します
128/128UART1の 空送信バッファ / 送信バッファサイズ を表示します
16/16UART1の 空受信バッファ / 受信バッファサイズ を表示します
4.8kbpsUART2のボーレートを表示します。ECU側なので、4800bpsに固定されています
50/50UART2の 空送信バッファ / 送信バッファサイズ を表示します
24/70UART2の 空受信バッファ / 受信バッファサイズ を表示します
 

 
 

monitor_setup_ssm.jpg superimpose_setup_ssm.jpg

 

[F8] : NTSC/Superimpose Setup

 ビデオ出力/スーパーインポーズ入出力の設定を変更します。画面の白枠は、OpenSSMの描画領域を示しています。

 本項は、NTSC信号に詳しい方向けの内容となっています。設定変更の際には、OpenSSMの回路図及びソースコードを確認した上で行ってください。

 

monitor_setup_ntsc.jpg superimpose_setup_ntsc.jpg

 

[F9] : External Meter Setup

 外付けメータの制御設定 (メータの校正) を行います

  • 設定手順
  1. 外付けメータを接続します
  2. 上下のカーソルキー [↑][↓]を使って、カーソル TARGETへ移動させます
  3. 左右のカーソルキー [←][→]を使って、外付けメータの種類を選択します
    • Vehicle Speed (スピードメータ)
    • Engine Speed (タコメータ)
    • Boost Meter (ブーストメータ/加給圧計)
    • Throttle (アクセル開度)
    • Coolant Temp (水温計)
    • IntakeAir Temp (吸気温計)
  4. 上下のカーソルキー [↑][↓]を使って、カーソル 0xffへ移動させます
    (0xffでは、外付けメータのセンサ入力へ最大電圧が出力されます)
  5. 可変抵抗を回して、外付けメータが最大値に触れるように調整してください
  6. 左右のカーソルキー [←][→]を使って、外付けメータの値を入力してください
    • カーソル位置の値(0x0f〜0xff)が外付けメータへ出力されます
    • このとき、カーソル位置の値によって外付けメータの針が動きます
    • メータの針の値を入力することで、OpenSSMの校正を行います
  7. 同様に 0xef 〜 0x0fまで、順に入力してください
  8. カーソルを TARGETまで戻してください
  9. [F10]キーを押し、EEPROM Load / Save画面で設定を保存してください
TARGETへカーソルを戻さずに画面切替を行うと、メータとして動作せずに電圧出力の値がそのまま保持されます
 

monitor_setup_extmeter.jpg superimpose_setup_extmeter.jpg

 

[F10] : Configuration Setup

 環境設定の読込と保存、初期化ができます。各種設定を行った際には、この画面を呼び出して手動で設定を保存します *7

  • 読込
  1. 上下のカーソルキー [↑][↓]を使って、カーソルを Load へ合わせます
  2. [ENTER]キーを押します
  • 保存
  1. 上下のカーソルキー [↑][↓]を使って、カーソルを Save へ合わせます
  2. [ENTER]キーを押します
  • 初期化
  1. 上下のカーソルキー [↑][↓]を使って、カーソルを Initialize へ合わせます
  2. [ENTER]キーを押します
 

monitor_setup_config.jpg superimpose_setup_config.jpg

 

[F11] : DEBUG Monitor

 デバック情報を表示します。画面切り替え以外の操作はできません。

 

monitor_debug.jpg superimpose_debug.jpg

 

[F12] : Product Infomation

 基板情報を表示します。画面切り替え以外の操作はできません。

 

monitor_info.jpg superimpose_info.jpg

 

ケース

 大変申し訳ありませんが、OpenSSMにはケースが付属しません。お手数ですが、適当なケースを作って、基板を保護してください。

金属など電気良導体をケースに使う場合には、絶縁対策を十分に行ってください。

基板の写真

pcb.jpg

ダイソーケース

 ダイソーで購入した 200円の合成皮製の名刺入れをハサミで一部カットして使用しています (^^;

case.jpg

座席に挟み込んだ、の図 (^^;

install.jpg

仕様

動作モード

  1. SSMモード
    1. モニタ出力
      • ECUの情報をビデオ表示します
      • 各種スクリーンを切り替えることによって、いろいろなデータが表示できます
      • 3軸加速度センサが使用できます
      • CSVフォーマットのログをシリアルポートから出力します
      • 外付けメータを制御できます
    2. スーパーインポーズ
      • ECUの情報を外部ビデオ映像上にスーパーインポーズします
      • 各種スクリーンを切り替えることによって、いろいろなデータが表示できます
      • 3軸加速度センサが使用できます
      • CSVフォーマットのログをシリアルポートから出力します
      • 外付けメータを制御できます
  2. OpenPort下位互換モード
    • 通信機能のみサポートしていて、ECU書き換えはできません
    • WinSSM / ECU Explorer / RomRaiderなどのログ機能が使用できます
    • OpenSSM側からは ECUの情報が得られないので、モニタ出力/スーパーインポーズには
      加速度センサぐらいの情報しか表示できません...
  3. 汎用ビデオ出力/スーパーインポーズモード
    • ビデオ映像へ好きな文字/画像をスーパーインポーズできます
    • 本機能は、主に自分でプログラムを書き換えることのできる方を対象としています
    • プログラムは実装されていません (^^;
 
同時使用ができる機能一覧*8
機能名SSM通信モードOpenPort下位互換モード汎用モード備考
ビデオ出力スーパーインポーズビデオ出力スーパーインポーズビデオ出力スーパーインポーズ
ビデオ出力×××
スーパーインポーズ×××
ECU <--> OpenSSMの通信××××
ECU <--> PCソフトの通信××××
CSVログ出力×*9×*10××
EEPROMの読み書き
PS/2キーボード入力
LED点灯制御
加速度センサ××××
外部メータの制御××××

基板仕様

CPUMicrochip PIC24FJ64GA002 (35.84MHz)
ROM/RAM/EEPROM64KB/8KB/8KB
RS-232RS-232C (D-Sub 9pin メス)
2400 〜 230kbps
OBD-IIISO-9141
4800bps
ビデオ出力NTSC 4:3 ノーマルモード コンポジット白黒出力
RCAコネクタ メス
ビデオ出力は、黒色背景に白文字で描画されます
スーパーインポーズ出力NTSC 4:3 ノーマルモード コンポジットカラー/白黒出力
RCAコネクタ メス * 1個
スーパーインポーズされた文字や図形は、白色で描画されます
スーパーインポーズ入力NTSC 4:3 ノーマルモード コンポジットカラー/白黒出力
RCAコネクタ メス * 1個
NTSC以外 (PALなど) の映像入力は未対応
安物カメラでは信号波形がかなり汚いものがあり、画面が乱れる場合があります
PS/2インターフェースPS/2キーボード対応 (マウス未対応)
106/109 keyboard (ほか未検証..., たぶん大丈夫...)
LEDCPU負荷 / EEPROM状態表示 (青)
加速度センサ3軸±2G
外部メータ制御3.5φステレオジャックコネクタ
分解能 : 8bit (0 to 255)
出力電圧 : 0.0V 〜 12V (可変抵抗にて出力範囲を設定可能)
出力パラメータは任意に選択可
ファームウェア書換ICSPコネクタ
Microchip PICkit2 または PICkit3
動作電圧DC 9V - 16V
定格消費電力---mW
基板サイズ91(W)×50(D)×20(H)mm

ソフトウェア仕様

通信速度2400 〜 230kbps
FIFOバッファ有
ビデオ/スーパーインポーズ出力同時使用不可
標準ビデオ解像度256×192ピクセル
32文字×12行
8×16ピクセルフォント (ぱうフォント)
最大ビデオ解像度*11288×224ピクセル
36文字×28行
8×8ピクセルフォント (美咲フォント)
ビデオオプション*12左右反転表示(バックカメラ等のため)
白黒反転表示 (ビデオ出力時のみ)
フォントドライバFONTX2ドライバ (ASCII文字のみ)
FONTX2に対応したフォントならば入れ替え可能

SSM通信仕様

エンジン回転数0 〜 9999 rpm
スピードメータ0 〜 255 km/h
瞬間燃費0.0 〜 99.9 km/L
ブースト圧-1.3 〜 1.3 kg/cm2
空気量(MAF)0.0 〜 g/s
空燃費(AFR)14.7とか...
水温-40 〜 215 ℃
吸気温-40 〜 215 ℃
スロットル開度0 〜 100 %
バッテリー電圧0.0 〜 20.4 V
Ignition Timing-64.0 〜 63.0 deg
Knock Correction-64.0 〜 63.0 deg
ギア1 〜 7 速
通信遅延110 〜 120ms

キーボードについて

 OpenSSMでは PS/2の 106/109キーボードに対応しています。また、テンキー・キーボードでの入力もできます。それ以外の PS/2キーボードでは動作確認が取れていませんが、101以降であればおそらく大丈夫だと思います。

標準では、[F1]〜[F12], [PageUp], [PageDown], [↑], [↓], [←], [→], [Enter] のキーしか使用しません


*1 秋月電子 PICkit2 : http://akizukidenshi.com/catalog/g/gM-02508/
*2 秋月電子 PICKit3 : http://akizukidenshi.com/catalog/g/gM-03608/
*3 ソフトウェアの開発環境 (統合開発環境や Cコンパイラなど) は、無料で提供されています
*4 ECUの書換機能はありません
*5 ECUと通信して得られた数値を、外部メータの制御信号として出力します。言い換えると、OpenSSMがダミーセンサーとなりメータ用の信号を出力します
*6 WinSSM, ECU Explorer, RomRaiderなど OpenPort 1.3対応のソフトウェアを使う場合に切り替えます。ECUの書き換えはできません
*7 ソフトウェアのバグなどによって、意図せずに設定が壊れてしまうことを防ぐため、手動保存の方式を採用しました
*8 上記はファームウェアの仕様によるもので、個別にカスタマイズすればこの限りではありません
*9 WinSSM/ECU Explorer/RomRaider等でログの取得ができます
*10 WinSSM/ECU Explorer/RomRaider等でログの取得ができます
*11 ファームウェアを書き換える必要があります
*12 ファームウェアを書き換える必要があります