NATOC android
Nゲージ自動列車運転システム

NATOC android Nゲージ自動列車運転システムはNゲージ等の鉄道模型をスマートフォン等のandroid端末で自動制御するandroidアプリです。
NATOC androidは最新の画像認識システムを使っておりandroid端末のカメラ機能を使って列車の位置検出ができますので特別なセンサー等の設置の必要はなくレイアウトの改造の必要はありません。
またandroid端末から鉄道模型を制御するため無線LANやBluetooth通信を使っておりandroid端末とレイアウトの接続の必要はありません。
なおレイアウト側にFlashAirまたはBluetoothのインターフェイスと車両やポイントを制御するサーボモーターまたはリレー等が必要です。
NATOC androidのインタフェイスについてはこちらを参照してください。
NATOC androidは画面のボタン操作による車両をポイントの手動運転の他、プログラムによる自動運転も可能です。
サーボモーターやリレーによるによるレイアウトの制御やWindows版 NATOCについては弊社ホームページを参照してください。

車両の位置を検出するためにはカメラ(android端末)をスマートフォンホルダーや三脚などで固定する必要があります。
なおインターフェイスがなくても本アプリを動かす事ができますので車両の位置検出などを試してみる事ができます。
免責事項
本アプリケーションを使用することによって、発生した損失や損害に対して株式会社メディアクラフトは一切責任を負いません。
アプリケーションの起動
手動運転
自動運転
接続デバイス選択
パラメータ設定
プログラム設定
・アプリケーションの起動

初めてアプリケーションが起動されると上のダイアログが表示されます。
免責事項に同意して本アプリケーションを使用する場合は「はい」ボタンを押してください。
まず最初に通信デバイスを設定します。
初期状態の設定はFlashAirによる無線LANになっていますのでBluetoothを使う場合は接続デバイスの設定で接続するBluetoothのデバイスを選択してください。

接続に成功すると上記の表示がされインジケーターが点灯して使用可能となります。


FlashAirやBluetooth装置に電源が入っていなかったり接続時にエラーとなった場合は上のダイアログが表示される事があります。
この場合は本プログラムを終了してFlashAirやBluetooth装置の接続を確認して再び本アプリケーションを起動してください。
・手動運転

ボタン操作でレイアウトの制御を行います。
列車の走行/停止を切り替えます。
列車の進行方向を切り替えます。
停止状態で切替えるとその方向に列車が走行します。
ポイントを切り替えます。
ポイントが2つ定義されている場合はもう1つボタンが表示されます。

プレビュー画面には赤色で十字線と円が表示されます。
十字線はandroidが画像認識した車両の位置を示します。
処理に時間がかかるため実際の画像に比べて少し遅れた位置に表示されます。
円はセンサーの位置を示します。
センサーは最大4個まで設置できますが初期状態では1個のみです。
画面の表示にタッチして指を動かしてドラッグ操作する事で位置を変える事ができます。
なお見やすいように少し指の位置に対して少し左に表示されます。
車両がこの円内を通過すると音で知らせます。
正しく車両を認識しているか確認する事ができます。
通過しても音が鳴らない場合は、車両の速度を遅くしたりパラメータ設定でセンサー感度を調整してください。
なおパラメータ設定で検出音を鳴らさなくする事もできます。
・自動運転

プログラムが自動でレイアウトの制御を行います。
プログラムはプログラム設定でオリジナルのプログラムの変更や新規作成ができます。
手動運転の状態を示します。
自動運転の状態を示します。
これらの状態は右のボタンで切替えられます。
手動運転の状態から自動運転に切替えるとプログラムが開始されます。
自動運転の状態から手動運転に切替えるとプログラムが停止します。
プログラムが終了すると自動的に手動運転の状態になります。
なお初期状態のプログラムはループの設定がされているので手動運転に切替えなければ車両は動き続けます。
手動運転にしてプログラムを停止してください。
・メニュー操作
端末のメニューボタンまたは画面に表示中の左のアイコンをタッチすると下のメニューが表示されます。
android 4.0以降の端末はメニューボタンが表示されないのでアイコンをタッチしてメニューが表示してください。

