もどる

無線コントローラ

色々と出てきた無線式のスロットル。
そんな訳でJMRIと連動する事で使用できるWiThrottleを導入。
春先から書いていた筈なんですが、いつのまにかDT402DJが出ちゃった(笑)。なのでiPad用のブリッジが出る前に。つ事で…

また、Wi-Fiの設定が微妙〜?な人はこのへんを参考に…

まずターゲットになる端末を用意。
取り出しましたるは、普段使っているiPod touchとAndroid

iPod touchは第4世代のもの(第2世代(iOS3までの物)でも動作可)
AndroidはHTCのAria
Ariaでも動作可能だったので大抵のAndroidで動作可能と思われる。
iPodの人はiTunesからWiThrottleを用意します。
iTunesのアカウントが必要で、\1,200-
とりあえずはアドレス3限定のLight(体験版?)をインストールして試してから購入すると良いでしょう。
WiThrottle 公式サイト
iTunes
WiThrottle Light / WiThrottle
Androidの人はEngineDriverを用意します。
Androidマーケットの使える人はマーケットを起動し、検索にdccとでもすれば候補に現れます。
EngineDriver 公式サイト / Androidマーケット
Androidマーケットの使えない人は公式サイトからAndroid1.5用が用意されていますので、指示に従って「野良アプリを入れる」と設定してインストールしてください。
iPod、Android共に無線LANを利用しますので無線LANをセットアップしておきます。
たとえば手元に余っている無線LANアクセスポイントとか、PocketWifiとか…
ノートPCなどでAdhocモードで接続してもOKと思いますが、その場合は手動で同じセグメントのIPを振るなどして端末とPCが通信可能な状態にします。
PCと端末が同じネットワーク上に接続できたらJMRIを起動します。 起動したJMRIは諸々の接続をもってDCCのネットワークに接続し、そこからコントロール可能な状態とします。
そして、メニューから[tool]-[Throttle]-[Start WiThrottle] 或いは [debug]-[WiThrottle] を起動します。 古いJMRIでは試作機能ですからデバッグメニューの階層にいます。
WiThrottleのサーバが起動すれば図のようなウィンドが表示されます。
電源ボタンはTrackStatusで、その左のバッテンは非常停止です。
表示されているのは、このJMRIの起動しているPCの名前とIP:ポートです。
WiThrottle / Engine Driver 共に自動でサーバをスキャンしますので特に記憶する必要はありません。
おそらく大規模な運転会などで単一のネットワークに複数レイアウト(JMRI)がぶら下がる事を想定されている物と思います。
複数のWiThrottleServerを利用している場合はこのPC名やIPで識別します。
下半分の、DeviceName / Address は接続したiPodやAndroidの名称が入ります。
またこれらのThrottleがコントロールをしているアドレスが表示されます。
Windowsではセキュリティ警告が出ることがあります。
あるいはウィルススキャンソフトのファイアウォールが警告をだしますので、このアプリケーションはプライベートネットワークでは許可として接続待機を許可してあげてください。
通常のブラウザの様にデータの取得ではなく、データ送出の為の着信待機ですのでセキュリティアラートは強めに出ます。 信頼できるネットワーク、強固な無線セキュリティ(WPA/WPA2)、或いは一時的な構築などを組み合わせてネットワークは構築してください。
週末しか使わないレイアウトの為に、端末が繋がらないと言ってセキュリティポリシを曲げるなら、週末の運転の時だけに無線APをONするのもアリです。
まぁそうはいっても大抵はNDSのおかげでボロボロになったりするんですが…(T_T)



iPod/Android共に同じネットワークに接続してからそれぞれ WiThrottle / EngineDriver を起動します。 起動するとWiThrottleサーバの一覧が表示されますからその中からサーバを選択します。
Androidの場合はこの様な感じで表示されます。
iPod touch / iPhoneの場合
次に運転したい機関車を選択します。
これはiPod版、下のアイコンで[Address]を選びタブを切り替え、 上の、この画面では[54]が選択されている辺りをタップすると テンキーパッドが現れます。
そのテンキーパッドでLoco Addressを入力したらSetをタップします。
後は取得した機関車の速度をスライドボリュームで調整し 画面のボタンをタップすれば各Functionが発行されます。 ほかの機関車にする、或いは解放するには上にある機関車のアドレスを押せば先のキーパッドが現れます。 そこでSelectなりDispathなりすれば変更、解放がされます。
iPod版ではスロットルのスタイルを変更することができます。 デュアルキャブやスライドボリュームが右、或いは左にあるものを選択できたり 前進後進がボタン式のものと中央を境に前進後進といった形の物(Tomixの5006と5001みたいな?判りづらいね)も選択できます。
Androidの場合
Androidではこんな感じの画面になります。 左上の[Press Select]を押せばテンキーパッドが現れ、機関車の選択画面になります。
このテキストボックスにアドレスをいれ、[Acquire]ボタンで機関車の取得です。 解放は、上部の[NotSet](確保済みだとここにアドレスが入る)の右にある、[Release]を押すと 機関車の解放が行われます。
Androidではこんな感じでスライドボリュームは水平方向です。 また下にスクロールさせると2つ目のスロットルが現れます。
Android版ではポイントの転換なども可能です。 メニューを出し、Turnoutを選べばポイントの切り替えモードに変わります。
テキストボックスに転換させたいポイントのアドレスをいれ、Throw/Closeで切り替わりますが、 はじめの一回は普通のThrottleから切り替えてあげないと換わらないみたいです。
また、その前にポイントを切り替えるためのコマンドをどうするか?といった設定が必要になります。 メニューから、Settingsを選びそこでTurnoutで塩湯しているDCCのシステムを選択する必要があります。 多くはDigitrax、或いはNCEなど…ポイントのデコーダメーカを設定するのではなく、使用しているDCCのシステムを選択します。 Loconetを選択すれば、LoconetのPrefixである[L]が付加されます。 この設定はJMRIの環境設定でシステムの処で指定されています。
環境設定画面 おおよその意味での解説。
・Throttle Name
     このAndroid端末におけるEngine Driver の名称です。
