- 赤外線リモコンの代替
RoboNova はオプションで赤外線リモコンを用いた遠隔操縦が出来る。赤外線受光素子からの信号パターンをメインのコントローラで、受信してそれに合わせたアクションパターンを実行する。つまり、その信号をエミュレーションすれば BTRemCon で制御できるようになる。
- 赤外線リモコンの波形解析
赤外線受光素子の出力をオシロスコープに入れて、波形を観測する。この時に規則的なパターンを括りだしておけば、データ圧縮に役立つし、出力プログラムも簡略化できる。詳しくはこのページを参考。
- 赤外線リモコンのパターン作成
RoboNovaのリモコンの詳しいフォーマットは解析結果を参考にして欲しい。ここでは実際の実装手順を解説する。
- 作成が必要な部位の分析
通常のリモコンと比べると、かなり簡略化されたフォーマットである。データをいくつか採取すると先頭(ヘッダ)部分を除いて、コード化されているのがわかる。ヘッダ部分を独自の実装として付けたし、コード化された部分は BTRemCon の API を用いれば良いことがわかる。変更が必要なパラメータは
- ローカルホスト名の変更(必要に応じて)
- ヘッダ部分のLow時間
- PPM の 0/1 を表す時間の L/H の時間
- リモコンの各キーに対応するコード
- チューニング
波形生成のタイミングは while(delay--); により行われているので、使用環境(コンパイラのバージョンや最適化オプション)などで変化する可能性がある。そこで、チューニングを行う。チューニングにはインサーキットエミュレータ(ICE) とオシロスコープを用いるとパラメータ編集と波形観測が同時に行えるので開発スピードが速くなる。
- ロボットへの実装
- BTRemCon の格納場所
実際にロボットへ搭載してみる。RoboNovaの場合、搭載スペースは前部のガワの上に実装するか、後部のコントローラの上に実装できそうだ。ただ、コントローラの上はサーボモータのコードがトグロを巻いているので、整理する必要がある。
- BTRemCon の配線
赤外線リモコンの配線を外して、BTRemCon の配線を接続する
- ロボットへの仮搭載
ロボットを組上げて、BTRemCon をロボットの肩の上に載せる。
- ロボットの動作
電源を投入して、702NK と接続してコマンドを送る。
- ロボットへの搭載
背中のカバーに BTRemCon を引っ掛ける。
電子部品の保護のためのアクリルの保護版を入れる。強度的には後方受身をフローリング上で行ったが、持ちこたえる事が出来た。
- PCとの接続
BTを装備したPCからも制御可能である。Bluetooth の PointToPoint の機能を利用する。
- Bluetooth デバイスとの接続
今回のプロファイルの場合、BTRemCon は COM ポートに接続可能であるので、ターミナルソフトなどで ポート設定してそれぞれのコマンドを送出すればOK。
- ターミナルソフトの立ち上げ
BT の COM ポートは COM4 以降からが多いので、COM4 ポート以上に対応したターミナルソフトを利用する。現在、利用しているソフトは UTF-8 TeraTermPro である。
- ジョイスティックの接続
折角のロボットのコントロールなので、ジョイスティックを接続してみる。ジョイスティックを利用する上での注意点は、ジョイスティックの動きに応じてキー押下げを発生させることにある。今回は Saitek のCyborg EVO だ。このジョイスティックには専用のユーティリティーが付属していて、各部の動きをキーとして取り扱うことが出来る。そのキーを TeraTermPro 経由で BT に送り出すわけだ。もちろん、ゲームパッドなども利用できる。いずれにしてもコントローラをキーに対応させることが重要になる。
- 4バンク分の動作?
オプションの赤外線リモコンでは個別にIDを設定して、最大4機のRoboNovaを動作できるようになっている。マニュアルによれば、IDの設定は [P1]キーを押しながら、[1]-[4]のキーを押すことにより、設定されるようだ。同時押しの時に特別なコードが出力されているかどうかをオシロで観察してみたが、特別なコードは出されていないようだ。
このことから、考えられることは…
[P1] を押しながら[1]-[4]の押下げはリモコン本体の設定で、機体側の設定は[P1]を送った後に[1]-[4]を送れば出来そうな感じである。つまり、128個の動作設定を機体側で出来れば、フルバンクのリモコンが実現可能になるかもしれない?