パラメータの設定やプログラムの変更はメニューを選択して行います。
・接続デバイス選択
接続するデバイスを選択します。
Bluetoothデバイスに変更したりBluetoothデバイスの設定からFlashAirに変更する場合に接続するデバイスを選択してください。
Bluetoothデバイスが複数ある場合、どのデバイスと接続するか定義する必要があります。

Bluetoothデバイスの一覧が表示されるので使用するデバイスを選択します。
一度選択すると次回からそのデバイスが使われるので変更する場合は再度接続デバイス選択を行ってください。

機種によっては上のダイアログが表示される場合があります。
その場合は「はい」ボタンを押すとandroidの設定画面に遷移しますので強制停止ボタンでBluetooth共有プロセスを停止してください。
androidの設定画面からは戻る操作をすれば本アプリ戻ってこれます。
なおBluetooth共有プロセスを停止したくない場合は「いいえ」を選択しても構いまんせんが時々Bluetoothの接続を失敗する場合があります。

アプリケーションが起動されるとペアリングされているBluetooth装置を認識して画面下部に表示します。
次に自動的にBluetooth装置と接続を行います。

・パラメータ設定
センサー感度などのパラメータを変更する事ができます。

カメラ縦方向
通常の場合プレビュー画面は横方向(ランドスケープ)になりますが端末の設置方法により縦方向(ポートレート)の方が都合のよい場合は縦方向に設定します。
端末の機種によってはカメラを縦方向に設定できない場合があります。
位置検出音
車両がセンサーを通過した時に音を鳴らすのを止める場合はチェックを外してください。
センサー感度
車両の位置を検出する時の感度を設定します。
車両の動きが正しくとらえられない場合は、この値を調整してください。
この値を小さくすると車両以外のものを検出しやすくなります。また大きくし過ぎると車両の動きを検出しにくくなります。
センサー範囲
車両の通過を検出する赤い円で表される範囲(円の半径)を設定します。
範囲を大きくすると車両を検出しやすくなりますが違う位置でもこの範囲を通過したとみなされる場合があります。
センサー数
通常はセンサーはひとつですが最大4個まで増やす事ができます。
プログラムにセンサーの番号を指定して通過を検知するセンサーを指定できます。
センサーは画面上に違った色で表示されます。
センサーの色は1番が赤、2番が緑、3番が青、4番が白(RGBWの順)で表示されます。
位置を変更す場合は赤のセンサー同様、動かしたいセンサーの円を指でタッチして移動させます。
プログラムファイル
プログラムファイル名を変更します。
標準ではSDカードにNATOCというフォルダーを作りその中にprogram.datというファイル名で保存されます。
複数のプログラムを作って切り替える場合は、プログラム設定を行う前に新しく作成するファイル名に変更しておいてください。
プログラムファイルを変更すると自動的にプログラムファイルが読み込まれます。
制御機器
レイアウトの機器に対して制御パラメータを定義します。
ポイント2を使う場合はチェックしてください。
車両とポイント1のチェックは外す事はできません。
通電時間
ポイントの通電時間を1/100秒単位(0〜100)で定義します。
標準の0を指定すると通電時間は200ミリ秒(0.2秒)で動作します。
ポイントが正常に動作しない時以外は0のままにしてください。
なおポイント1とポイント2は同じ通電時間となります。
負論理
FlashAirに接続したリレーがLowレベルで作動する場合に指定します。
標準に戻すボタン
パラメータの値を標準に戻します。
戻した後、OKボタンを押さないと設定はされません。
OKボタン
現在表示中の値でパラメータの値を設定してメイン画面に戻ります。
パラメータの値が間違っている場合は。エラーメッセージが表示されるので修正してから再度ボタンを押して下さい。
キャンセルボタン
現在表示中の値を破棄してメイン画面に戻ります。
確認メッセージが表示されるので「はい」を答えます。
接続デバイスがBluetoothの場合は下記のダイアログが表示されます。

arduinoインターフェイス
サーボの代わりにリレーを使ったarduinoインタフェイスを使用する場合に設定します。
制御機器
制御にサーボモーターを使う場合はサーボIDとサーボの角度を定義します。
arduinoで制御する場合はリレーの接続ピンとポイントの通電時間を定義します。
各機器には2づつリレー(ピン)を使いますのでピン番号は最初の番号を指定します。
こちらの接続例では車両は6,ポイント1は8,ポイント2は10で定義します。

