前回 の続き

ECUからArduinoへ接続が正しくされていれば、Arduinoから各値をPCで受信できるようになったと思いますが、
実車に積んでみないと値が正しく受信できているか確認できないので、面倒。。。。
なもんで、Arduinoからそれっぽい数値を送信しFlashの動作をシュミレーションするだけのスケッチを使用します。

---こっからスケッチ---
//rev;spd;fuel;thro; back;
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print(1000);
Serial.print(",");
Serial.print(15);
Serial.print(",");
Serial.print(280);
Serial.print(",");
Serial.print(140);
Serial.print(",");
Serial.print(100);
Serial.print(",");
Serial.println(0);

delay(500);
Serial.print(2000);
Serial.print(",");
Serial.print(30);
Serial.print(",");
Serial.print(290);
Serial.print(",");
Serial.print(500);
Serial.print(",");
Serial.print(100);
Serial.print(",");
Serial.println(1);

delay(500);
Serial.print(4000);
Serial.print(",");
Serial.print(60);
Serial.print(",");
Serial.print(300);
Serial.print(",");
Serial.print(750);
Serial.print(",");
Serial.print(30);
Serial.print(",");
Serial.println(1);
delay(500);
Serial.print(6000);
Serial.print(",");
Serial.print(120);
Serial.print(",");
Serial.print(350);
Serial.print(",");
Serial.print(500);
Serial.print(",");
Serial.print(10);
Serial.print(",");
Serial.println(1);

delay(500);

Serial.print(5000);
Serial.print(",");
Serial.print(15);
Serial.print(",");
Serial.print(400);
Serial.print(",");
Serial.print(300);
Serial.print(",");
Serial.print(100);
Serial.print(",");
Serial.println(1);
delay(500);
Serial.print(3000);
Serial.print(",");
Serial.print(30);
Serial.print(",");
Serial.print(340);
Serial.print(",");
Serial.print(400);
Serial.print(",");
Serial.print(100);
Serial.print(",");
Serial.println(1);

delay(500);
Serial.print(2000);
Serial.print(",");
Serial.print(60);
Serial.print(",");
Serial.print(299);
Serial.print(",");
Serial.print(500);
Serial.print(",");
Serial.print(30);
Serial.print(",");
Serial.println(1);

delay(500);
Serial.print(1000);
Serial.print(",");
Serial.print(120);
Serial.print(",");
Serial.print(291);
Serial.print(",");
Serial.print(600);
Serial.print(",");
Serial.print(10);
Serial.print(",");
Serial.println(1);

delay(500);


Serial.print(0);
Serial.print(",");
Serial.print(180);
Serial.print(",");
Serial.print(280);
Serial.print(",");
Serial.print(750);
Serial.print(",");
Serial.print(100);
Serial.print(",");
Serial.println(1);

delay(500);
Serial.print(1000);
Serial.print(",");
Serial.print(30);
Serial.print(",");
Serial.print(288);
Serial.print(",");
Serial.print(600);
Serial.print(",");
Serial.print(100);
Serial.print(",");
Serial.println(0);

delay(500);
Serial.print(2000);
Serial.print(",");
Serial.print(60);
Serial.print(",");
Serial.print(310);
Serial.print(",");
Serial.print(500);
Serial.print(",");
Serial.print(30);
Serial.print(",");
Serial.println(0);

delay(500);
Serial.print(3000);
Serial.print(",");
Serial.print(120);
Serial.print(",");
Serial.print(344);
Serial.print(",");
Serial.print(300);
Serial.print(",");
Serial.print(10);
Serial.print(",");
Serial.println(0);

delay(500);
}

---ここまでスケッチ---

これで0.5秒ごとにそれっぽい値が送信できるようになりました。

スケッチを書き込み ArduinoIDEのシリアルモニターで見てみると。。。。

1000,15,0,140,0,0
2000,30,0,500,0,1
4000,60,0,750,0,1
6000,120,0,500,0,1
5000,15,0,300,0,1
3000,30,0,400,0,1
2000,60,0,500,0,1
1000,120,0,600,0,1
0,180,0,750,0,1

て、感じで表示されると思います。
1番目の数字が回転数
2番目が車速
4番目がスロットル開度
3/5/6番目は今回不使用(燃料計やバック信号などを取得しようと思ってました)

これで、Arduinoから受信した値をFlashで正しく使えるかの確認ができます。

いよいよFlashへ--次回に続く
Arduinoをつかって車速・回転数・スロットル開度を取り込んでFlashでマルチメーター風なことしてるんですが
その作りかた。

まず、ECUからArduinoへ必要な各信号を入力します。

検索するとECUからArduinoへ入力するに当たっての回路はいろいろ出てきますが、
うちの車の場合車速と回転パルスはとりあえずプルアップして入力すれば、ちゃんとパルスが確認できました。
スロットル開度はアクセルオフでanalogReadの値が140位。べた踏みで750位を示しています。
単に抵抗値が変化しているだけでした。
但し、140位と書いたように、ノイズによるものなのでしょうが、常時値がふらふらしています。
よって、140以下と750以上の値を切り捨てることにしました。

現在は回転パルス・車速パルス・スロットル開度を取り込んでます。

で、Arduinoのスケッチを・・・・・

Arduinoのアナログポート0に回転パルス、AD1をスピードパルス、AD3をスロットル、に入力しています。

パルスのカウント方法は一定時間内のパルス数をカウントし、計算させ、それを時速やrpmに直しています。
具体的には0.25秒毎に「MsTimer2」を使用してSerial.printしています。

----こっからスケッチ----

#include <MsTimer2.h>

int rev_val,rev_cnt,rev_state,
sp_val,sp_cnt,sp_state,
rev,spd,thro;

void setup() {
Serial.begin(9600);
MsTimer2::set(250, flash); // 0.25秒ごとに"void flash()”を実行
MsTimer2::start();
}

void loop() {
thro = constrain(analogRead(3), 140, 750); // スロットル開度の値がふらつくためソフト的にノイズリダクションしています。値が140以下は140とし、750以上は750としています。切り上げ・切り捨てです。

//パルス部
rev_val = analogRead(0);
sp_val = analogRead(1);

//回転パルス部
if (rev_val > 900 && rev_state == 0)
{
rev_state = 1;
rev_cnt++;
}
if (rev_val < 400 && rev_state == 1)
{
rev_state = 0;
rev_cnt++;
}
//車速パルス部
if (sp_val > 900 && sp_state == 0)
{
sp_state = 1;
sp_cnt++;
}
if (sp_val < 400 && sp_state == 1)
{
sp_state = 0;
sp_cnt++;
}

}

void flash() {
rev = rev_cnt*90;

spd = sp_cnt*2.654;
//60km/h時637rpm×4パルス=毎分2548パルス
//2548/60/4×0.25=2.654

Serial.print(rev);
Serial.print(",");
Serial.print(spd);
Serial.print(",");
Serial.print("0");
Serial.print(",");
Serial.print(thro);
Serial.print(",");
Serial.print("0");
Serial.print(",");
Serial.print("0");
Serial.println(",");
rev_cnt = 0;
sp_cnt = 0;


}
----ここまでスケッチ----

こっから先はPCのお仕事です。
それはまた次回~
RideRunnerの最新版:4月1日版がリリースされていました。

作者さん。いつも有難く使わせて頂いております。
で、早速インストール。

前回のリリースでMPCVidRR(RideRunnerでMPCを使用するDLL)が
「Media Player Classic – Home Cinema」に対応したようみたいなんですが、
今回の更新でRRConfig画面で、MPCHCVidRRが追加され、
MPC-HCを選択できるようになりました。

くるまにイロイロ

MPC-HCのZIPファイルを本家からダウンロードし、
mpc-hc.exeをRRのフォルダーに移動。

