このページでは、XBee ZigBeeやXBee Wi-FiのAPIモードを使用して、Raspberry PiやPC、Arduino、ARM、H8マイコンから簡単にXBeeネットワーク管理やXBeeモジュール制御をすることが可能なソフトウェアライブラリの最新版を公開しています。XBee ZigBee (ZB)が中心ですが、XBee Wi-Fi(S6,S6B)にも対応しています。
Raspberry Pi の場合は、下記のコマンドでダウンロードできます。
以下のサンプルソフトウェア、ライブラリソフトウェアを無料で使用することができます。(再利用などの権利については各ソースコードを参照ください。)
XBee ZBモジュールの使い方やサンプルの実行方法については「XBee ZigBeeを使ってセンサネットワークを構築しよう」を、ソフトウェアの作成方法については「XBee ZigBeeを使ったプログラムを作ってみよう」などのページをご参照ください。
ファイル・リンク
説明
| GitHub:xbeeCoord
| Raspberry Pi用 XBee ZB ライブラリ ZB Coord API [最新版]
| xbeeCoord_192.zip
| Arduino/ARM/PC用 XBee ZB/Wi-Fi ライブラリ ZB Coord API V1.92
| xbeeCoord_190.zip
| Arduino/ARM/PC用 XBee ZB/Wi-Fi ライブラリ ZB Coord API V1.90
| xbee_arduino_192.zip
| Arduino専用 XBee ZigBee/Wi-Fi ライブラリ ZB Coord API V1.92
| xbee_arduino_190.zip
| Arduino専用 XBee ZigBee/Wi-Fi ライブラリ ZB Coord API V1.90
| README.txt
| 説明書(ハード、ソフト、インストール方法)
| #ref_manual
| XBee ZB用 リファレンスガイド
| #ref_manual_gpio
| XBee ZB用 GPIO 一覧表
| README_wifi.txt
| XBee Wi-Fi用 トラブルマニュアル ※XBee Wi-Fiは原則サポート不可
| sample01_led.c
| サンプル1 リモートLED制御(Digi純正XBIB-U-DEV及び自作品兼用)
| sample02_sw.c
| サンプル2 スイッチ状態取得(Digi純正XBIB-U-DEV及び自作品兼用)
| sample03_add.c
| サンプル3 新規デバイス検出(Digi純正XBIB-U-DEV及び自作品兼用)
| sample04_sens.c
| サンプル4 センサー読み取り(Digi純正XBee Sensor専用)
| sample05_plug.c
| サンプル5 SmartPlug読み取り(Digi純正 XBee Smart Plug専用)
| sample06_myplug.c
| サンプル6 自作SmartPlug用(参考:ZigBee Smart Plugの製作方法)
| sample07_uart.c
| サンプル7 XBee用ロガー for PC(UARTで送られて来たデータを保存)
| sample08_html.c/zip
| サンプル8 センサーHTML表示 for PC(収集データをスマホで閲覧)
| sample18_httpd.c/zip
| サンプル18 センサーHTTPサーバ for PC(スマホから閲覧&操作)
| xbee.c
| Arduino/ARM/H8/PC共通ライブラリ ソースリスト
| xbee_test.c
| ATコマンド解析ツール for PC(リモートATコマンドの応答値確認用)
| #xbee_test_manual
| ATコマンド解析ツール for PC 説明書
| xbee-cord_sch.pdf
| Coordinator用回路図 (End Device用は「自作品」を参照)
| xbee-sensor.pdf
| XBee用 センサーの回路図
| my_xbee_plug.pdf
| 自作 Smart Plugの回路図
| |
編集や再配布については各ソース毎に標記してあります。すべてのソースに関して著作権表示の改変は禁止します。当サイトで配布しているソフトウェアおよび掲載情報によっていかなる損害が発生した場合であっても当方は一切の補償をいたしません。全て自己責任でご利用ください。
XBee ZBの汎用(GPIO)ポートの一覧表です。当ライブラリの「ポート番号」はXBee仕様で規定されているDIOポートやAIOポートと同じ番号です。下表の最左列に記します。また、「DIN」列はデジタル入力、「AIN」列はアナログ入力、「出力」列はデジタル出力の機能の有無を表します。出力列の「◎」は8mA出力端子(その他は4mA出力)です。
Digi社のリファレンス機器の設計においてはポート1〜3をデジタルもしくはアナログ入力として、ポート4、11、12をデジタル出力にする場合が多いので、ポートに余裕がある場合はそれに従います。
ポート番号 | XBee IO名 | XBeeピン番号 | DIN | AIN | 出力 | 主な用途
1
| DIO1
| XBee_pin 19 (AD1)
| ○
| ○
| ○
| 汎用入力用(DIN or AIN)
| 2
| DIO2
| XBee_pin 18 (AD2)
| ○
| ○
| ○
| 汎用入力用(DIN or AIN)
| 3
| DIO3
| XBee_pin 17 (AD3)
| ○
| ○
| ○
| 汎用入力用(DIN or AIN)
| 4
| DIO4
| XBee_pin 11
| ○
| ×
| ◎
| 汎用出力用(LED3)
| 11
| DIO11
| XBee_pin 7
| ○
| ×
| ◎
| 汎用出力用(LED2)/I2C SCL
| 12
| DIO12
| XBee_pin 4
| ○
| ×
| ○
| 汎用出力用(LED1)/I2C SDA
| |
下表の専用ポートにはXBee専用の機能が割り当てられています。ポート0のCommissionはペアリングを行うためのコミッショニングボタン用です。ポート5はネットワーク参加状態を示すLED用です。ポート10は電波強度をアナログ出力(PWM出力)する端子です。最左列にポート番号が書かれているポートは汎用ポートとしても使用できますが、元の専用機能が使えなくなりますのでポートが不足しない限りは上表の汎用ポートから使用します。
ポート番号 | XBee IO名 | XBeeピン番号 | 入力 | 出力 | 主な用途
-
| VCC
| XBee_pin 1
| ○
| −
| 電源 3.3V
| -
| GND
| XBee_pin 10
| ○
| −
| 電源 GND
| -
| RESET_
| XBee_pin 5
| ○
| ×
| リセット
| -
| ON
| XBee_pin 13
| ×
| ○
| 電源状態表示
| 0
| DIO0
| XBee_pin 20 (Cms)
| ○
| −
| Commission コミッショニングボタン
| 5
| DIO5
| XBee_pin 15 (Ass)
| −
| ○
| Assosiate アソシエート表示
| -
| DOUT
| XBee_pin 2 (DOUT)
| ×
| ○
| UART Data Output
| -
| DIN
| XBee_pin 3 (DIN)
| ○
| ×
| UART Data Input
| 6
| DIO6
| XBee_pin 16 (RTS)
| ○
| −
| RTS input
| 7
| DIO7
| XBee_pin 12 (CTS)
| −
| ○
| CTS output
| (8)
| (DIO8)
| XBee_pin 9 (DTR)
| ○
| ×
| SLEEP_RQ スリープ要求
| 10
| DIO10
| XBee_pin 6 (RSSI)
| −
| ◎
| RSSI indication
| |
構造体
内容
| 一例
| (byte) MODE;
| 受信モード(Frame Type)
| MODE_GPIN MODE_UART MODE_RESP 0(受信なし)
| (byte) FROM[8];
| 送信元アドレス
| {0x00,0x13,0xA2,0x00,0x00,0x11,0x22,0x33}
| (byte) ID;
| 応答パケットID(Frame ID)
| 送信パケット番号PACKET_IDの確認用
| (byte) STATUS;
| 応答結果
| 0:OK 1:ERROR/AT結果/UART状態
| (byte) GPI.BYTE[2]
| GPIO入力データ
| 全ポートの2バイト情報{0x00,0x00}〜
| (byte) GPI.PORT.Dxx:1
| GPIO入力データ
| ポート毎の1ビットデータ0x00または0x01
| (unsigned int) ADCIN[4];
| ADC入力データ
| 0〜1023のAD変換データ。エラーは0xFFFF
| (byte) DATA[];
| UART入力データ
| 関数の戻り値に文字数が入る
| |
MODE
byte
| 内容
| MODE_GPIN | 0x92 | GPI ADCIN を受信 (XBee子機が自発的に送信した場合)
| MODE_UART | 0x90 | シリアルUARTを DATA[]に受信 ※最大32バイト(PCは64)
| MODE_IDNT | 0x95 | Node Identifyを受信 (コミッションボタン1回押し)
| MODE_RES | 0x88 | ローカルATコマンドxbee_at等の結果を受信
| MODE_RESP | 0x97 | リモートATコマンドxbee_ratやxbee_force等の結果を受信
| MODE_MODM | 0x8A | Modem Statusを受信
| MODE_TXST | 0x8B | UART Transmit Status を受信
| MODE_BATT | 0xE1 | (独自)バッテリステータス RAT%Vの応答時
| |
STATUS
byte
| 内容
| MODE=MODE_RES,MODE_RESP,MODE_BATTの時
| STATUS_OK | 0x00 | ATコマンドの結果がOK
| STATUS_ERR | 0x01 | ATコマンドの結果がERROR
| STATUS_ERR_AT | 0x02 | 指定されたATコマンドに誤りがある
| STATUS_ERR_PARM | 0x03 | 指定されたパラメータに誤りがある
| STATUS_ERR_AIR | 0x04 | リモートATコマンドの送信の失敗(相手が応答しない)
| MODE=MODE_MODMの時
| MODM_RESET | 0x01 | ローカルのXBeeがリセットした
| MODM_WATCHDOG | 0x02 | ローカルのXBeeがWatch dogリセットした
| MODM_JOINED | 0x03 | (RouterまたはEnd Device)ネットワークに参加した
| MODM_LEFT | 0x04 | ネットワークから離脱した
| MODM_STARTED | 0x06 | (coordinator)Coordinatorを開始した
| MODE=MODE_GPIN,MODE_UART,MODE_IDNTの時
| 定義なし | 0x01 | Packet Acknowleded
| 定義なし | 0x02 | Broadcast packet
| 定義なし | 0x20 | Encrypted with APS
| 定義なし | 0x40 | from End Device
| |
BeeBee Liteモードは一定の互換性を保ちつつArduino の使用メモリーを節約して動作するモードです。本XBeeライブラリのVer 1.90 以降をインストール後、お手持ちのXBee 用のアプリケーションで宣言しているライブラリ「#include <xbee.h>」を「#include <xbee_lite.h>」に変更すると、BeeBee Lite モードで動かすことが出来ます。(PC版ではxbee.cをxbee_lite.cに変更)
但し、当初に投稿していただいたライブラリだと試験ツールxbee_aging を通過しない項目が多く動作も不安定だったため、調整・機能削減した結果、改善効果はArduino 上でSD カード使用時のメモリ確保改善など限定的なものとなりました。XBee ライブラリVer 1.90 においてxbee_aging のコンパイル後のプログラムサイズはArduino で866 バイト(約4%)の削減、PC で6kB(約6%)の削減、試験時間は約0.5秒(約2%)の短縮、CPU 使用率は約10%の削減を確認しました。
以上のように推定10%ほどのリソース削減しかできない結果となりましたが、今のライブラリ機能を維持するにはこのあたりが限界と思います。
SDカードのライブラリを組み込むと動作が不安定になるという場合に限り、使っていただくような位置づけです。
コマンド | 内容 | 使用例 | 使用例の動作内容
at | ATコマンド | AT>atop | ネットワークアドレスを取得して表示
| AT>atd4=05 | PC親機のXBee DIOポート4をHに設定
| rat | リモートATコマンド | AT>ratd4=05 | リモート子機のDIOポート4をHに設定
| AT>ratis | リモート子機のGPIO値を取得して表示
| ie | 宛先アドレス設定 | AT>ieXX〜XX | 16進数16桁の宛先IEEEアドレス設定
| id | FROMアドレス保存 | AT>id | 最後に受信した受信アドレスを宛先に
| ping | XBee Pingを実行 | AT>ping | リモート子機との通信状態を確認
| tx | UARTテキスト送信 | AT>tx=ABC | テキスト文字「ABC」を子機へ送信
| fo | ファイル送信 | AT>fo=a.txt | テキストファイルを子機へUART送信
| ee | 暗号化 | AT>ee0 | ZigBee通信の暗号をOFFに設定
| AT>ee=ABC | パスワード「ABC」で暗号オン
| cb | コミッショニング | AT>cb1 | コミッショニング通知を送信
| AT>cb2 | ジョイン許可に設定
| AT>cb4 | ネットワーク設定の初期化
| gpo | 子機GPIO出力 | AT>gpo=11 | 子機DIOポート1を1(Hレベル)に設定
| AT>gpo=20 | 子機DIOポート2を0(Lレベル)に設定
| bat | 子機バッテリ電圧 | AT>bat | 子機のバッテリ電圧を取得して表示
| adc | ADCモードへ移行 | AT>adc | 子機AINポート1〜3をAIN入力に設定
| i | 情報表示 | AT>i | 親機に関する情報を表示
| is | ADC/GPIOデータ取得 | AT>is | ratisと同じだが全バイト表示が無い
| ed | End Deviceへ設定 | AT>ed | 子機を省電力(10秒待機)に設定
| vr | デバイスタイプ表示 | AT>dt | ZigBeeデバイスタイプを表示
| ai | ネットワーク状態 | AT>ai | 本機のネットワーク接続状態を表示
| nc | 登録可能な子機数 | AT>nc | 親/子機に登録可能な子/孫数を表示
| zb | 汎用ZigBeeモード | AT>zb | ZigBee PROモードへ移行 ZS=2,AO=1
| zc | 汎用ZigBeeコマンド | AT>zcXXXX | ZigBeeコマンドを送信する
| AT>zc | 予め設定したZigBeeコマンドを送信
| zcdt | 宛先アドレス | AT>zcdtFFFE | 宛先ショートアドレスをFFFEに設定
| ! | 同じ命令を再実行 | AT>! | 前回と同じ命令を再実行
| q! | 終了 | AT>q! | 正常に強制終了
| |