XBee に関するページです

Ubuntu で使う

Buck Up Chinny: X-CTU with Linuxに詳しい解説あり。

Wine 上で X-CTU を使う方法

シリーズ 2 の XBee 無線モジュールを使うには、ファームウェア更新や設定変更のために Digi.com で公開されている X-CTU がどうしても必要である。しかし、X-CTU は Windows 版しか用意されていないので、Ubuntu などの Linux マシンでは Wine を使う必要がある。

Wine のインストール

Ubuntu 12.04 LTS を導入したらまずやることまとめ » Libre Free Gratis! | Libre Free Gratis! にしたがって、開発版の 1.5 をインストールすることにした。

$ sudo add-apt-repository ppa:ubuntu-wine/ppa
$ sudo apt-get update
$ sudo apt-get install wine

X-CTU のインストール

digi.com のサイトから X-CTU をダウンロードして、Wine で実行する。

2012-10-30 時点では、Ver. 5.2.7.5 (ファイル名:40003002_B.exe)。

$ wget http://ftp1.digi.com/support/utilities/40003002_B.exe
$ wine 40003002_B.exe
X-CTU-install-on-wine01.png

ライセンスを承諾する。

X-CTU-install-on-wine02.png

インストール先はデフォルトのまま。

X-CTU-install-on-wine03.png

「Next」をクリックして先に進む。

X-CTU-install-on-wine04.png

X-CTU on Linux Ubuntu 10.04 : wire.less.dk によると、Webから更新ファイルをダウンロードができないようなので、ここはスキップする。

X-CTU-install-on-wine06.png

インストール完了。

X-CTU-install-on-wine05.png

X-CTU の実行

X-CTU は Windows 用のプログラムなので、シリアルポートは COM? だけ認識する。そこで、Linux 上のシリアルポートを COM? にリンクしておく必要がある。

[ 5626.608085] usb 4-1: new full-speed USB device number 2 using uhci_hcd
[ 5626.817950] usbcore: registered new interface driver usbserial
[ 5626.817966] USB Serial support registered for generic
[ 5626.818020] usbcore: registered new interface driver usbserial_generic
[ 5626.818023] usbserial: USB Serial Driver core
[ 5626.820805] USB Serial support registered for FTDI USB Serial Device
[ 5626.820924] ftdi_sio 4-1:1.0: FTDI USB Serial Device converter detected
[ 5626.820971] usb 4-1: Detected FT232RL
[ 5626.820974] usb 4-1: Number of endpoints 2
[ 5626.820977] usb 4-1: Endpoint 1 MaxPacketSize 64
[ 5626.820980] usb 4-1: Endpoint 2 MaxPacketSize 64
[ 5626.820983] usb 4-1: Setting MaxPacketSize 64
[ 5626.823282] usb 4-1: FTDI USB Serial Device converter now attached to ttyUSB0
[ 5626.823309] usbcore: registered new interface driver ftdi_sio
[ 5626.823311] ftdi_sio: v1.6.0:USB FTDI Serial Converters Driver

上の例では、シリアルポートは /dev/ttyUSB0 として認識されているので、COM10 として認識されるようにリンクを張る。

$ ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com10

プログラム本体は .wine/drive_c/Program\ Files\ \(x86\)/Digi/XCTU/X-CTU.exe にインストールされるので、これを実行する。
「PC Settings」→「User Com Ports」で先ほどリンクを張ったシリアルポート(上の例では、COM10)を追加する。

X-CTU-on-Wine01.png

「PC Settings」→「Select Com Port」で追加したシリアルポートを選択し、

X-CTU-on-Wine02.png

「Test/ Query」ボタンをクリックして、XBee ボードから情報を取得できるかテストする。

X-CTU-on-Wine03.png

ファームウェアの更新

上の例のように、ファームウェア情報が古いと XBee ボードの情報を正しく受信できず、Modem type が Unknown になってしまう。このような場合は、Digi.com から最新のファームウェアをダウンロードする必要がある。

XBee-PRO ZB (S2B) (XBP24BZ7) の場合、ここから ZIP ファイルをダウンロードして、

X-CTU-Firmware-Update-on-Wine01.png

X-CTU のメニューから「File」を選択し、

X-CTU-Firmware-Update-on-Wine02.png

先ほどダウンロードした ZIP ファイル(この例では、82002356_C.ZIP)を選択してファームウェアを更新する。

X-CTU-Firmware-Update-on-Wine03.png

以下のような画面が表示されて、ファームウェアが更新される。

X-CTU-Firmware-Update-on-Wine04.png