RRConfig画面の
「VideoPlayerPlugin」欄にMedia Player Classic-Home Cinema
「MediaPlayerClassicPath」欄にC:\Program Files\RideRunner\mpc-hc.exe
「DVDPlayerPlugin」欄に
Media Player Classic-Home Cinema
と、記入。

具体的に何が変わったのか、いつものことながら英語がワカラナイのですが。。。。
本家にはこう書いてありました。

New Video Player; MPCHCVidRR Player
  Uses Pilot API in MPC-Home Cinema, must use special build of mpc-hc, till
  MPC-HC team incorpates patch file, supplied to them to fix 3 issues in DVD playback in
  Pilot mode, if you using another version, control will work, just during DVD playback
  no timecounters will change.
  Example in RR.ini:  videoplayer=MPCHCVidRR
                      mpcpath=C:\Program Files\RideRunner\mpc-hc.exe
                      dvdplayer=MPCHCVidRR

だそうです。

ダレか教えて~



最新版のRR3月1日版はMPC-HCをサポートしてるってんで、
早速MPC-HCをインストールしてみた。
インストール後、RRConfigのVIDEOの設定を変更

VideoPlayerPlugin欄は「Media Player Clasic」のまま
MediaPlayerClassicPath欄にインストールしたMPC-HCのパスを記入

くるまにイロイロ


で、そのままだと動画再生時に画面クリックで一時停止・再生
になってしまうので、MPC-HCを開きオプションの設定から
「キーバインド」欄の再生/一時停止部のマウス欄
「Left Down」
って鳴っている所を
「無し」
に変更

くるまにイロイロ



これでおk!!
まぁ画面クリックで再生・一時停止をしたい方には必要ないですけど。。。

RRって動画再生開始後デフォルトの設定では4秒で全画面表示に切り替わって、
また前画面解除したいときは画面をクリックしなければならないんです。
早送りや巻き戻し音量調整したい時に画面クリックでSKIN表示を~
ってやるたんびにイチイチ一時停止になっちゃうのがストレスなんです。。。。

マウスやトラボを使ってればカーソル動かしただけで、前画面解除
になるんですケド。。。ウチ。。。。タッチパネルなもんで。。。。

車載PCのモニターを変更

中華タッチパネルをサブにし、HM-TL7Tをメインにしました。
HM-TL7Tのほうが輝度は低いんですが、画面の発色が良く感じたためです。

輝度の差は2台並べても殆ど感じられませんでした。
どちらかと言えば、液晶の輝度よりも液晶の上にかぶさるタッチパネルに
差がある感じを受けました。
なんとなく(?)HM-TL7Tのほうが逆光でもよく見える印象です。

また、HM-TL7Tの電源はDC12Vの為、アクセサリー電源から直で取っております。
デフォルトの設定では、通電してもスイッチオンにならなく、手動で電源ボタンを
押してましたが、それも解消されました。

車載PCEeeBoxEB1501との接続も付属のHDMIケーブル1本のみです。
付属のHDMIケーブルはPC側にUSBケーブルが分岐されており、
HDMI端子とUSB(タッチパネル用)を接続します。
液晶側はHDMI端子に接続するだけでOKです。
おそらくUSBはHDMIの空き配線で繋がっているようです。

有名所の車載PC用モニターを買うと4万オーバーなっちゃうんですが、
2万そこそこで買えるHM-TL7Tはイイカモ。
もうちょっと輝度が上がれば良いんですけどね~


RideRunnerの最新版:3月1日版がリリースされていました。

今回のリリースでMPCVidRR(RideRunnerでMPCを使用するDLL)が
「Media Player Classic – Home Cinema」に対応したようです。
また、動画をフルスクリーン再生時にマウスポインタを非表示にするようです。

また、RR.ini内で「disabledc=true」と変更しなければならないようです。

とにかくMPC-HCが使えるようになったのは個人的にデカイんで、
早速インストールしてみよ=


