* 目次 [#t55553a9] #contents * 概要 [#q78fe073] ** 概要 [#e76be596] WinSSMとは、スバル(SUBARU)の インプレッサ(IMPREZA) や レガシィ(LEGACY) などに搭載されている SSMP : Subaru Select Monitor Protocol を使って通信を行い、ECU : Engine Control Unit 情報を表示します。USBカメラにも対応しており、ECU情報の他に映像を記録できます。 ソフトウェアの動作に最低限必要なものは、Windows系のコンピュータと OpenPort系のケーブル1本で済みます。そのため、電子/機械式の後付メータや他社製ロガーと異なり、とても簡単にシステムを構築できます。 ** 機能一覧 [#cae2298f] - ECU情報の表示 -- 最大値/最小値の保持 (ピークホールド) -- 丸型メータ表示 -- 表示項目一覧 --- エンジン回転数 (rpm) --- アクセル開度 (%) --- 車体速度 (km/h) --- ブースト圧 (kg/cm^2) --- 水温 (C) --- 吸気温度 (C) --- ギアポジション (1〜6) - 簡易ラップタイム表示 - カメラによる映像撮影及び録画 - 各種情報とカメラ映像の合成 (スーパーインポーズ) -- 必須表示 (表示を消すことができません) --- ソフトウェア名及びバージョン --- 現在の日時 -- 選択表示 (表示しないこともできます) --- ECU情報 --- ラップタイム - ECU情報の [[CSV出力>http://ja.wikipedia.org/wiki/CSV]] ((EXCELなどの表計算ソフトウェアに簡単に取り込むことができます。[[FAQ : ログファイルをグラフ表示したい>FAQ/0]])) ** 動作環境及び必要な機器 [#y3e5cbd7] - 次のページをご覧ください - [[必要な機器>NecessarySystem]] * ソフトウェアのセットアップ [#k4cd7ff3] ** ソフトウェアのダウンロード [#b15fc801] - 次のページから、あらかじめ WinSSMをダウンロードしてください。 - [[WinSSM Version 1.0.0 RELEASE>SoftwareDownload/20080510]] ** ダウンロードしたファイルを解凍する [#w78f0498] - 適当なフォルダを作成して、そこへダウンロードしたファイルを解凍してください - C:\WinSSM 辺りだと、後述するコンソールからの操作が楽になります (^^) もちろんセットアップ先に関係なく、動画やCSVログの保存先は別ドライブにもできます #br #ref(extract.png) #br * クルマのセットアップ [#c44d69f1] ** OpenPortケーブル [#yc8f2bb0] *** ケーブル [#md354584] - あらかじめ PCにドライバをインストールしておいてください #br #ref(OpenPort_00.jpg) #br *** コネクタの場所 [#re32de9c] - 運転席下部にコネクタがあります (写真のペダルは関係ありません (^^;)) #br #ref(OpenPort_01.jpg) #br *** コネクタに差し込む [#ua4f5919] - OpenPortのケーブルをコネクタに差し込みます - ケーブルが邪魔であれば、適当に固定しておくことをお勧めします #br #ref(OpenPort_02.jpg) #br ** USBカメラ [#l51ba8f1] - ここでは USBカメラを例に進めます. - Windowsが認識できるカメラデバイスであれば、DVカメラなど他の物が使用できます&br;試してはいませんが、ビデオキャプチャカードなども使用できるハズです。 - カメラは必須ではありませんが、安いものでは数千円ですし、あると感激すると思いますよ (^^) カメラを使用する方は、あらかじめ PCにドライバをインストールしておいてください *** USBカメラを取り付ける : UVCAM編 [#rabbc3d2] - 助手席のサンバイザーに固定しましたが、イマイチですね... - 振動が多いと落ちてしまいそうです... #br #ref(Camera_01.jpg) #br #ref(Camera_00.jpg) #br *** USBカメラを取り付ける : GR-CAM130N2編 [#e7c08f83] - こちらも助手席のサンバイザーに固定しましたが、先ほどよりもっとしっかり固定できました - なかなか良さそうです #br #ref(Camera_02.jpg) #br #ref(Camera_03.jpg) #br ** 車載PC [#u72e5273] - ここではノートパソコンを例に進めます - AC電源が用意できるのであれば、デスクトップ型PCでも構いません (^^; *** PCの設置とケーブル接続 [#j33e777f] - 私はいつも助手席に置いています - 振動や衝撃によって PCが動いてしまうのであれば、PCの裏側にマジックテープを&br;貼り付けると良いでしょう - ただしあまり振動が多い環境では HDDへ障害を与えてしまいますので、&br;その場合は簡単な免振装置を作ることをお勧めします #br #ref(PC_00.jpg); #br *** AC電源 [#e9d2999c] - WinSSMの開発では必須アイテムですが、ノートパソコンの稼働時間が長いのであれば必要ありません - ただしノートパソコンによっては、バッテリー駆動しているとフルに性能を&br;発揮できないように設計されているものもあります - 動画保存など負荷が大きい場合には、あった方が良さそうです (^^) #br #ref(PC_01.jpg) #br * ソフトウェアの設定 [#p48f81eb] - 設定が多すぎて挫折しそうです、という声が聞こえてきそうですが... - 実際はそれほど難しい設定はありませんので、今は勘弁してください (^^; ** winssm.cfgについて [#ocd08950] - WinSSMの設定はすべて winssm.cfgというファイルに書き込まれています - メモ帳などのテキストエディタを使用して、winssm.cfgのテキストファイルを書き換えてください #br - おまけとして、320x240(QVGA)解像度用の qvga.cfgと、後述するメータ表示のみを目的とした mfd.cfgを付けました。 ** スクリーンについて [#adc23c3b] - WinSSMでは、スーパーインポーズのためのスクリーンという画面を持っています。表示や録画の解像度がそれぞれ異なっても、スムーズに表示するための仕組みです。標準では 640x480 (VGA)の解像度に設定されています。 - 通常は特に書き換える必要はありません... #br - より解像度の大きい高画質のカメラを使用する場合には、カメラの解像度に合わせておくと良いでしょう (^^) ;------------------------------------------------------------------------------ ;スクリーンサイズの設定 ;------------------------------------------------------------------------------ ;メータ合成など、内部処理用の解像度. ;モニタウィンドウや録画の解像度がスクリーンサイズと異なるときは、 ;内部で自動的に拡大縮小処理が行われる ;0 < SCREEN_SIZE_X < 2048 pixel ;0 < SCREEN_SIZE_Y < 2048 pixel SCREEN_SIZE_X = 640 SCREEN_SIZE_Y = 480 *** 座標系 [#mc55067f] - 画面中の左上が (0,0), 右下が (639,479) になっています - メータなどの表示位置を変更するときには、この範囲内に設定してください #br #ref(screen.png) #br ** OpenPort (COMポート) の設定 [#l1deae67] *** デバイスマネージャで確認する [#n109f5f3] - OpenPortの USBケーブルを PCに刺してから、デバイスマネージャを開いてください - COMポートのポート番号 (写真中では、COM4) を確認してください #br #ref(device_manager.png) #br *** 設定を変える [#v67d0c9f] - winssm.cfgの ECU_xxxの項目を変更しましょう - ほとんどテキストファイルのコメント通りですが、一応もう少し詳しく説明します (^^; -- ECU_USE : ECUに接続する/しないを選択できます。接続しない場合は、メータが変化しません。主に開発用に用意されています -- ECU_PORT : COMポートの番号を指定します -- ECU_LOG : CSV出力をする/しないを選択できます。CSV出力の使い方については、後述します #br ;------------------------------------------------------------------------------ ;OpenPortの設定 ;------------------------------------------------------------------------------ ;ECUに接続... ;0 : しない ;1 : する ;それ以外 : 起動しない ECU_USE = 1 ;OpenPortのポート(COM)番号 ECU_PORT = 4 ;ログ出力を... ;0 : 行わない ;1 : 行う ;それ以外 : 起動しない ECU_LOG = 0 ** シフトポジション表示の設定 [#k4bd031a] *** シフトポジションの表示と座標 [#tfe6448e] - シフトポジションは、N, 1 〜 6の範囲で変化します - ECUから情報が取得できないため、エンジン回転数、車体速度、タイヤサイズから現在のギア比逆算して、最終的にシフトポジションを判断しています -- MISSION_USE : シフトポジションの表示をする/しないを選択できます -- MISSION_FONT : 文字の大きさを決めます. 数字が大きくなるほど文字が大きくなります -- MISSION_X : 文字表示の X座標を決めます -- MISSION_Y : 文字表示の Y座標を決めます ;------------------------------------------------------------------------------ ;シフトポジション表示の設定 ;------------------------------------------------------------------------------ ;シフトポジション表示を... ;0 : しない :1 : する MISSION_USE = 1 MISSION_FONT = 1.5 MISSION_X = 280 MISSION_Y = 450 *** タイヤサイズとギア比の設定 [#f40dfa9d] - 標準では、IMPREZA WRX STi (GDB-F) の標準仕様に設定されています - 他の車種やタイヤを変えている方は、カタログなどを参考に適宜設定してください - ここの数値は、シフトポジション表示以外では使われていません #br - [[シフトが 5速までしかない場合は...>FAQ/3]] ;タイヤの幅 (mm) MISSION_TIRE_WIDTH = 235 ;タイヤの扁平率 (%) MISSION_TIRE_FLAT = 45 ;タイヤの直径 (inch) MISSION_TIRE_INCH = 17 ;ギア比 MISSION_FIRST = 3.636 MISSION_SECOND = 2.375 MISSION_THIRD = 1.761 MISSION_FOURTH = 1.346 MISSION_FIFTH = 1.062 MISSION_SIXTH = 0.842 MISSION_FINAL_GEAR_RATIO = 3.900 ** メータ表示の設定 [#sedb1ef6] - 次のメータ表示設定の項目は、それぞれ共通になっています。 -- エンジン回転数 -- アクセル開度 -- スピードメータ -- 水温計 -- 吸気温計 #br - 試す程度あれば、これらの項目は設定を変更する必要はないと思います (^^) *** 表示の有無 [#ubb9a7ec] - METER_xxx_USE : メータの表示をする/しないを選択できます - ECU_USEが 1のときは、メータ表示はしなくてもデータ自体は取得しています *** メータのタイプ [#qe8f0af0] - メータの表示タイプを選択します - METER_xxx_TYPE -- 0 : テキストのみ -- 1 : 丸型メータ *** メータの大きさ (直径) [#l6714081] - 丸型メータの大きさ(直径)を設定します - METER_xxx_CIRCLE_SIZE *** フォントサイズ [#x8659465] - メータのフォントサイズを設定します - METER_xxx_CIRCLE_FONT *** メータの中心座標 [#icf33a07] - メータ表示位置の中心座標を設定します - METER_xxx_CIRCLE_X - METER_xxx_CIRCLE_Y *** 文字色 [#p8584efb] - Red, Green, Blueの RGBを設定します。それぞれ 0 〜 255の範囲にしてください - 文字には縁取りがあります、反対色を設定してください - METER_FONT_RED - METER_FONT_GREEN - METER_FONT_BLUE - METER_FONT_EDGE_RED - METER_FONT_EDGE_GREEN - METER_FONT_EDGE_BLUE *** メータの円の色 [#o9d73253] - 文字色と同じように設定します - METER_CIRCLE_RED - METER_CIRCLE_GREEN - METER_CIRCLE_BLUE - METER_CIRCLE_EDGE_RED - METER_CIRCLE_EDGE_GREEN - METER_CIRCLE_EDGE_BLUE *** 最小/現在/最大値の色 [#d8fcd644] - いわゆるピークホールドの機能です - METER_CIRCLE_MIN_RED - METER_CIRCLE_MIN_GREEN - METER_CIRCLE_MIN_BLUE - METER_CIRCLE_MAX_RED - METER_CIRCLE_MAX_GREEN - METER_CIRCLE_MAX_BLUE - METER_CIRCLE_VALUE_RED - METER_CIRCLE_VALUE_GREEN - METER_CIRCLE_VALUE_BLUE *** デフォルト設定 [#n410615e] ;------------------------------------------------------------------------------ ;メータ表示の設定 ;------------------------------------------------------------------------------ ;メータ表示を... ;0 : しない ;1 : する ;それ以外 : 起動しない ;_USE ;メータのタイプ ;0 : 数値のみ ;1 : ゼロ指針の丸型メータ ;それ以外 : 起動しない ;_TYPE ;フォントサイズ ;0.0 < _FONT_SIZE < 10.0 ;メータの大きさ ;0 < _CIRCLE_SIZE < 2048 pixel ;メータの中心位置 ;0 < _CIRCLE_X < 2048 pixel ;0 < _CIRCLE_Y < 2048 pixel ;エンジン回転数 METER_RPM_USE = 1 METER_RPM_TYPE = 1 METER_RPM_CIRCLE_SIZE = 60 METER_RPM_CIRCLE_FONT = 0.6 METER_RPM_CIRCLE_X = 190 METER_RPM_CIRCLE_Y = 400 ;アクセル開度 METER_THROTTLE_USE = 1 METER_THROTTLE_TYPE = 1 METER_THROTTLE_CIRCLE_SIZE = 60 METER_THROTTLE_CIRCLE_FONT = 0.6 METER_THROTTLE_CIRCLE_X = 65 METER_THROTTLE_CIRCLE_Y = 400 ;スピードメータ METER_VEHICLE_USE = 1 METER_VEHICLE_TYPE = 1 METER_VEHICLE_CIRCLE_SIZE = 60 METER_VEHICLE_CIRCLE_FONT = 0.6 METER_VEHICLE_CIRCLE_X = 400 METER_VEHICLE_CIRCLE_Y = 400 ;ブースト計 METER_BOOST_USE = 1 METER_BOOST_TYPE = 1 METER_BOOST_CIRCLE_SIZE = 45 METER_BOOST_CIRCLE_FONT = 0.45 METER_BOOST_CIRCLE_X = 295 METER_BOOST_CIRCLE_Y = 370 ;水温計 METER_COOLANT_USE = 1 METER_COOLANT_TYPE = 1 METER_COOLANT_CIRCLE_SIZE = 45 METER_COOLANT_CIRCLE_FONT = 0.45 METER_COOLANT_CIRCLE_X = 510 METER_COOLANT_CIRCLE_Y = 380 ;吸気温計 METER_INTAKEAIR_USE = 1 METER_INTAKEAIR_TYPE = 1 METER_INTAKEAIR_CIRCLE_SIZE = 45 METER_INTAKEAIR_CIRCLE_FONT = 0.45 METER_INTAKEAIR_CIRCLE_X = 590 METER_INTAKEAIR_CIRCLE_Y = 430 ;メータ部共通設定 ;各種色設定 ;METER_FONT 文字 ;METER_FONT_EDGE 文字の縁 ;METER_CIRCLE 丸形メータ ;METER_CIRCLE_EDGE 丸形メータの縁 ;METER_CIRCLE_MIN 丸形メータの最小値 ;METER_CIRCLE_MAX 丸形メータの最大値 ;METER_CIRCLE_VALUE 丸型メータの現在値 ;0 < _RED < 255 ;0 < _GREEN < 255 ;0 < _BLUE < 255 METER_FONT_TIME = 0.4 METER_FONT_RED = 255 METER_FONT_GREEN = 255 METER_FONT_BLUE = 255 METER_FONT_EDGE_RED = 0 METER_FONT_EDGE_GREEN = 0 METER_FONT_EDGE_BLUE = 0 METER_CIRCLE_RED = 255 METER_CIRCLE_GREEN = 255 METER_CIRCLE_BLUE = 255 METER_CIRCLE_EDGE_RED = 0 METER_CIRCLE_EDGE_GREEN = 0 METER_CIRCLE_EDGE_BLUE = 0 METER_CIRCLE_MIN_RED = 64 METER_CIRCLE_MIN_GREEN = 64 METER_CIRCLE_MIN_BLUE = 255 METER_CIRCLE_MAX_RED = 255 METER_CIRCLE_MAX_GREEN = 64 METER_CIRCLE_MAX_BLUE = 64 METER_CIRCLE_VALUE_RED = 255 METER_CIRCLE_VALUE_GREEN = 255 METER_CIRCLE_VALUE_BLUE = 64 ** ラップタイム表示の設定 [#uddaffe2] - メータ表示とほぼ同じような設定になっています - 標準では画面左上に表示されます #br - 合計時間とラップ時間の2つのみ表示できます #br ;------------------------------------------------------------------------------ ;ラップタイム表示の設定 ;------------------------------------------------------------------------------ ;ラップタイム表示を... ;0 : しない ;1 : する LAPTIME_USE = 1 LAPTIME_TOTAL_FONT = 0.5 LAPTIME_TOTAL_X = 5 LAPTIME_TOTAL_Y = 15 LAPTIME_LAP_FONT = 0.5 LAPTIME_LAP_X = 5 LAPTIME_LAP_Y = 30 ** モニタウィンドウの設定 [#j7995263] - モニタウィンドウの表示設定を選択できますが、後述するショートカットキー(起動中)でも設定を変更できます ;モニタウィンドウを... ;0 : 表示しない ;1 : 表示する ;それ以外 : 起動しない VIEWER_USE = 1 *** モニタウィンドウの更新ウェイト [#jaf91285] - 内部では FPS (ms)になるように調整されています - 高速な CPUやグラフィックボードではより速く表示できますが、通常は 100ms程度で十分でしょう ;モニタウィンドウの更新ウェイト (ms) VIEWER_FPS = 100 *** モニタウィンドウの解像度 [#b7422ebe] - 表示するウィンドウサイズになります - 通常はスクリーンサイズと同じに設定してください - それ以外のサイズですと、拡大縮小の処理が入るため若干CPU負荷が増えます ;モニタウィンドウの解像度 ;0 < MONITOR_SIZE_X < 2048 pixel ;0 < MONITOR_SIZE_Y < 2048 pixel ;それ以外 : 起動しない VIEWER_SIZE_X = 640 VIEWER_SIZE_Y = 480 ** カメラの設定 [#pf348ee4] *** カメラを使う [#v0ab3ebc] - WinSSM Version 1.0.0では、カメラは1台しか使用できません ;------------------------------------------------------------------------------ ;カメラの設定 ;------------------------------------------------------------------------------ ;カメラを... ;0 : 使用しない ;1 : 1台使用する ;それ以外 : 起動しない CAMERA_USE = 0 *** カメラデバイスの設定 [#u6324661] - 通常は特に変更しないでください - より解像度の大きい高画質のカメラを使用する場合には、カメラの解像度に合わせておくと良いでしょう (^^) ;************************************** ;カメラ0 ;************************************** ;デバイス番号 ;-1 : 起動時に決める ;0 〜 255 : デバイス番号 ;それ以外 : 起動しない CAMERA_0_DEVICE = -1 ;ビデオキャプチャ時の映像解像度 CAMERA_0_SIZE_X = 320 CAMERA_0_SIZE_Y = 240 ** 録画の設定 [#xdb7de88] *** 録画をする [#p8e3234a] - 録画をする場合は、RECORD_USEを 1にしてください ;------------------------------------------------------------------------------ ;録画の設定 ;------------------------------------------------------------------------------ ;録画機能を... ;0 : 使用しない ;1 : 使用する ;それ以外 : 起動しない RECORD_USE = 0 *** 録画コーデック [#s4c449de] - RECORD_CODEC : 通常は -1に設定し、起動時に選択するようにしてください #br - 無圧縮は、CPU負荷が小さい反面 HDD負荷が大きくなります - 一般に圧縮率が高いほど CPU負荷が大きくなり、HDD負荷が小さくなります - WinSSMのデモ映像のほとんどは無圧縮または Microsoft Video 1を使用しています ;録画コーデック ;-1 : 起動時に決める ;それ以外 : 起動しない RECORD_CODEC = -1 #br #ref(codec.png) #br *** 録画解像度 [#gf243e77] - CPUや HDD速度によって解像度を決めます - おおよそスクリーンサイズ〜スクリーンの 1/4サイズが最適です - 設定値の決め方については、次のフレームレートと併せて後述します ;録画解像度 ;0 < RECORD_SIZE_X < 2048 pixel ;0 < RECORD_SIZE_Y < 2048 pixel RECORD_SIZE_X = 640 RECORD_SIZE_Y = 480 *** フレームレート [#ufe900f1] - 10fpsのときは 100ms、30fpsのときは 33.33msになります。 - ただしマシンスペックよってはこのフレームレートが出ず、コマ落ちが発生することがあります。 - 設定値の決め方については、後述します ;動画フレームウェイト (ms) ;10FPS = 100.0 ;30FPS = 33.33 ;1.0 <= RECORD_FPS <= 1000.0 RECORD_FPS = 60 ** デバックモードの使い方 [#vcc507c3] - 0 : コンソールには何も表示しません - 1 : コンソールに各スレッドの処理時間を表示します - 2 : 1の内容に加えて、SSMのパケット情報を表示します ;------------------------------------------------------------------------------ ;デバックモード ;------------------------------------------------------------------------------ ;0 : 通常モード ;1 : デバックモード ;2 : もうちっと詳しく... ;それ以外 : 起動しない DEBUG = 0 * ソフトウェアの使い方 [#jf249417] ** ソフトウェアの起動方法 [#n646ede0] - 基本的にコマンドプロンプトから起動します - アクセサリ → コマンドプロンプト #br - カレントフォルダを WinSSM (インストール先) にしてください cd\winssm #br #ref(command.png) #br - コマンドプロンプトの使い方については、こちらをご覧ください - [[コマンドプロンプトで作業効率UP>http://cmd-pro.com/]] *** 表示だけの場合 [#f8b8c3b2] - 次をタイプしてください winssm winssm.cfg *** 録画をする場合 [#n9aab48c] - 次をタイプしてください - 動画の保存形式に関わらず、拡張子を aviにしてください winssm winssm.cfg movie.avi *** CSVログを保存する場合 [#ia0ba4b2] - 次をタイプしてください winssm winssm.cfg > log.csv winssm winssm.cfg movie.avi > log.csv #br #ref(start.png) #br ** ショートカットキー [#n4b30706] - モニタウィンドウで操作します - コンソールからはキー入力できませんので、ご注意ください |キー|機能|h |[V]|モニタ表示のオン/オフ| |[R]|ピークホールドのリセット| |[S]|ストップウォッチのスタート/ストップ| |[L]|ラップのスタートストップ| |[Q]|WinSSMの終了| ** WinSSMが動くと... [#c9e0564e] - こんな感じになります &heart; #br #ref(PC_02.jpg) #br * 録画設定のポイント [#lef42a7c] - 録画処理に必要な時間を確認して、その後 RECORD_FPSを必要な時間+αに設定します + RECORD_FPSを 1にする -- 録画処理に必要な時間を求めるため、RECORD_FPSを 1に設定して THREAD_record()の待ち時間を無くします + デバックモードを1にする -- DEBUG = 1に設定して、各スレッドの処理時間を確認します. -- 特に THREAD_record()の数値が録画に関する処理になります -- ここの数値よりも RECORD_FPSを大きくしないと、録画ファイルの時間ずれの原因となります + WinSSMを立ち上げます + コンソール画面の THREAD_record()の値を確認します + WinSSMを終了します + RECORD_FPSを THREAD_record()の値よりやや大きい値に設定します + WinSSMを立ち上げます + 動画を確認します * GT-Rのような Multi Function Displayを作る! [#s5242a43] - 頑張ればパソコンのモニタやカーナビのモニタ、バックミラー取り付けタイプのモニタ、サンバイザーモニタなどに&br;GT-Rのマルチファンクションディスプレイのような表示を出すことができます #br #ref(GT-R.jpg) #br #br #ref(mfd.png) #br ** 用意するもの [#g2c3246b] + WinSSMが動くPC + NTSCのビデオ出力ができる PCが望ましいが、RGB -> NTSCのダウンスキャンコンバータでも良い + ビデオ表示ができるモニタ (RGB入力があれば、NTSCのダウンスキャンコンバータなどはいらない) -- [[液晶王国>http://www.caritem.net/]] #br #ref(backmirror.jpg) #br #ref(dvd7sv.jpg) #br ** winssm.cfgについて [#d7b09159] - サンプルとして WinSSM Version 1.0.0 RELEASEには、mfd.cfgを付けました #br #ref(start_mfd.png) #br ** セッティング [#f7335d2d] - 運転席から見やすい場所にモニタを設置する - そのほかは WinSSMと同じ mfd.cfgの場合でも、ECU_xxxの設定を変更する必要があります。忘れずに書き換えてください