ArduinoからXBeeのRSSI(受信信号強度)を取得してみる

 XBeeのRSSI、dBm(受信信号強度)をArduinoから取得してみました。

 いろいろ調べていたらXBeeの6pinから受信強度(RSSI)に合わせたPWM波形が出力されているとのこと。詳しい情報があまり見つからなかったので、PWM出力を実測してみて受信強度を確認してみました。

スポンサーリンク
スポンサーリンク

概要

 RSSI、dBmとは信号の強さ、信号強度を示してます。RSSIは相対的な指標で、dBmは絶対値で表現される指標のようです。

 でXBeeにはもともと dBmを 取得することが可能で、通信中にその信号強度を確認することができるようです。ATコマンドで確認することもできますし、X-CTUを使用すれば、ビジュアルでリアルタイムに信号強度を確認することができます。

▼X-CTUで信号強度取得▼

 2台のXBeeを隣に置いて測定しているところです。 dBm 単位で信号強度がリアルタイムで確認できます。

 さらに、XBee本体の6pinからはデフォルトでRSSIに合わせたPWM出力がされているようで、その波形を確認すればArduinoなどからも割と手軽に信号強度が確認できそう・・。ということで今回はこの6pinから出力されている信号をArduino等で処理して信号強度を確認してみたいと思います。

まずはX-CTUでdBm(信号強度)の確認

 X-CTUにツールが準備されているため、そのツールを利用して信号強度の確認を確認してみたいと思います。

 使い方は割と簡単で、2台のXBeeをペアリングした状態で、一台をパソコンへ接続、X-CTUで認識させます。

 ▼で「tool」-「RangeTest」を起動させます▼

 起動した画面で、「START***」をクリックすると信号強度の計測を開始します。

 ▼信号強度計測中▼

 パケットを送受信してその信号強度と信号損失を表示しています。グラフ化も同時に行ってくれてパケット損失も見れるようです。

 すぐとなりどうしにXBee2台を置いて計測しているので「-46dBm」と非常に強い信号強度となってます・・。X-CTU利用すれば簡単に信号強度を確認することが可能です。

スポンサーリンク

XBeeの6pinから信号強度(PWM波形)を確認

 つぎに本題です。XBeeの6番pinから出力しているというRSSIの信号強度を拾って見たいと思います。

 調べてもあまり情報が出てこなかったので(良く解らなかったので)PWM波形をロジアナ使用して確認してみました。ここら辺の内容がわかれば6pinの出力内容をArduinoなどのマイコンから情報処理して、信号強度が確認できると思います。

 で2台のXBeeを適当に離しながら、X-CTUで「dBm」を、6pinからはPWM出力を確認して比較を行ってみました。

 ▼「-63dBm」時のPWM▼

 X-CTUで「-63dBm」程を示しているときの6pinからの出力です。かろうじて読み取れたマニュアルからPWM周期は200μsとのこと・・。確かにきっちり200μs周期となってます。恐らく(当然)、信号強度によってデューティー比が変わるはずです。

6pinからのPWM波形を実測

 確認したところ、信号強度強⇒HIGH時間長い、信号強度弱⇒HIGH時間短いとなっているようです。

 信号強度とPWMデューティー比の関係を調べるため、少しずつXBeeを離していって「dBm」と「デューティー比」を計測してみました。

 ▼実測結果▼

 横軸に「dBm」、縦軸に「PWMのHIGH時間(μs)」としてます。

 信号強度「dBm」とデューティー比はある程度比例関係にあるようです。

 ですので6pinから出力されるHIGH時間をArduinoなどで計測すれば信号強度は確認できますね。tone関数やtimer使用すればそれほど難しくないかと思います。

 ただ信号強度がおよそ「-30dBm」以上の場合、6pinからはずっとHIGHが出てるようなのでtone関数使用する場合はtimeoutを200μsで設定しておくと無駄な計測時間を使わなくていいかと思います。

 記事タイトルで「Arduinoで取得する」とありますが、肝心なその部分があまり説明なくてすみません・・。需要があれば方法追記します。

コメント