MARYDuinoがXBee Arduinoライブラリに対応
久々のMARY基板ネタです。
巷ではXBeeが流行っているようです。
自分も秋月でお安くなっていたXBee Series2を3個買ってみました。
「何これわかんねぇw」
無線化されたUARTの如く使える透過モードはいいとして、APIモードとか解りません。便利そうなんだけどね…
しばらく放置の方向にしようと思いましたがそんな折に、h.Suga氏のwebでArduino Freaks::xbee_arduinoライブラリを知りました。
ライブラリをさっそくダウンロード。可読性の高いライブラリで自分にも使えそうです。
で、Arduino標準API互換のMARYDuinoに移植しました(maryduin_XBee20111108.zip)。もちろんLPCXpresso LPC1114でも動作します。
1カ所(Coodinator)から複数の通信相手(Router)にシリアルに文字列を送りたいと思っていた訳なんですが、、このライブラリなら出来そうです。
図にするとこんな感じ。
XBee本体をこの通信が出来るよう設定します。今回は通信相手のRouterは2つです。(以降、Routerその1、その2とします)
最初はCoodinatorの設定。
Coodinator APIモード、エスケープモード(AP=2)でWriteします。
次はRouterその1とその2の設定。
Routerは単純にCoodinatorからのデータを貰えば良いだけなので、APIモードにする必要は有りません。ATにします。
Router ATモードにしてそれぞれのシリアルナンバー(SH,SL)を控えておきます。デスティネーションアドレス(DH,DL)はゼロにしておきます。
これでXBee Series2本体の設定おしまい。
先ほどのMARYDuinoのダウンロードのサイトからXBeeの文字が入っているmaryduinoプロジェクトを持ってきます。
CoodinatorをMARY(LPC1114)から制御します。
main.cppがArduinoの.pdeファイルに相当するファイルです。
ここにArduino語で記述します。
#include <libmary.h> #include <stdlib.h> #include "maryoled.h" #include "XBee/XBee.h" uint8_t text1[] = {'H', 'e', 'l', 'l', 'o', '1'}; uint8_t text2[] = {'H', 'e', 'l', 'l', 'o', '2'}; XBee xbee = XBee(); XBeeAddress64 remoteAddress1 = XBeeAddress64(0x0013a200, 0x12345678); // Routerその1のアドレス(SH,SL) XBeeAddress64 remoteAddress2 = XBeeAddress64(0x0013a200, 0x87654321); // Routerその2のアドレス(SH,SL) ZBTxRequest zbTx1 = ZBTxRequest(remoteAddress1, text1, sizeof(text1)); ZBTxRequest zbTx2 = ZBTxRequest(remoteAddress2, text2, sizeof(text2)); void setup () { xbee.begin(9600); delay(1000); } void loop () { xbee.send(zbTx1); xbee.send(zbTx2); delay(100); }
たったこれだけ。コンパイルしてFlash Magicで書き込み。
書き込みを終えたら、CoodinatorのXBeeをMARY XB基板に載せてMARY基板本体にマウント。
Routerその1、その2はXBeeエクスプローラなどに載せて(8N1,9600baud)でTera Termコンソールなどから覗いてみる。
うまくいってれば、その1のコンソールには”Hello1” その2のコンソールには"Hello2"が永延と出力されるはず(ウワァw
参考文献
- Arduino Freaks
- PS3とLinux、電子工作も::LPCXpresso IDEでのC++コードサイズ肥大化の対策
- toyowata氏 twitter上で一般的なelf32-gccでの純粋仮想関数のハンドラに関してアドバイスを頂きました
- http://stackoverflow.com/questions/920500/what-is-the-purpose-of-cxa-pure-virtual
- オランダの老舗、「元品川恵比寿南蛮屋(よみ:えぬ・えっくす・ぴー・せみこんだくたーず・じゃぱん)」の師匠→取りあえず色々教えてくれた(ォィ。viaくまちゃん