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
必要な機器のページをご覧になった上で、本章のコネクタ図を参考に配線接続を行ってください。
OpenSSMを OBD-IIのコネクタに取り付けます。OBD-IIのコネクタは、車種によって若干位置が異なります。例えばインプレッサ WRX STi (GDB-F) の場合は、下図のように運転席のハンドル下部にコネクタが取り付けられています。レガシィB4では、運転席のアクセルペダルの右脇(タイヤ側)にコネクタが取り付けられています。
また OBD-IIのコネクタには取り付け方向があります。上下逆向きに差し込むと、OpenSSM側のコネクタを破損するだけでなく、車両側のコネクタを破損してしまったり、ECUの故障の原因となります。そのほかコネクタにゴミなどが付着していないか、差し込む前に必ず確認してください。
OpenSSMを取り付ける際には、コネクタをよくご確認の上で作業を行ってください。
コネクタについて説明します。
No. | コネクタ名 | 信号名 / 接続デバイス | 備考 |
(1) | RJ-45 | OBD-IIケーブル | |
(2) | PS/2 | PS/2キーボード | |
(3) | φ3.5ステレオジャック | 外付けメータ | |
(4) | RCAメス | モニタ出力 | |
(5) | RCAメス | スーパーインポーズ入出力 | |
(6) | RCAメス | スーパーインポーズ入出力 | |
(7) | D-Sub 9pin メス | RS-232 | |
(8) | 丸ピンソケット | 加速度センサ | EEPROMリセットまたはファームウェア書き込み時に抜く |
(9) | ピンヘッダ | Pickit2用 ICSPコネクタ | |
(10) | 可変抵抗 | 外付けメータ調整用 |
OpenSSMのスクリーンは、全部で 12画面あります。ちょうど PS/2キーボードのファンクションキーと一対一で割り当てられています。ユーザはファンクションキーを押すと、いつでも画面を切り替えることができます。
[PageUp] [PageDown] キーでも順次画面を切り替えることができます
Key | Function | Note |
[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 Setup | OpenSSMの基本設定 |
[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を実行する |
OpenSSMの各種設定を行います.
項目 | 表示/設定内容 |
MODE | OpenSSMモードと OpenPort下位互換モード*4を切り替えます |
TIRE Width | タイヤの幅を設定します |
TIRE Flat | タイヤの扁平率を設定します |
TIRE Inch | ホイールの直径を設定します |
TIRE Circle | タイヤの円周を表示します |
Fuel Price | ガソリンの価格を入力します。燃費モニタに走行単価が表示されます |
SSM Wait | OpenSSMモードのときの通信待ちウェイトを設定します。 小さくするとデータの取得が早くなりますが、失敗する可能性も高まります |
SSM Cycle | OpenSSMモードのときのデータ取得間隔を表示します。 通信できていないときは、65535が表示されます |
SSM Error | OpenSSMモードのときのデータ取得に失敗した回数を表示します |
Final | 最終減速比を設定します |
1st | 1速目のギア比を設定します |
2st | 2速目のギア比を設定します |
3st | 3速目のギア比を設定します |
4st | 4速目のギア比を設定します |
5st | 5速目のギア比を設定します |
6st | 6速目のギア比を設定します |
7st | 7速目のギア比を設定します |
使わないギア(シフトポジション)は、数値を小さくして計算上表示されないようにしてください
項目 | 表示内容 |
117.8kbps | UART1のボーレートを表示します。実測値のボーレートなので、PC側では近い値を設定してください スクリーンショットの場合は、PC側を 115200bps に設定します |
128/128 | UART1の 空送信バッファ / 送信バッファサイズ を表示します |
16/16 | UART1の 空受信バッファ / 受信バッファサイズ を表示します |
4.8kbps | UART2のボーレートを表示します。ECU側なので、4800bpsに固定されています |
50/50 | UART2の 空送信バッファ / 送信バッファサイズ を表示します |
24/70 | UART2の 空受信バッファ / 受信バッファサイズ を表示します |
ビデオ出力/スーパーインポーズ入出力の設定を変更します。画面の白枠は、OpenSSMの描画領域を示しています。
本項は、NTSC信号に詳しい方向けの内容となっています。設定変更の際には、OpenSSMの回路図及びソースコードを確認した上で行ってください。
外付けメータの制御設定 (メータの校正) を行います
TARGETへカーソルを戻さずに画面切替を行うと、メータとして動作せずに電圧出力の値がそのまま保持されます
環境設定の読込と保存、初期化ができます。各種設定を行った際には、この画面を呼び出して手動で設定を保存します *5 。
デバック情報を表示します。画面切り替え以外の操作はできません。
基板情報を表示します。画面切り替え以外の操作はできません。
大変申し訳ありませんが、OpenSSMにはケースが付属しません。お手数ですが、適当なケースを作って、基板を保護してください。
金属など電気良導体をケースに使う場合には、絶縁対策を十分に行ってください。
ダイソーで購入した 200円の合成皮製の名刺入れをハサミで一部カットして使用しています
同時使用ができる機能一覧*6 | |||||||
機能名 | SSM通信モード | OpenPort下位互換モード | 汎用モード | 備考 | |||
ビデオ出力 | スーパーインポーズ | ビデオ出力 | スーパーインポーズ | ビデオ出力 | スーパーインポーズ | ||
ビデオ出力 | ○ | × | ○ | × | ○ | × | |
スーパーインポーズ | × | ○ | × | ○ | × | ○ | |
ECU <--> OpenSSMの通信 | ○ | ○ | × | × | × | × | |
ECU <--> PCソフトの通信 | × | × | ○ | ○ | × | × | |
CSVログ出力 | ○ | ○ | ×*7 | ×*8 | × | × | |
EEPROMの読み書き | ○ | ○ | ○ | ○ | ○ | ○ | |
PS/2キーボード入力 | ○ | ○ | ○ | ○ | ○ | ○ | |
LED点灯制御 | ○ | ○ | ○ | ○ | ○ | ○ | |
加速度センサ | ○ | ○ | × | × | × | × | |
外部メータの制御 | ○ | ○ | × | × | × | × |
CPU | Microchip PIC24FJ64GA002 (35.84MHz) |
ROM/RAM/EEPROM | 64KB/8KB/8KB |
RS-232 | RS-232C (D-Sub 9pin メス) |
2400 〜 230kbps | |
OBD-II | ISO-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 (ほか未検証..., たぶん大丈夫...) | |
LED | CPU負荷 / 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ピクセルフォント (ぱうフォント) | |
最大ビデオ解像度*9 | 288×224ピクセル |
36文字×28行 8×8ピクセルフォント (美咲フォント) | |
ビデオオプション*10 | 左右反転表示(バックカメラ等のため) |
白黒反転表示 (ビデオ出力時のみ) | |
フォントドライバ | FONTX2ドライバ (ASCII文字のみ) |
FONTX2に対応したフォントならば入れ替え可能 |
エンジン回転数 | 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] のキーしか使用しません