ID変更ボタン
出荷時のサーボのIDは1に設定されているためポイント1とポイント2のサーボIDを書き換える必要があります。
書き換えるに当たっては対象となるサーボのみをBluetoothアダプターに接続しておいてください。
接続されたサーボは現在表示中のサーボIDの値に書き換えられます。
ファームウェアダウンロードボタン
Bluetoothアダプターのファームウェアをダウンロードします。
ダウンロードしたファームウェアはandroid端末のSDカードに直接書き込まれますのでそのSDカードをBluetoothアダプターに読み込ませる事ができます。
なおダウンロードするにはインターネットに接続できる環境が必要です。
直接ダウンロードできなかったりSDカードを取り出せない場合などはこちらの方法でファームウェアを入手してください。
・プログラム設定
自動運転のプログラムを変更する事ができます。

プログラムリスト
プログラムの内容が表示されます。
指でスクロールする事ができます。
指でタッチするとカーソル(グレーで表示)がその行に移動して内容を修正できます。
停止
車両を停止します。

前進/後進
車両を前進(時計回り)させます。
車両を後進(半時計回り)させます。

周回
0以外を指定すると次の命令に移るまでの車両の周回数を指定します。
ただちに次の命令に移ったり通過エリアだけ指定する場合は0を指定します。
周回数は自動運転開始時が1で車両が1周する度に1づつ加算されます。
なお車両の進行方向には関係なくどちら回りでも車両の周回数で指定します。
エリア
カメラのプレビュー画面を4分割してそのエリアを番号で指定します。

番号は左上が1、右上が2、右下が3、左下が4で4から1または1から4に車両が移動すると周回数が加算されます。
エリアを指定した場合は車両がそのエリアを通過するまで次の命令に制御は移りません。
周回数とエリアの両方を指定した場合は車両が周回した後そのエリアを通過した時点で次の命令に移ります。
タイマー
次の命令の開始を指定時間待たせます。

秒数/ミリ秒
タイマーの設定値を秒数とミリ秒(0〜999)の合計で指定します。
P直進/P分岐
ポイントを直進側または分岐側に切替えます。

番号
ポイント番号を1または2で指定します。
エリア
ポイントを切替えるエリアの番号を指定します。
エリア番号は前進後進と同じです。
エリアを指定しない(0)と直ちにポイントを切替えます。
車両がポイント付近にある場合、車両が脱線する恐れがあるのでそれを避けるためにエリア番号を指定します。
サウンド
効果音を鳴らします。

番号
サウンド番号を指定します。
再生できるサウンドファイルはWAVファイルのみでファイル名を数字にしておきます。
サウンドファイルはプログラムと同じフォルダーにsoundというフォルダーを作ってその中に入れておきます。
プログラムはパラメータ設定で設定された場所なのでこの例では/mnt/sdcard/NATOC/sound/1.wavというファイルがサウンド番号1で再生されます。
再生を途中で止める場合はサウンド番号に0を指定します。
なおAndroid版の場合は同時に複数の音声を再生できないので再生途中で次のサウンド命令が実行されると前の再生は終了して新たな再生が始まります。
繰返再生
繰返し再生をする場合は1を指定します。
繰返再生を指定すると次のサウンド命令があるまで再生を続けます。
ループ
プログラムをループ実行させる場合はここをチェックします。
プログラムは最後の行を実行すると手動運転に戻らず1行目に戻ります。
この時車両の周回数も1周目に戻ります。
自動運転を停止する場合は画面の位置上のボタンで手動運転に切り替えます。
×ボタン
カーソルの行を削除します。
▲ボタン
カーソルの行と上の行を入れ替えます。
▼ボタン
カーソルの行と下の行を入れ替えます。
追加ボタン
現在編集中のコマンドを最後に追加します。
コマンドの値が間違っている場合は。エラーメッセージが表示されるので修正してから再度ボタンを押して下さい。
挿入ボタン
カーソルの上に現在編集中のコマンドを挿入します。
コマンドの値が間違っている場合は。エラーメッセージが表示されるので修正してから再度ボタンを押して下さい。
OKボタン
現在表示中のプログラムリストでプログラムファイルを更新してメイン画面に戻ります。
キャンセルボタン
現在表示中のプログラムリストを破棄してメイン画面に戻ります。
確認メッセージが表示されるので「はい」を答えます。