2014自分はハードはからっきしなので、まずはArduinoからということで手を出してみてます。しらないことがたくさんあったのでメモやりたかったことは「ArduinoからZigbeeでPCまでシリアル通信を飛ばして、それをMaxで拾う」ということ。1.知らなくて困ったこと・抵抗器の抵抗の大きさはラインのカラーで表現されている(!)・スイッチの状態を得るためには「プルアップ抵抗(プルダウン抵抗)」というものを使う・LEDは長いほうがプラス極。あと抵抗付けないでそのままぶっさしてはいけない(焼けます。)2.Xbeeの基本Arduinoで無線通信する方法はイーサネットやBluetoothもあるけど、今回はZigbeeを扱えるXbeeモジュールを使うことにした。Xbeeはファームウェアによって挙動が変わるXbeeはメッシュネットワークを形成することができ、ネットワーク内での役割によって3つのタイプになれる。1Coordinator(親機)一つのネットワークに一つ必要。2Router(中継機)終端端末としての機能に加えて中継機能をもち、リープしない。Device(終端装置)データを収集する。スリープするXbeeはコマンドモードによって対話方式が変わるATモードとAPIモードがある。ATモードは機能が少ないが、シリアル通信だけならこれでOK(というか有線シリアル通信の無線板のようなもの)。APIモードはセンサーの値をずっと垂れ流しにしたい、みたいなケースで使う。APIモードではデータはパケット(フレーム)として送られる。試してみたい)XCTUなどのソフトを使って、Xbeeのモジュール自体に情報を書き込む必要がある。Xbeeの基本についてはこことかhttp://www.inetclub.gr.jp/Total_collection_volume.htmこことかhttp://todotani.cocolog-nifty.com/blog/2010/12/xbee-f604.htmlが詳しい。3.Xbeeまわりで詰まったことX-CTUで、Arduino経由でのXbeeを認識しない事が多いX-CTUで情報を書き込む際、まずCOMポートを選び、「Test/Query」ボタンを押すことでチェックを行うのだが、これがとにかく成功しないことが多い。UNO-ワイヤレスプロトシールド-Xbeeみたいな感じでつないでいるのだけど、(おそらくArduinoのシグナルが邪魔をして)認識できないことが多い。Requiredという表示が出る。)次のようにやるとうまくいく事が多い。SELECTスイッチを、USB側に倒す。ArduinoのリセットとGNDをつないでショートさせる。2USBでPCにつなぐ。3X-CTUでTest/Queryを行う。Requiredとか言われた場合は、USBをはずして、もう一度1からやりなおす。参考にして、とりあえずシリアル通信ができるようになった。無線でどうしてもうまくいかない。IDもきちんと設定できているのに、なぜつながらないんだろうか悩んでいたけど、どうやらペアリング自体がうまくいっていなかったことがわかった。X-CTUのコンソールからATモードでネットワーク設定をリセットするATNRコマンドを双方(CoordinatorとRooter両方で)叩いて、とりあえずはうまくいくけど、せっかくの無線通信なのにいちいち有線で設定をしないといけないのじゃ意味が無い。そこでArduino側から内部でATコマンドを叩いてネットワーク設定をリセットする方法もやってみたけれど、イマイチうまくいかない。一応:内部から叩く場合、”+++(ATコマンドモードに入る)”→"ATNR(ネットワークリセット)"→”ATCN(でATコマンドモードを抜ける)”というのをやる必要があって、またGuardTimeというのがあってそれぞれの処理の間で決められた時間待たないとコマンドを受け付けない。結果的に電源を入れる順番とタイミングの問題だということがわかった。←超重要3Arduino側Xbeeの電源を入れるしばらくすると、ペアリングが成功して、シリアル通信を行えるようになる。Arduino側のリセットだけじゃダメで、PC側も電源を入れなおさなきゃいけないというのが盲点だった。あとは挿し直した後にしばらく待たないといけないというのも。音を扱おうとしているので、遅延少なくする方法をいろいろ探してみているけど、とりあえずつかれたので今日はここまで。says:ありがとうございました。blogイベント告知,技術的な備忘録など。