RideRunnerのプラグインの中にBluetoothで携帯を操作できるのがあるんで、その設定等

まず、BlueSoleilをインストール

Mobilephone.Net_setup.exeをダウンロードしてインストール
https://autoappmart.com/products/Mobilephone.Net_230&zenid=62b7f705a4e1667058ad15679a4b380b
(ダウンロードするのに登録しなきゃいけなかったりメンドクサイ。。。。)

BlueSoleilでないとうまくいかないようです。
あと、.net2.0が必要だそうです。
VCのランタイムも必要みたいです。

RRのplugins\Mobilephone.NETフォルダー内のMobilePhone.ini
ファイルを以下の様に編集。

[BLUETOOTH]セクション
"Address="欄にデバイスアドレスを記入

Address=A1:DD:〇〇:〇〇:E2:A1 こんな感じ
(アドレスはBlueSoleilの画面から携帯のアイコンを右クリックしプロパティで表示できます)

[CONNECTION]セクション
"Port="欄にBluetoothで使用しているシリアルポート番号を記入

Port=COM3

ビットレートなどは適当に。。。

で、あとはSkinの編集なんだけど、Mobilephone.Netをインストールすると、
BMV2・BMW E36などなどのSkinの差分がインストールされるんだけど、
我がTEKNIK-X用はなかったデス。。。。

しょうがないのでとりあえずBMV E36フォルダー内にできたSkinファイルを全部コピーして
TEKNIK-Xフォルダーに貼付け。

ボタンコマンドを"LOAD;MOBILEPHONE.SKIN;",""とすれば一応表示できる。

とりあえずSKINTOOLからLOAD;MOBILEPHONE.SKINとコマンドを送ってみる。。
くるまにイロイロ

で、ちゃんとSkinが表示できた=
携帯も認識してる==
くるまにイロイロ



MOBILEPHONE.SKIN表示時に電話が掛かって来ると。。。。
ポップアップ表示でお知らせ=
くるまにイロイロ


他の画面表示時に電話がかかってきても
ポップアップ表示した~~
くるまにイロイロ

音楽の再生中に電話がかかってきてもちゃんとミュートしてくれるんですよ!!!サイコウ!!


あとはかっこ良くSKINをつくらなくちゃ!!
んでも、携帯内の電話帳を表示は今のところ出来ないようです。。。。


が、出たそうです。

  • NetRadioArt
  • Skincommand; "RESTORE" restores RR window (from minimized)
  • Winamp Player Play list file name option; "*.extinfo.m3u" or "*.extinfo.m3u8"
だそうです。

とりあえずインストール~

RideRunnerのスキンってほとんどが800×600サイズで作られてるんです。。。。
でも、RRでMapFanNaviiを使いたかったりするんで、自分は1024×768で使ってます。

7インチモニターで1024×768って文字とかアイコンが小さくなるんで、車載時にマウスとか・タッチパネルとかでWindowsを操作するのには向いてないですが、設定以外はRideRunnerのUIで事足りるんで。。。。

で、スキンサイズの変更方法を問い合わせ頂きましたので以下にズラズラと

使っているRideRunnerのスキンフォルダー(C:\Program Files\RideRunner\Skins\Teknik-Xなどなど)
の中にある「general.ini」をワードパット等で開く。
general.iniの中身

[Settings]
OriginalWidth=800
OriginalHeight=600
ShowWidth=800
ShowHeight=600
XPosition=0
YPosition=0
ApplyToVideo=False
ApplyToVisu=False
AutoSwitch=False
DayTime=08:00:00
NightTime=20:00:00
GammaDayRed=0
GammaDayGreen=0
GammaDayBlue=0
GammaNightRed=-60
GammaNightGreen=-60
GammaNightBlue=-60

で、上から3行・4行目の値を自分が使っている解像度に変更。