今度は XBee ボードのタイプが XBP24BZ7 と正しく認識されているのが分かる。

X-CTU-Firmware-Update-on-Wine05.png

参考

Python-based XCTU replacement を使う方法(未確認)

Xbee Znet and gps (RoboSci Blog) で Python ベースの X-CTU 互換ツールが公開されている。

Buck Up Chinny: X-CTU with Linuxにも解説あり。

MacOS X で使う

ファームウェアの更新は公式には X-CTU しか対応していない。Linux や MacOS X マシンでは、別途 Windows OS を入れるなり、Wine で実行するしかなかった。

空飛ぶエンジニアの実験室: MacによるXBeeのFW書き込みによると、moltosenso Network Manager IRON を使うと Linux や OSX のネイティブ環境でできるようになるらしい。

XBee ボードのモード

X-CTU-Modem-Config-on-Wine01.png

XBee ボードには Coordinator, End Device, Router の3つのモードがあり、それぞれに API と AT モードがある。その他に、Router/ End Device Analog I/O と Router/ End Device Digital I/O がある。

AT モード

人間と直接対話するのに向いているモード。「透過モード」と「コマンドモード」がある。

Product Manual: XBee / XBee-PRO 802.15.4 OEM RF Modules

情報

透過モード

シリアルポートを無線装置の間でデータがそのまま送信されたり、受信されたりするモード。これがATモードのデフォルトの状態で、コマンドモードからは10秒間何も入力がなければ自動的に透過モードに復帰する。

コマンドモード

無線モジュールに対して対話するモード。設定値を読みだしたり、設定値を変更したりする際に用いられる。透過モードからは「+++」を受信するとコマンドモードに移行する。

API モード

XBee ボードの設定

XBee 通信で設定しなければいけない項目には、以下の2つがある。

  • PAN ID
    Personal Area Network ID の略。16 bit の範囲で任意に設定可能。AT モードでは ATID コマンドで現在の設定を読みだしたり、新しく設定できる。
  • Destination Address
    64 bit 長で通信相手先のアドレスを指定する。高位 32 bit はベンダ固有のもので、Digi には "0013A200" が割り当てられている。高位 32 bit は ATDH コマンドで、低位 32 bit は ATDL コマンドで現在値を取得したり、設定する。

ターミナルソフトを用いた設定

X-CTU を用いて XBee ボードを一度 AT モードに設定すれば、後はターミナルソフトで各種設定ができるようになる。ただし、XBee ボードはユーザが入力したコマンドを返してこないので、ターミナルソフトはローカルエコー機能を有していることが望ましい。

デフォルトの XBee ボードの通信設定

項目
ボーレード9600
データ長8ビット
ストップビット1ビット
パリティなし
フロー制御なし
改行コードCRを受信したら CR+LF
ローカルエコーあり

Ubuntu 12.04

XBee で作るワイヤレスセンサーネットワーク」によると、Linux での推奨ターミナルソフトは picocom であるが、Ubuntu 12.04 の picocom はバージョンが1.4と古く、ローカルエコー機能が未実装である。1.6から実装されるようになったので、ここから 12.10 用の picocom-1.7-1 をダウンロードして、dpkg でインストールした。依存関係が少ないので、問題なく使えるようだ。

$ picocom --echo --imap crcrlf /dev/ttyUSB0

picocom v1.7

port is        : /dev/ttyUSB0
flowcontrol    : none
baudrate is    : 9600
parity is      : none
databits are   : 8
escape is      : C-a
local echo is  : yes
noinit is      : no
noreset is     : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv
imap is        : crcrlf,
omap is        : 
emap is        : crcrlf,delbs,

Terminal ready
+++OK
ATID
0
ATID yyyy
OK
ATID
yyyy
ATSH
13A200
ATSL
xxxxxxxxx

CTRL+A, CTRL+X で終了。

通信テスト

X-CTU を用いて、片方は Coordinator AT モードに、もう一方は Router AT モードに設定する。ターミナルソフトで双方の PAN ID と Destination Address を設定し、2つのターミナルソフトを立ち上げて、片方で入力した文字列がもう一方のウィンドウに表示されれば通信は正常に行われている。

Arduino との連携

通信テスト

Arduino ワイヤレスSDシールドを XBee エクスプローラ USB の代替として使う

XBee ボードの設定を PC で行う場合、PC と XBee ボードをシリアル接続するために XBee エクスプローラ USBXBeeエクスプローラUSBドングルを用いる。

