自分で1から書くと分量も多くなる上に冗長なので、リンクが多めです。
まずは、PC接続ユニットを作ります。XBeeとパソコンをつなげるために、RS-232Cの変換ユニットを間に挟みます。実は、XBee製造元のSparkfunからぴったりのものがあったのですが、
http://www.switch-science.com/products/detail.php?product_id=30
材料は、秋月電子で販売しているFT232RL USB-シリアル変換モジュールとユニバーサル基板です。モジュールは1個950円、基板は余りものを利用しましたが、値段を付けると20円ぐらいでしょうか。これなら、本家の半額以下で作ることができます。
http://akizukidenshi.com/catalog/g/gK-01977
製作方法は、こちらを参考にしました。わずか4本の線をつなぐだけですべてが完結!すばらしい。
http://www.maroon.dti.ne.jp/koten-kairo/works/dsPIC/xbee2.html
さて、実際に使ってみます。設定はこちらを参考にしました。
http://kazushi-lab.c.fun.ac.jp/pukiwiki/index.php?Funnel%A4%DE%A4%C8%A4%E1
ですが、まず引っ掛かったことがあります。
Virtual PC上のWindows XPではXBeeをうまく設定しませんでした…
ダウンロードする最新データがうまく取得できませんでした。
なぜVirtual PCで起動したかと言うと…
なんかまるで、このソフトはWindows98SEからXPまでですよ、と言わんばかりの表記ですが、実際は、USB接続のためのドライバだけがXPまで対応している、ということでした。設定ソフト自体はWindows7 64bitでも現時点では問題なく動いています。
ボーレートと、DL - Destination Address Low、MY - 16-bit Source Adressを設定します。二つのXBeeでセットの値にします。たとえば、
1台目:DL=10 MY=11 2台目:DL=11 MY=10と言う具合です。
つづいで、Arduinoに1台のXBeeを接続して、もう一台はPC接続ユニットにつなげます。後は、Arduinoの開発ツールで書き込めば完了…ですが
やっぱりうまく書き込みができません。
以下のようなエラーメッセージが出てしまいます。
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51
何度やってもうまく書き込めません。リセットボタンを押しても、USBをつなぎなおしても同じです。
ある時、ふと思ったのが、純正品はどのようにつながっているのか、です。回路図も公開されているので、これを見ながら同じようにつなげばいいんじゃないかな、と思いました。
図面上部分の、DIN,DOUT,CTS,RTS,DTRと書いてあるのが、どうやらXBeeとつながっている線のようです。電源2本を加えて、7本つながっていることになります。CTS以下もつながっているということは、データ垂れ流しではなく、ちゃんとフロー制御をしているんですね…
というわけで、Arduino用には、以下のように回路を変更します。
CTS,RTS,DTR同士、全てあわせて合計7本つなぎます。
こうして出来上がった接続ユニットで、無事に通信できました。
シナモンブレードについて質問があるんですが…
返信削除よろしいですか?
青眼さん
返信削除簡単に終わるような&公開して良い質問ならこちらへどうぞ~
もし長くなったり、公開はまずい…ということでしたら、「ペンライト頒布について」のなかのメールアドレスへ送ってもらえれば答えますよ。