XBee-mbed library - XBee APIモードライブラリ
.
XBee-mbed library
This library has been ported from the XBee-Arduino..
for Series 1, Series 2 (and DigiMesh), Wi-Fi
AP=2 API ENABLE (use escape characters)
アナログ値取得、バグ修正済み
※ XBee Wi-Fi のために少し拡張
※ XBee Wi-Fi は、単に無線部をWi-Fiに置き換えたというもので、あくまでXBeeである。
(汎用的に使えるWi-Fiモジュールが欲しければ、Gainspan社のTELEC認証済みモジュールが有力か)
mbedの下駄シリーズ、積み重ね基板にXBeeを搭載できます。
Series_1/2
+--------+ +--------+ | mbed |3.3V------VCC|1 XBee | | | | | | p14|RX-------DOUT|2 S1 | | p13|TX--------DIN|3 or | | | | S2 | | |GND-------GND|10 | +--------+ +--------+
WiFi
+--------+ +--------+ | mbed |3.3V------VCC|1 XBee | | | | | | p14|RX-------DOUT|2 | | p13|TX--------DIN|3 | | | | WiFi| | P0_22|RTS-------RTS|16 | | p12|CTS-------CTS|12 | | | | | | |GND-------GND|10 | +--------+ +--------+
※ Wi-Fiはハードウェアフロー制御が必須。(確実にデータを取りこぼす)
Documents
- zipに含まれる Arduino の sample プログラムが参考になります。
- http://code.google.com/p/xbee-arduino/
- オリジナルのドキュメントを参照してください。
- http://code.google.com/p/xbee-arduino/wiki/DevelopersGuide
Download
Import libraryXBee
XBee-mbed library http://mbed.org/users/okini3939/notebook/xbee-mbed/
Sample
リモートのXBeeのポートに取り付けたLEDを点滅させる。(X-CTU設定:AP=2)
Import programXBee_sample
XBee-mbed sample
sample
#include "mbed.h" #include "XBee.h" XBee xbee(p13, p14); int main() { uint8_t Cmd[] = {'D', '4'}; uint8_t Val[] = {0x04}; XBeeAddress64 remoteAddress(0x0013A200, 0x40319F25); RemoteAtCommandRequest remoteAtRequest; wait(1); xbee.begin(9800); remoteAtRequest = RemoteAtCommandRequest(remoteAddress, Cmd, Low, sizeof(Low)); remoteAtRequest.setApplyChanges(true); remoteAtRequest.setCommandValue(Val); remoteAtRequest.setCommandValueLength(sizeof(Val)); xbee.send(remoteAtRequest); }
Wi-Fiの無線LANアクセスポイント接続とHTTP GETのサンプル。(X-CTU設定:AP=2、BD=7)
DNS lookup も実装してみたがうまく動かない。(下記 Note 参照)
Import programXBee_wifi_sample
http://mbed.org/users/okini3939/notebook/xbee-mbed/
sample
#include "mbed.h" #include "XBeeWiFi.h" XBeeWiFi xbee(p13, p14, p21); // TX, RX, CTS void main () { IPv4TransmitRequest data; uint8_t buf[100]; : xbee.begin(115200); xbee.reset(); xbee.getWiResponse(MODEM_STATUS_RESPONSE, 5000); xbee.setup(SECURITY_WPA2, "SSID", "PASSPHRASE"); : data.setAddress(IpAddr(192, 168, 1, 2)); data.setDstPort(1234); data.setSrcPort(5678); data.setProtocol(PROTOCOL_UDP); data.setPayload(buf); data.setPayloadLength(sizeof(buf)); data.setFrameId(getNextFrameId()); send(data); : }
XBeeをAPIモードで使う (by Todotani) 電波強度(RSSI)の取得と、リモートのADC入力の実例
Import programXBeeApi_RemoteCommand
Sample program for XBee remote API operation. This program get ADC sample data from remote XBee connected over the radio
sample
#include "mbed.h" #include "XBee.h" XBee xbee(p13, p14); // 宣言 void main () { AtCommandResponse local = AtCommandResponse(); RemoteAtCommandResponse remote = RemoteAtCommandResponse(); : while (1) { : xbee.readPacket(); if (xbee.getResponse().isAvailable()) { // XBeeより読み込み switch (xbee.getResponse().getApiId()) { case AT_COMMAND_RESPONSE: xbee.getResponse().getAtCommandResponse(local); if (local.getStatus() == AT_OK) { // ローカルATコマンド、レスポンスの処理 } break; case REMOTE_AT_COMMAND_RESPONSE: xbee.getResponse().getRemoteAtCommandResponse(remote); if (remote.getStatus() == AT_OK) { // リモートATコマンド、レスポンスの処理 } break; case ZB_RX_RESPONSE: xbee.getResponse().getZBRxResponse(rx); if (rx.getOption() == ZB_PACKET_ACKNOWLEDGED) { // データパケット受信の処理 } : } } : } }
Original
XBee-mbed は XBee-Arduino ライブラリからの移植です。
- XBee-Arduino (library, document)
- Copyright (c) 2009 Andrew Rapp. All rights reserved.
through the serial mbed to xbee
mbed の PCシリアル=UART 経由で X-CTU による設定も可能。
#include "mbed.h" Serial pc(USBTX, USBRX); // tx, rx Serial xbee(p13, p14); // tx, rx int main() { pc.printf("begin\r"); for (;;) { if (pc.readable()) xbee.putc(pc.getc()); if (xbee.readable()) pc.putc(xbee.getc()); } }
USB serial (mbed) <- -> P13, P14 (XBee)
mbeduino platform - mbed用マザーボード(ベースボード)
Can use the X-CTU.
Note
- DNSサーバへリクエストを投げ返事が返ってきた瞬間にwifi接続が切れる。
- XBee wifi → DNSリクエスト → DNS server (問題なし)
- DNS server → DNSレスポンス → XBee wifi (wifi切断、UDPパケット受信しない)
- しばらくするとwifi接続が回復する。
- ポート53番以外であればこの現象は起こらない。
- APIモードでもトランスペアレント(透過)モードでも同じく。
- ファームウェアのアップデートで解決されることを期待。
Acknowledge
- オリジナルからあったアナログ値取得の不具合修正(感謝 Ken Todotani)
5 comments on XBee-mbed library - XBee APIモードライブラリ:
Please log in to post comments.