2012年10月20日土曜日

arduino-xbee-firmata-python連携キター(´∀`)ー

いろいろ参考にしまくってどうにかxbee(簡単に無線でシリアル通信できるユニット)でいつも通りにarduino動かせるようになったので要点をメモ(忘れると1日潰れる箇所あり。注意)

筆者環境:ubuntu 12.04 (32bit)  pythonはeclipse(PyDev) 他はふつうのはず

主な参考文献、ソフトなどの入手先

1、ubuntuでのxbeeのソフト設定方法を参考にさせて頂きました。
 ttp://d.hatena.ne.jp/abikounso/20100506/1273106924

2、オライリーの「XBeeで作るワイヤレスセンサネットワーク」、今回の話の基盤になる書籍。

3、FTDI(PCとxbeeをつなぐUSBコネクタのドライバ)
    ttp://www.ftdichip.com/FTDrivers.htm(目次的なページ)
 http://www.ftdichip.com/Drivers/VCP.htm(ubuntuはこっち)
 ページにあるTN-101という資料に具体的な入れ方が書いてあるから見ながら入れる(英語)

■xbeeを使えるようにする
 上記3のドライバを入れる → xbeeをエクスプローラ(xbee-USBコネクタ)に装着
 → PCのUSBに挿し込む

 → 参考資料1や2を参考にwineでX-CTUを起動 、ファームウェア(〜ATのバージョン最新のやつ、バージョンは16進数なので注意)をxbeeに書き込む

 →picocom(コマンドラインでxbeeの通信設定できるソフト) を導入
  apt-get でも入れられるがバージョンが古い(1.4)ため参考資料のやり方でできない。
  最新のtar玉落としてきて 「cd (最新版のフォルダ)  ./picocom」で起動
  これを使ってATコマンドネットワークIDなどの登録、設定を行う。無いと詰む

 → 順序は変わるが、ここでボーレートをデフォルトの9600から57600に変更する。
  やらないとfirmata使えない解決に半日)やり方は以下





















 ファームウェアの設定画面のSerial〜 のBaud Rateを57600にする。





















メイン画面の右上のBaudも57600にしておく


2個目のxbeeも同様に設定する(USB引っこ抜いて、アダプタのxbeeを載せ替え)。ファームウェア片方はコーディネータ(AT)、片方はルータ(AT)になるようにしておく。あと、ATDH、ATDLのシリアルは相手側の番号を入力する。

コーディネータをPC(USBコネクタで)に繋ぎ、ルータの方をarduino(xbeeシールド)載せる。




図は配線後の写真(サンプルスケッチでLEDを光らせてみた) 

シールド使うとき 注意点として、arduinoにスケッチ(arduinoに書き込プログラムのおしゃれな言い方)を書込むときはシールド上「serial select」スイッチをUSB、書き込み終わって実際に無線で動かすときはMICROにすること間違えると動かないし、スケッチ書き込みでバグる。


arduinoにstandardfirmataのスケッチ(サンプルの中にある)を書き込む

pythonでpyfirmata(ググる→githubらへんから入手→setup.pyでインストール→pythonのインクルードパスにフォルダ登録しとく)を使って普通にプログラム書く。使い方はpyfirmataのサンプル参照。そのうち自分でまとめるかもしれないけど。

→以前に作ったfirmata用テストプログラムの接続ポートだけ変えてサーボモータを動かすことに成功。スライドバーの動きに応じてサーボが動く、楽しすぎワロタ


















上がテストGUI(作りが雑)、下が実機の構成(arduino、電池、サーボ、ブレッドボード )。
ブレッドボードに今回の話と関係ないセンサが刺さってるのはご愛嬌

明日と来週で適当にラジコンでも作ってみるか。

・・・書き忘れがあったら嫌だな(;´д`)。ああ、無線モノは認識に時間かかる(X-CTUとか)から気長に待つべし。連打するとろくなことにならない。

  


0 件のコメント:

コメントを投稿