3月 172012
 

 ファームウェアを自前で修正して欲しい情報を取れるようになった SparkFun USB Weather Board だが、実際にこれで気象観測を行うなら以下の問題がある。

  • データ通信の問題。どのようにデータをやりとりするか。
  • ハウジングの問題。風雨に曝される環境でいかに守るか。
  • 電源の問題。外部環境にどのように電源を供給するか。

まずはデータ通信をどのようにするかを検討したい。

 USB Weather Board はデータ通信手段として以下の3パターンがある。

 USB 接続は窓をどう乗り越えるかという問題にぶち当たった。薄手のケーブルは存在するが隙間対応ではないので自前加工する必要がある上、USB の仕様として(ブースターなしの)ケーブル長は最大 5m という制限があるために断念した。
 Bluetooth はそこそこお手頃な価格である上にクラス 1 なので最大 100m 程度の通信距離を確保できそうではあるが、日本国内での野外使用については技適を取っていないことが最大のネックになる。

 他にも Arduino Ethernet シールド経由で接続という選択肢もあり、隙間対応のイーサネットケーブルを使えば屋内から屋外に配線も可能になる。さらに電源供給を PoE (Power over Ethernet) で行えばよいので電源の問題も解決できる。ただし、単体ではファームウェアを格納しきれないために別の Arduino を接続する必要がある。なので、今回は XBee を試すことにした。

 XBee は出力やファームウェア、アンテナ形状で様々な種類があり、最近では Wifi 対応もリリースされた。かなりおおざっぱだが出力やファームウェアの違いで XBee と XBee Pro があり、さらにそれぞれに対してシリーズ 1 と 2 があったりする。同じ XBee でも S1 と S2 では出力が倍違うのだが、タイ洪水の影響で供給が非常に不安定になっており、XBee S1 しか入手できなかった。なお、XBee を PC に接続するためには USB-シリアル変換を行う何かが必要になる。今回は Sparkfun XBee Explorer USB を使った。国内でも各種通販で購入できる。今回は XBee とまとめて購入したが、Strawberry Linux だと USB Weather Board と XBee を接続する際に必要な 2mm ピンフレームがついてくるので Strawberry Linux で購入した。

XBee S1とXBee Explorer USB

XBee S1とXBee Explorer USB

 まずは 2 機の XBee で相互通信ができるように設定する必要がある。XBee には大きく分けて API モードと透過モードがあり、透過モードではシリアル通信をそのまま無線に乗せて 2 機の XBee 間でやりとりしてくれる形になる。これだと相互に XBee の存在をほとんど意識せずに済むため、今回はその透過モードで接続する。XBee の設定には X-CTU という設定ソフトが必要なのでまずはインストールする。Windows でしか動作しないが、VirtualBox 上の Windows でも問題なく動作した。

X-CTU

X-CTU

設定は簡単で、X-CTU の [Modem Configuration] から

  • PAN ID/DL/MY
  • PAN ID/DH/DL

のどちらかを設定する。いずれも PAN ID を指定するが、これはとりあえずそのネットワークの ID と考えれば良さそう。0xFFFF 以外の任意の 16bit の同じ数値を双方ともに設定する。PAN ID 以外のものについては、後者の場合は 32bits ずつ DH と DL で通信先のシリアル (64bits) を指定するのだが、今回は DL と MY を設定するようにした。MY には任意の 16bit アドレスを、DL には通信先の MY を設定する。通信は 2 機で行うので、それぞれ相手の MY を DL に指定すればよい。

X-CTUでXBeeの設定を行う

 設定が完了すれば、1 機はホストとなる PC に、もう 1 機は USB Weather Board に接続する。USB Weather Board への接続はピンフレームを指定の場所に半田付けしてそこに接続する。なお、ピンフレームは一般的な 1/10 インチ幅ではなく 2mm 幅なので気をつける必要がある。

USB Weather Board とピンフレーム

USB Weather Board とピンフレーム

 ピンフレームを接続したら、USB Weather Board 上の Comm スイッチを RF 側にする。これで通信が USB-シリアル経由ではなく、XBee 経由に切り替わる。

USB Weather Board の Comm スイッチ

USB Weather Board の Comm スイッチ

 この状態で USB 接続なりで電源を供給する。PC 側では COM: ポートが増えているので、TeraTerm や kermit などで接続し、データが取れていれば接続完了。

 ただ、XBee S1 では思った以上に電波が飛ばない。データシート上は屋内で 30m は飛ぶことになってはいるが、この「30m」はあくまで欧米の家屋換算で、日本の家屋でみた屋内ではないことに気をつける必要がある。日本でもオフィスなどではデータシート通りの通信距離が得られるかもしれないが、途中に壁などの障害物があると一気に飛距離が短くなる印象がある。
 実際にやってみると、4LDK の標準的な建売物件である我が家の場合、同じ階でも廊下を挟んで 8m ほど離れると電波が途切れる場合があった。USB Weather Board を庭に設置して 2 階の部屋で計測値を取得しようとすると、庭側の部屋では途切れたりビット落ちが発生したりするものの通信は可能だが反対側の部屋ではほぼ通信が不可能だと思っていい。そのため、実際に運用するにはより出力の高いシリーズ 2 の Xbee なり XBee Pro なりを使うか別の手段を考えるかする必要があるかと思われる。


Comments

comments

Powered by Facebook Comments