nRF24L01L+には電波の強度を計測する機能(RPD)があって、RF24ライブラリ作者のMr. J.Colizさんが2.4GHz帯(ISMバンド)の電波利用状況を計測するスケッチを書いてくれました。RF24ライブラリをインストールした後、[Examples]-[RF24]-[scanner]でロードできます。
ArduinoにnRF24L01L+無線モジュールをセットし、スケッチを走らせるとシリアルモニタには下記のように表示されます。
RF24/examples/scanner/に続く2行はチャンネル(RF_CH)を表示しています。このチャンネルは縦に読むのがミソで、十六進数で00~7fの間、2.4GHz帯の1MHzごと、128CH分が表示されています。次の行からはスキャンした時点で使われている電波の強度を表示しています。
チャンネルと周波数の関係式 : F = 2400 + RF_CH [MHz] (中心周波数)
WindowsPC用のソフトウエアで無線LANの電波利用状況を調べるNetwork Stumblerというものがあり、同時に計測してみました。無線LANも802.11 b/g/n規格の物は2.4GHz帯を使用します。
私の所は郊外で、家も少ない訳なのですが、それでも結構電波が飛んでいますね。一番下の行が私の使っている無線ルータです。無線LANの11CHを使っていて、この中では一番シグナルが強いです。ややっこしいのですが、無線LANのチャンネルは上記のチャンネルとは異なります。
2.4GHz帯の無線LANの電波の割り当ては、第1CHの中心周波数が2412MHzで、それ以降は5MHzずつ中心周波数が高くなり13CHまで使われています。ただ、使う帯域は22Mhzですので隣どおしのchはかなり重なってしまいます。確か、全く周波数が重ならないように802.11 b/gの無線LANを使うには、3つの組み合わせしかなかったと思います。
上記無線LANの11chは中心周波数が2462MHzですので、2451MHz~2473Mhzを使っている事になります。これは、ちょうどシリアルモニタに表示されたピンクのアンダーラインの所に該当します。双方を比較してみると、Arduinoで計測した方が明らかに詳しく測ることができますね。
nRF24L01+のデータシートを見るとnRF24L01+の占有する周波数の帯域は通信速度によりますが、250kbps と 1Mbpsで1MHz、2Mbpsで2MHz 程度だそうです。設定できる範囲は1Mhz刻みで2.400GHz から 2.525GHzと書いてあります。
このスケッチを使って無線LANや他の電波と干渉しないようにnRF24L+をセットする事ができます。ちなみにこのRF24ライブラリはデフォルトで76CH(0x4C)、2476MHzを使うようになっています。
このRF24ライブラリには、Examples充実してますよね。 scannerも試してみようと思っていたところでした。 でも、こちらのblogのおかげでまた、事前にいろいろと知識を得られました。ありがとうございます。
たしかに、通常のWiFiとの干渉は考えなくてはいけませんね。 すっかり忘れてました。
ええ、RF24ライブラリの作者J. Colizさんに感謝です。他にも役立ちそうなExampleがありますので、そのうち試してみたいと思います。