api,
digimesh,
Series 1,
Series 2,
Wi-Fi,
xbee,
zigbee
|
2 replies
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認証済みモジュールが有力か)
+--------+ +--------+
| |3.3V------VCC|1 |
| | | |
| p14|RX-------DOUT|2 XBee |
| p13|TX--------DIN|3 |
| P0_22|RTS-------RTS|16 |
| p12|CTS-------CTS|12 |
| | or | or |
| mbed |SCK------SCLK|18 |
| |CS-------SSEL|17 XBee |
| |MOSI-----MOSI|11 Wi-Fi|
| |MISO-----MISO|4 SPI |
| |INT------ATTN|13 mode |
| | | |
| |GND-------GND|10 |
+--------+ +--------+
※ Wi-Fiはハードウェアフロー制御が必須。(確実にデータを取りこぼす)
※ SPI: XBee Wi-Fi は X-CTUであらかじめ設定しておくほか、DOUT をLowに保ったまま電源を入れると、AP・D2・D3・D4・D9・P2 がSPI用に自動的に設定される。初期化が終わると ATTN がアサート(Low)される。
XBee-mbed library http://mbed.org/users/okini3939/notebook/xbee-mbed/
リモートのXBeeのポートに取り付けたLEDを点滅させる。(X-CTU設定:AP=2)
XBee-mbed 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 参照)
http://mbed.org/users/okini3939/notebook/xbee-mbed/
#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入力の実例
Sample program for XBee remote API operation. This program get ADC sample data from remote XBee connected over the radio
#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) {
// データパケット受信の処理
}
:
}
}
:
}
}
XBee-mbed は XBee-Arduino ライブラリからの移植です。
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.
Please login to post comments.