[Settings]
OriginalWidth=800
OriginalHeight=600
ShowWidth=1024
ShowHeight=768
XPosition=0
YPosition=0
ApplyToVideo=False
ApplyToVisu=False
AutoSwitch=False
DayTime=08:00:00
NightTime=20:00:00
GammaDayRed=0
GammaDayGreen=0
GammaDayBlue=0
GammaNightRed=-60
GammaNightGreen=-60
GammaNightBlue=-60

こんな感じ。

で起動するとRideRunner全画面表示の出来上がり~
RideRunnerでMapFanNaviiを起動・終了出来るようにしているんだけど、
ブログを見て頂いた方からやり方の質問が。。。

自分のブログ見なおしてみたんだけど、
ヒドイよね。。。やり方の説明とかなんにも書いてない。。。。

自分でもすぐ忘れちゃうんで、脳みその代わりに記録を・・・と

モニター解像度及びRRのスキンが1024×768になっている前提です。
MFNは解像度1024×600以上の解像度でないと起動しない前提ですし、
MFNでナビ画面を見ながら曲送りとかRRの操作をしたいですし、

RRConfigのGPS欄を開き、

「GPSMODE」欄「External」にチェック
「GPSPath」欄にMFNのexeファイルのパスを記入
「GPSWindowName」に「MapfanNavii」と記入
くるまにイロイロ

で、セーブしてRRを起動

今使ってるSkin「Teknik-X」はボタンの変更ができるので、
使わないRadioボタンをGPSボタンに変更する。

Radioボタンを長押しすると。。。
くるまにイロイロ


ボタンチェンジャー画面が出てくるので、SatNav ボタンを選択し、
左列の「Sele」ボタンを押し確定させる。
くるまにイロイロ

で、さっきまでRadioボタンだったのが、SatNaviボタンに代わる。
くるまにイロイロ

SatNaviボタンをクリックすると、ExternalGPSスキンが読み込まれ、
MapFanNaviiが起動する。
くるまにイロイロ



ただ、これだとMapFanNavii起動後に上下に黒帯が出来てしまい、
RRの操作が出来なくなってしまうので=
「Maximize Assistant」サマで上下の黒帯部分を消す!!
くるまにイロイロ


「Maximize Assistant」を起動後MFNを起動する。

MFNを起動した時点でタスクバーとかも消えてしまうので
先に「Maximize Assistant」を起動して、「ALT+Tab」押して
タスクを切り替える。

「Maximize Assistant」の「選択追加」ボタンを押し、マウスカーソルが
指マークに変わったら黒帯部分をクリック(上下どちらでも)
くるまにイロイロ

すると、別画面が出てくるので、「サイズ」タブを開く。

で、「ウインドウサイズ」を「指定サイズに変更」にチェック
「ウインドウ幅指定方法」と「ウインドウ高さの指定方法」の両方を
「ピクセル値でサイズ変更する」にチェック。

「ウインドウ幅」と「ウインドウ高さ」に”1”を入力。
くるまにイロイロ

「その他」タブを開き、
「この定義を有効にする」にチェックし右下のOKボタンにて確定する。
くるまにイロイロ

これで上下の黒帯部が除去されてバックグラウンドの表示ができるようになる。

んで、RRを起動し「SatNav」ボタンを押すと見事に起動し、
MFNがRRの一部になった感が出てくる=

くるまにイロイロ

これでナビしながら音楽再生の操作もできるように!!
RRからSendKeyでMFNを操作するボタンも作ってみたんだけど、
MFNのキーボードショートカットがあまりにも少なく、ほとんど役立たず。。。。

ちなみに現在のショートカットキーは
   PageDOWN:縮尺操作-拡大
   PageUP:縮尺操作-縮小
   Nキー:現在地表示
   Vキー:VICS更新
   Wキー:天気表示(既に表示している場合は天気を閉じる)
   Lキー:ロゴ表示(ON/OFF)
だけだそうです。。。。

VBで何とかできるかな。。。。