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.

