2012年4月16日月曜日

Scratchから無線でモータを動かす(1)〜MacでXBee ZB開発環境を構築する

Scratchでプログラミングをして、PicoBoard + WeDo互換にしたHelloBoardなのぼ〜どにセンサやモータなどをつないで、さまざまなものをロボット化することを考えています。これまでの成果として、Arduinoの技術を応用したHelloBoardやなのぼ〜どで、PicoBoardとWeDoの機能を実現するところまではできています。 (いつもお世話になっている@abee2さんのおかげです)
#HelloBoardやなのぼ〜どをPicoBoard+WeDo互換にするスケッチなどは、以下にあります。 Scratchも特製のものを使います。(^_^)
http://squeakland.jp/abee/tmp/NanoBoardAGWithMotor.zip(1モータ用)
http://squeakland.jp/abee/tmp/NanoBoardAGWithMotors.zip(2モータ用)

これまでは、PCと有線で接続した状態でコントロールしなければならないため、その動きには自ずから制限がありました。これを無線化できないものかと考えたのが事の発端でした。いろいろと調べているうちに、いつも買い物をしているスイッチサイエンスさんで、「MBeeDuino」というXBee無線通信とモータドライバがセットになっているArduino互換機が販売されているのを見つけました。私がやりたいと思っていたことが一度にできそうな予感がして購入してみました。

MetaBoardの成果を利用しているということなので、以前にもやった通りMacからスケッチを変更する時は、Arduino-IDEの「Upload」ボタンを押した直後にMBeeDuinoのリセットボタンを押さなければならないという煩わしさはありますが、とりあえずLチカ実験は無事にクリアしました。

無線でのコントロールは、以前に買っていた「XBee ZB」を使うことにしました。 実は、XBeeを持っていたのに一度も使ったことがないという状況だったので、どうすれば良いのか調べるところからスタートしました。いろいろと調べて回ったのですが、シリーズ1についての資料はたくさん見つかったものの、ZigBee対応のもの(シリーズ2)についてはわかりやすいものがなく、やっと見つけたのが以下のサイトでした。
ボクにもわかるZigBee方式 XBee
#むしろ「XBeeで作るワイヤレスセンサーネットワーク」を読んだ方が良いです。 

とにかく、あっちこっちにつまずきました。Funnelの成果物(funnel-1.0-r806.zip内のXBeeConfigTool)を使うと簡単そうだということがわかったのでやってみましたが、シリーズ1にしか対応していないことがわかり断念しました。シリーズ1を使っている人は、これが便利だと思います。

また、X-CTUをWineで動かすことも試みました。「~/.wine/dosdevices」フォルダ内と「~/Library/Application\ Support/MikuInstaller/prefix/default/dosdevices」フォルダ内に、シリアルポートへのシンボリックリンク(「ln -s /dev/tty.usbserial-A800*[※環境によって変化する] com10」とする)を作ってXBeeを認識させるところまでは成功したのですが、肝心なデバイスタイプの変更ができませんでした。
#Linuxならきっとうまくいくと思います。きっと…。

そんな中、twitterで「MacでXBee ZBの設定ができない」とつぶやいたところ「moltosenso」というところで開発しているX-CTU互換ソフト(moltosenso Network Manager™ IRON)があることを教えて頂きました。全て英語表記ですし、若干癖の強いソフトなので操作に戸惑いましたが、使っているうちにだんだんと使い方がわかってきました。しかし、これでもデバイスタイプの変更は出来ませんでした。
#有償のものが必要というシステムでした。

もし、これらの問題を克服してまともに動かせるようになったら、Sparkfunの「XBee Explorer USB」を使ってMacにつないで次のように設定をすれば、XBee ZBが使えるようになるはずです。(FTDIのドライバソフトがインストールされている必要があります)
#XBee Explorer USBのRSTとGNDをリセットスイッチでつないでおくと便利です。

  1. 送信側
    • Serial port…/dev/cu.usbserial-A800* [※環境によって変化する]
    • Mode…Programming radio
    • Baud rate…57,600(for ATmega328)
    • PAN ID…1234 [※0001以外の任意]←受信側と同じにする
    • デバイスタイプ…Coordinator
  2. 受信側
    • Serial port…/dev/cu.usbserial-A800* [※環境によって変化する]
    • Mode…Programming radio
    • Baud rate…57,600(for ATmega328)
    • PAN ID…1234 [※0001以外の任意]←送信側と同じにする
    • デバイスタイプ…Router/End Device

調べた結果ここまでわかりました。デバイスタイプが決まると、MY IDなどが自動で決まるのかなぁ…とか、まだまだわからないことが多いです。どうも一筋縄ではいかないようです。また時間を見つけて再チャレンジしてみます。

【追記】関連記事は以下のとおりです。

0 件のコメント: