いろいろ参考にしまくってどうにか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 件のコメント:
コメントを投稿