この名称がJMRI、WiThrottle Serverの Device Name に表示されます。
・Stop On Release
     機関車を解放する際に停車させます。
チェックを外せば走行中にdispatchする事も出来ます。
・Maximum Throttle Value
     速度スライダーの上限値です。
最高速度を押さえることが出来ます。
・Turnout Hardware System
     ポイントを切り替える際のDCCシステム名称。
・Default Address Length
     機関車を確保する際のアドレスを、2桁アドレスと4桁アドレスのどちらを標準とするか。特に問題の無い限りAutoでかまわない。
・Hide Sys route Names?
     JMRIで管理しているルート名称を隠す。
・Increase Slider Height
     速度スライダーの縦幅を広げる。
画面が狭い場合はチェックを外すと色々と表示出来るようになるが、 チェックを外すと操作で触れられる面積が狭く誤操作しやすいので、 問題のあったときにチェックを外す方が良い。
・Hide Recent Locos Panel
     機関車を確保する際に、前に使った履歴(Recent)を表示しそこから選択できる。
・Maximum Recent Connect
     起動時のJMRI実行PC選択画面で表示される履歴の数



WiThrottleサーバの動作については [Edit] -[Preferences]から呼び出して[WiThrottle]を選択します。
補足として…
毎回JMRIを立ち上げてからWiThrottleを立ち上げるのが面倒な人は
同じく[Preferences]から[Start Up]を選んで[Add Action]を選択します。
そしてそのActionのプルダウンメニューから[WiThrottle Server]を選択します。
すると、次回からは起動時にWithrottle Serverが実行されます。



さて、やっぱりこんな話じゃ物足りないですよね?(Y/y)
iPodにしてもAndroidにしても程々に値段がしますし…
大体、どちらも端末用意してアプリ入れて実行すれば即動きます。
なんの為?にこう「こんな解説書いたんだ?」って位にあっさり動いてくれるので
無料なEngine Driver を Android の人はとりあえずで入れておいて損はないです。

で、PCにBluetoothが搭載されている事を確認したら…
という事で取り出しました、Wiiリモコン。
新しいリモコンにはモーションセンサーが内蔵されているので古いリモコンから買い換える人が居るかもしれません。その辺を狙うのもアリと思います。
PCのBluetoothを有効にします。
デバイスを先に認証させてしまうと動きません。
JMRIの上からリモコンの認証はさせます。
Bluetooth のライブラリとして bluecoveを Wiiリモコン のライブラリとして WiiremoteJを用意します。
bluecoveの方は bluecove-2.1.0.jar を、WiiremoteJ はbeta(1.7)からWiiremoteJ.jar を用意し、それぞれJMRIをインストールしたディレクトリにあるlibの下にコピーします。
適当にJMRIを起動したら[Tool] - [Throttles] - [New Throttles] を選択し、スロットルウィンドを開きます。
JMRI - jython - Jynstruments - ThrottleWindowToolBar までをエクスプローラなり、ファインダーなりで開きます。 そうすると[WiimoteThrottle.jyn]というディレクトリがあります。 このディレクトリは開かず、ディレクトリをそのまま スロットルウィンドのツールバーへドラッグドロップします。
するとウィンドに Wiiリモコンっぽいアイコンが追加されます。 ここで、Wiiリモコンを持ち、1と2ボタンを押しペアリング開始です。 このときにこのアイコンを押すんだったかどうだかは判らなくなりましたが、少し経つと新しいデバイスとしてWiiリモコンが追加される筈です。 正しく認識されればリモコン下の青いLEDは1プレーヤを指し示します。 操作方法は、WiimoteThrottle.pyにコメントで書かれていますが、下の通りです。
ホームキーライトの点灯
+ / -進行方向の切り替え
A減速
B加速
1一定速まで加速
2減速
1(ダブルクリック)最高速
2(ダブルクリック)停止速度
1+2緊急停止
まぁ、その辺にBluetoothの積んだPCがあったり、Wiiリモコンが余っている人は試してみては如何でしょうか?
キー操作などは適当にカスタマイズ可能ですし…
※認識できるWiiリモコンは1本までです。