Arduino + Arduino ワイヤレス SD シールドの組み合わせで、XBee エクスプローラ USB の代替として使えるようになる。Arduino ワイヤレス SD シールド基板上の「SERIAL SELECT」スイッチを「USB」側にして、Arduino に空のスケッチを書きこめばよい。(念の為、書き込み時には XBee ボードを外しておいたほうがよいかも。)

//空スケッチ
void setup() { }
void loop() { }

情報

loopback

Digi International Support Forum - Print Thread - Range test using S2B modules and X-CTU

Re: Range test using S2B modules and X-CTU
You are using the programmable which has API firmware. Unfortunately XCTU doesn't support the range test for API mode. Additionally the programmable has an extra processor that is stopping the data from reaching the radio.
The manual states "To send data to the loopback cluster ID on the data endpoint of a remote device, set the CI command value to 0x12. The SE and DE commands should be set to 0xE8 (default value). The DH and DL commands should be set to the address of the remote (0 for the coordinator, or the 64-bit address of the remote). After exiting command mode, any received serial characters will be transmitted to the remote device, and returned to the sender."
In order to perform a range test, you will need to do the following items to the radio connected to the computer.
Second module doesn't need to be reprogrammed nor does it need the red loopback connector.


    Put the programmable connected to the computer into a bypass mode by sending the "B" command in the programmable bootloader menu.

        Bypass mode allows direct communication with the Ember
        Otherwise a program must be written and loaded that takes care of telling the radio what to transmit.

    Use XCTU Modem configuration tab to reprogram one module

        Make sure baud rate is correct since Resetting module will not work, since it will reset the programmable processor and exit bypass mode.
        If the request to reset the module comes, click cancel, and verify the baud rate. Also make sure that the programmable processor is in bypass mode.
        (9600 or 115200 baud are the most common)
        Click "Load" button
        Open attached profile "programmable_AT_LoopbackOnly.pro"
        If desired for quicker turnaround time Change ATDH and ATDL to match Serial number of the other radio.
        Change the ID if desired to be on the same network as the other units.
        Change the Firmware Version # if desired
        Click "Write" button
        This profile changes the module to AT mode and ATCI = 12 (loopback testing)

    Plug power into the second module
    You are now ready to run a loopback test.

        Click on Range Test Tab
        Click "Advanced" Button
        Check the box for "Packet Delay"
        Set the Min and Max packet delay to 4000mS
        (This can be reduced to 1000mS if ATDH and ATDL have been set to the specific destination radio address.)
        Set the "Data receive timeout" to 15000mS



After finishing the loopback test return the module to the original state by


    Put the programmable connected to the computer into a bypass mode by sending the "B" command in the programmable bootloader menu. (If not already in bypass mode)
    Use XCTU Modem configuration tab to reprogram the module

        Make sure baud rate is correct since Resetting module will not work
        Click "Load" button
        Open attached profile "programmable_API_Restore.pro"
        Change the ID if desired to be on the same network as the other units.
        Change the Firmware Version # if desired
        Click "Show Defaults" button
        Click "Write" button



You can contact digi for additional support if needed.

Common XBee Mistakes « Rob Faludi

faludi
February 24, 2012 at 4:40 am

That’s a Series 1 radio, which is just base level 802.15.4 (not ZigBee), so the CI command for ZigBee cluster identifier does not run on that module. If you want to do loopback for range testing, try wiring the TX (physical pin 2) directly to the RX (physical pin 3).

XBee/WiFi

XBee/WiFi

参考


添付ファイル: fileX-CTU-Modem-Config-on-Wine01.png 399件 [詳細] fileX-CTU-Firmware-Update-on-Wine05.png 416件 [詳細] fileX-CTU-Firmware-Update-on-Wine04.png 354件 [詳細] fileX-CTU-Firmware-Update-on-Wine03.png 418件 [詳細] fileX-CTU-Firmware-Update-on-Wine02.png 394件 [詳細] fileX-CTU-Firmware-Update-on-Wine01.png 496件 [詳細] fileX-CTU-on-Wine03.png 354件 [詳細] fileX-CTU-on-Wine02.png 424件 [詳細] fileX-CTU-on-Wine01.png 418件 [詳細] fileX-CTU-install-on-wine06.png 427件 [詳細] fileX-CTU-install-on-wine05.png 409件 [詳細] fileX-CTU-install-on-wine04.png 433件 [詳細] fileX-CTU-install-on-wine03.png 446件 [詳細] fileX-CTU-install-on-wine02.png 464件 [詳細] fileX-CTU-install-on-wine01.png 490件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-01-21 (日) 22:05:23 (271d)