勉強会用

processingやopenframeworksで自分が作っていったものの過程など

XBeeの導入

XBeeには
AT通信
API通信
があり、今回は比較的簡単なAT通信を行った。

AT通信は比較的

まず、必要なものや手順は
http://mag.switch-science.com/2012/08/01/startup_xbee_zb/
で確認。

(ただこの記事での説明はwindows用なので、
macの人は上の記事に合わせて下のような違う記事を見ながら行うとよい。
http://bino98.hatenablog.jp/entry/2013/12/27/035609
http://hikone.info/blog/?p=106
二つ目の方はAPI通信なので、この二つの記事を見比べながらAT通信を行うと良いと思う。

補足:
x-ctuを入れたら ? マークのcheck updateを選択してまず更新.
あとusbアダプターのドライバも入れておく。http://www.ftdichip.com/Drivers/VCP.htmこれをし忘れて色々めんどくさかった。
もし"APIモードを一回xbeeにいれたんだけれども途中で失敗してしまった..."ということがあったらレンチマークをおしてのXBee recoveryを選択してみるといい。


また上の記事のこの設定が終わったら、もとのswitch-scienceの記事にもどり二つx-ctuを起動する所を無視してその先のarduinoへの書き込みを行うと通信できているかが確認できる。また、x-ctu上でのちょっとした確認がしたい場合は下の記事のようにモニターアイコンを押してみてみるといい。
ただしこちらはAPI通信で確認はまだしていない。
http://hikone.info/blog/?p=173
)


これらができたらx-ctuのモニターである文字を打ったら光る、音が出るというものを作っても良いかもしれない。

下はx-ctuでHとうったらルーター側のArduinoの13番ピンが光るコード。別のキーをうつと消える。
13番ピンはledささなくても元々ledがついてるから楽で良い。
これでも通信しているかが分かる。ご参考まで。

————————————————————-
int led = 13;
void setup(){
 pinMode(led, OUTPUT);
 Serial.begin(9600);
}
void loop(){
 if(Serial.available() > 0)
 if(Serial.read() == ‘H’){
   digitalWrite(led,HIGH);
   delay(10);
 }else{
   digitalWrite(led,LOW);
   delay(10);
 }
}
—————————————————————-

加えてコーディネータ側のxbeearduinoと繋げて、そのarduinoにこのコードを入れて2番ピンにボタンでも付けてみる。(arduinoやシールド等がもう一つ必要になる)

http://www.geocities.jp/zattouka/GarageHouse/micon/Arduino/SWtoLED/SWtoLED.htm
そしてどちらも電池に繋げてみてPCを使わずに通信してみるものいい。
下のコードはボタンを押したときだけ光る。

————————————————————
int BUTTON = 2;
void setup(){
 pinMode(BUTTON, INPUT);
 Serial.begin(9600);
}
void loop(){
 if(digitalRead(BUTTON) == HIGH){
   Serial.print(‘H’);
   delay(10);
 }else{
   Serial.print(‘L’);
   delay(10);
 }
}
————————————————————-


このようにSerial.print()とSerial.read()で大体のやり取りはできるはず。片方でreadやprintを行ってフィードバックしてあげるもよし。
基本processingとarduinoのシリアル通信と同じはずなのでxbee用のコードがあまり無ければそちらも参考にするのもありだろう。