TeamKNOx WEB-Site
Last Update : 2006/Jan/24
BTRemCon
BTRemConとは?
動作原理
使用デバイス
使い方
応用例
今後
謝辞
<<戻る

    BTRemCon Module BTRemCon Module BTRemCon Service Established
    携帯でメールやらデジカメの代わりが出来るようになると、さらに色々なことがしたくなってくる。ここでは携帯電話(Series60 / 702NK)に搭載されているBluetooth(以下、BT)を活用した汎用リモコンシステムのフレームワークを紹介する。


  • BTRemConとは?

    携帯電話に搭載されている BT を活用する事例は既に BTKey60XRCのコントロールなどで実証することが出来た。携帯電話からBT経由で外部機器を制御するための仕組みが BTRemCon である。


  • 動作原理

    BT のプロファイルである RFCOMM を用いて BTRemCon が携帯電話から受信したテキスト(コマンド)に対応した動作を行う。これらは簡単にユーザがアプリケーションが作成できるようにフレームワークの構造を持っている。

    • BTRemCon フレームワーク

      BTRemCon は大きく分けて、3種類のパートからなっている。

      1. Bluetooth プロトコルスタック

        Bluetooth のプロトコルはいしかわきょーすけ氏の手による、bluemeltに若干の手を加えた物である。具体的には BT デバイスのローカルホスト名などを変更しやすいカタチにしてある。

      2. 基本コンポーネント

        リモコンの波形生成に必要なIrLEDのドライバ類。PPM の波形生成や変調周波数の設定などを行う。

        • 利用可能なAPI

          • void RemConHeader();
          • void RemConTrailer();
          • void RemConPPM0();
          • void RemConPPM1();
          • void RemConCodeGen(unsigned int aPatternSize, unsigned char aRemCode);

        • 利用可能なハードウェアリソース

          リモコンのアウトプットはR8C/Tiny P1_0 を利用している。これはポート直結でLEDのドライブを行える端子である。

      3. ユーザアプリケーション

        利用したいリモコンに合わせてのカスタマイズがユーザアプリケーションになる。

    • BTRemCon 本体
      1. 構成
      2. 問題点

  • 使用デバイス

    • R8C/Tiny
    • BT モジュール


  • 使い方

    • 携帯電話側
    • 機器組み込み側


  • 応用例

    • ロボット

      • RoboNovaへの搭載

        2足歩行ロボットは各社からキットや完成品として発売されているが、ここでは Hitec MultiPlex社RoboNova を例にとり説明する。

        1. 赤外線リモコンの代替 Replace RoboNova RemCon

          RoboNova はオプションで赤外線リモコンを用いた遠隔操縦が出来る。赤外線受光素子からの信号パターンをメインのコントローラで、受信してそれに合わせたアクションパターンを実行する。つまり、その信号をエミュレーションすれば BTRemCon で制御できるようになる。

        2. 赤外線リモコンの波形解析 RoboNova RemCon Detail RoboNova RemCon Detail

          赤外線受光素子の出力をオシロスコープに入れて、波形を観測する。この時に規則的なパターンを括りだしておけば、データ圧縮に役立つし、出力プログラムも簡略化できる。詳しくはこのページを参考。

        3. 赤外線リモコンのパターン作成

          RoboNovaのリモコンの詳しいフォーマットは解析結果を参考にして欲しい。ここでは実際の実装手順を解説する。

          • 作成が必要な部位の分析

            通常のリモコンと比べると、かなり簡略化されたフォーマットである。データをいくつか採取すると先頭(ヘッダ)部分を除いて、コード化されているのがわかる。ヘッダ部分を独自の実装として付けたし、コード化された部分は BTRemCon の API を用いれば良いことがわかる。変更が必要なパラメータは

            • ローカルホスト名の変更(必要に応じて)
            • ヘッダ部分のLow時間
            • PPM の 0/1 を表す時間の L/H の時間
            • リモコンの各キーに対応するコード

          • チューニング RoboNova RemCon Detail

            波形生成のタイミングは while(delay--); により行われているので、使用環境(コンパイラのバージョンや最適化オプション)などで変化する可能性がある。そこで、チューニングを行う。チューニングにはインサーキットエミュレータ(ICE) とオシロスコープを用いるとパラメータ編集と波形観測が同時に行えるので開発スピードが速くなる。

        4. ロボットへの実装
          1. BTRemCon の格納場所 RoboNovaBack.JPG

            実際にロボットへ搭載してみる。RoboNovaの場合、搭載スペースは前部のガワの上に実装するか、後部のコントローラの上に実装できそうだ。ただ、コントローラの上はサーボモータのコードがトグロを巻いているので、整理する必要がある。

          2. BTRemCon の配線 RoboNovaBackWithBTRemCon.JPG

            赤外線リモコンの配線を外して、BTRemCon の配線を接続する

          3. ロボットへの仮搭載 RoboNovaWithBTRemCon02.JPG RoboNovaWithBTRemCon03.JPG

            ロボットを組上げて、BTRemCon をロボットの肩の上に載せる。

          4. ロボットの動作 RoboNovaWithBTRemCon04.JPG

            電源を投入して、702NK と接続してコマンドを送る。

          5. ロボットへの搭載 RoboNovaWithBTRemCon04.JPG

            背中のカバーに BTRemCon を引っ掛ける。

            RoboNovaWithBTRemCon04.JPG

            電子部品の保護のためのアクリルの保護版を入れる。強度的には後方受身をフローリング上で行ったが、持ちこたえる事が出来た。

        5. PCとの接続

          BTを装備したPCからも制御可能である。Bluetooth の PointToPoint の機能を利用する。

          1. Bluetooth デバイスとの接続

            今回のプロファイルの場合、BTRemCon は COM ポートに接続可能であるので、ターミナルソフトなどで ポート設定してそれぞれのコマンドを送出すればOK。

          2. ターミナルソフトの立ち上げ

            BT の COM ポートは COM4 以降からが多いので、COM4 ポート以上に対応したターミナルソフトを利用する。現在、利用しているソフトは UTF-8 TeraTermPro である。

          3. ジョイスティックの接続 OverView.JPG JoyStick.JPG

            折角のロボットのコントロールなので、ジョイスティックを接続してみる。ジョイスティックを利用する上での注意点は、ジョイスティックの動きに応じてキー押下げを発生させることにある。今回は Saitek のCyborg EVO だ。このジョイスティックには専用のユーティリティーが付属していて、各部の動きをキーとして取り扱うことが出来る。そのキーを TeraTermPro 経由で BT に送り出すわけだ。もちろん、ゲームパッドなども利用できる。いずれにしてもコントローラをキーに対応させることが重要になる。

        6. 4バンク分の動作?

          オプションの赤外線リモコンでは個別にIDを設定して、最大4機のRoboNovaを動作できるようになっている。マニュアルによれば、IDの設定は [P1]キーを押しながら、[1]-[4]のキーを押すことにより、設定されるようだ。同時押しの時に特別なコードが出力されているかどうかをオシロで観察してみたが、特別なコードは出されていないようだ。

          このことから、考えられることは…

          [P1] を押しながら[1]-[4]の押下げはリモコン本体の設定で、機体側の設定は[P1]を送った後に[1]-[4]を送れば出来そうな感じである。つまり、128個の動作設定を機体側で出来れば、フルバンクのリモコンが実現可能になるかもしれない?


  • 今後

    使用しているBTモジュールが2年以上前の古い物なので、最新式の小型の物に置き換える。現在のテクノロジーを駆使すれば、500円玉程度の大きさも不可能ではないと思われる。


  • 謝辞

    プロトコルを提供してくれた、いしかわきょーすけ氏に感謝します。


頁の先頭
織田裕一へメール


Copyright (C) 1998 - 2006 TeamKNOx