2014年11月1日土曜日

RoombaにTWE-Liteを運ばせてLQIを測ってみた

 TWE-LiteのLQI(電波通信品質)が距離の目安になるというので、実際にどの程度のものか実験してみました。

 TWE-Liteを載せたRoombaを4畳半の部屋で走らせて、部屋の四隅に置いた中継器および親機でLQIを1秒毎に測定し、距離感を円で描いて動画化してみました。



 上の図に、LQI値からざっくり推定した距離が円として描いてあります。距離が遠いほど大きな円になります。プロットの範囲は部屋を真上から見た形に相当し、各々の円の中心は対応する中継器の座標に配置してあります。カメラの映像とグラフの時刻が微妙に合っていないため、変化に時間差があるようです。
 LQIと近さの間には正の相関があるのは見て取れますが、いくつか問題があって、この実験では可もなく不可もないという結果になりました。
  • 子機と親機・中継器のアンテナ高さが揃っていないと、アンテナの垂直方向の指向性が合わないため、近くてもLQI値が小さくなる。
  • 測定した部屋が狭すぎるせいか、距離の変化に比較してLQIの変動が大きい。
複数の中継器を置いて相対的な遠近を知る用途なら使えるかもしれませんが、絶対的な距離を知るのは無理っぽい感じです。

22 件のコメント:

  1. こんにちは.突然のコメント申し訳ありません.

    YOUTUBEの動画拝見させていただきました.
    自分も現在Twe-liteを用いてLQIを計測しようとしているのですが中々うまくいきません.

    どうやってLQIを測ってらっしゃるのでしょうか?
    差支えなければ教えていただけたらと思います.

    返信削除
    返信
    1. パケットを受信する毎に、親機のUARTに出力される情報の中に、LQIが含まれています。これを拾っています。
      標準アプリの場合は、このページで解説されています。
      http://tocos-wireless.com/jp/products/TWE-Lite-USB/monitor.html

      削除
    2. 返信ありがとうございます.

      標準アプリではなく,シリアル通信専用アプリでも可能ですか?

      現在,自分はシリアル通信専用アプリでGPSデータを
      無線で受信しているのですが,先ほど送っていただいたリンクにあるようなデータ列が流れてきません.
      何かモードの違いでしょうか?

      削除
    3. > 現在,自分はシリアル通信専用アプリでGPSデータを無線で受信しているのですが

      こういう重要な情報の後出しは良くないですね。
      使用しているApp_UARTのモードも書いてませんし。

      App_UARTを使ったことはありませんが、ソースコードとドキュメントによれば、LQIが出力されるのは書式モードの拡張形式だけです。
      http://tocos-wireless.com/jp/products/TWE-ZERO/App_Uart/mode_format.html

      削除
  2. 申し訳ありません。
    説明不足でした。

    モードはプロンプト無しのチャットモードを使っています。


    拡張形式というのは何もしなくても出力されるのでしょうか?
    ご教示ください。

    返信削除
    返信
    1. 何のためにLQIが必要なのでしょうか?
      LQIを取得して、何をするつもりですか?

      削除
    2. 先に示したURLに、書式モードの拡張形式コマンドが説明されていますが、読んでみましたか?拡張形式は送信コマンドの2バイト目で指定するコマンド種別がA0の場合です。
      http://tocos-wireless.com/jp/products/TWE-ZERO/App_Uart/mode_format.html

      削除
  3. またも説明不足でした。

    tweliteをマルチコプタに乗せてLQIを見ながら対象物に近づけて行く という実験的な事をしようとしています。

    もちろん対象物にはtweliteを載せています。

    返信削除
    返信
    1. やっぱりLQIで何をしたいかが意味不明です。
      LQIの数値がなぜ必要ですか?

      削除
  4. LQIをとれば
    対象物との距離とLQIの関係
    対象物との間に障害物があった場合どのくらい減衰するかがわかるのでLQIをとりたいと思っています。

    返信削除
    返信
    1. このコメントは投稿者によって削除されました。

      削除
    2. GPSがあるのにLQIを使う必要があるとは思えませんが、LQIを計測したいのであれば、App_UARTではプロンプト無しのチャットモードとは両立できません。チャットモードで転送されたGPSの情報にLQIを載せようとしたら、プロンプト等によってLQIを混在させるフォーマットの定義が必要になります。これには、ファームウェアと受信アプリケーションの変更が必要です。
      受信イベントのコールバック関数には常にLQIが渡されますので、ファームウェアを改造すれば、UART以外にもGPIO,PWM,I2C等でLQIを出力する事はできます。

      削除
    3. コメントを掲示板代わりに使って問題を解決しようとしても無理があるので、ご自身のblogで現在取り組んでいる内容を可能な限り公開することをお勧めします。

      削除
  5. こんにちは、突然のコメント申し訳ありません.

    記事を読み関心を持ち,実際に作ってみたいので回路図等公開していただけないでしょうか?

    よろしくお願いします.

    返信削除
    返信
    1. 特別な回路は要りません。標準アプリのTWE-Lite数個と乾電池、USB-UART変換モジュールを用意するだけで同じ事ができます。
      計測対象をモード4(子機間欠モード)に、ログ取得用PCからUSB-UART変換モジュールを介して接続した固定機をモード1(親機)に、その他の固定機をモード2(中継器)にセットするだけです。

      ハードを用意してログを取るのは簡単です。取得したログをどう使うかの方が難しいと思います。自分でも、どうやったか忘れてしまいました。

      削除
    2. 返信ありがとうございます.

      頑張って作ってみようと思います.

      削除
    3. 恐れ入ります.

      実際に作ってみて分からないところがあったのですが
      複数設置した中継器の区別はどのように行っているのでしょうか.

      差し支えなければ教えていただきたいです.
      よろしくお願いします.

      削除
    4. 親機のオプションビット0x100を立てると、出力がUART形式になります。先頭に中継器のシリアル番号が入るので識別可能なはずです。詳しくは、無線タグアプリのソースコード、Parent.cのvSerOutput_Uart()を読んでください。

      削除
    5. あ~、標準アプリと言いながら無線タグアプリのソースを参照していました。ごめんなさい。後で調べ直します。

      削除
    6. 標準アプリのソース確認しました。標準アプリでは中継器の識別が出力されませんね。勘違いしていました。すみません。
      無線タグアプリ(Samp_Monitor)なら中継器のシリアルが出力されるのですが、書き換えられますか?

      削除
  6. このコメントはブログの管理者によって削除されました。

    返信削除