xbee
IoT
XBeeWi-Fi

XBee Wi-FiをWebに接続する

More than 3 years have passed since last update.

XBee Wi-Fi - Digi International

XBee Wi-Fiを買ってWiFi経由でHTTPリクエストを投げてみたのでメモ。

準備

ハードウェア

XBee Wi-Fi

スイッチサイエンスなどで買える。4000円程度。

XBee USBアダプター

なんでもよいがSparkFun Electronics XBee Explorer USB(写真の赤いボード)を使った。千石電商などで買える。2500円程度。USBポートに直接差すドングルタイプも便利だが、電源ケーブルなどほかのものと干渉して煩わしいので避けた。

USBケーブル

SparkFunの場合はmini-B typeのもの。引き出しを漁ったら出てきた。

ソフトウェア

FTDIドライバ

FTDI Chip VCP Drivers
アダプターをMacに認識させるのに必要。スイッチサイエンスのアダプターも比較で買ってみたがまだちゃんと認識できていない。

シリアル端末クライアント

OS Xを想定。WindowsだとTeraTermなども使えるみたい。
初めは以下の二つを使い分けるのがよさそう。どちらかだけでも目的は達成できるはず。

  • XCTU
    一つ一つの設定でXBeeに特化したGUIサポートがあり直感的。設定の段階で便利。ターミナルも付属はしているが使いづらい。

  • CoolTerm
    コマンドのペーストができるので長いコマンドを打つときに便利。XBeeは無通信時間が10秒以上続くと自動でコマンドモードから抜けてしまうので、XCTUで直打ちしているとしばしば抜けてしまう。

併用する場合は、片方をConnectする前にもう一方をDisconnectして使う(※ここは本当に必要か怪しい)。

設定

Webのテストで@IT Access Test Pageでチェックという例が多かったので倣ってみた。どこかのAPIでもいい気はするし、アクセスログを見ながらやりたければMacでApache立ててアクセスでもよい。
(以下スクリーンショットが続きます)

  1. XBeeをアダプタに差してXCTUを起動。 xctu
  2. 左上のルーペボタンで書込み先を探す。FTDIドライバーがインストールされていればアダプターが認識されてusbserialなどが表示されるはずなので選択して次へ。 xctu
  3. モジュールが追加されたらクリックして読み込みを始める。 xctu xctu
  4. 各設定項目を変更する。 xctu

取り急ぎ変更したのは以下の項目。

  • SSID
  • Encryption Enable
  • Passphrase
  • IP Protocol: デフォルトでUDPになっているのでTCPに直す。
  • DNS Address
  • Description IP Address: 1カ所決め打ちで通信するという設計らしい。
  • Source Port: 50(16進数)
  • Destination Port: 50(16進数)
  • IP Address of gateway
  • IP Address Mask
  • Module IP Address

Description IP AddressはMacのターミナルで調べて設定。

% nslookup www.atmarkit.co.jp
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   www.atmarkit.co.jp
Address: 202.218.219.147

必要な項目を設定したら鉛筆のボタンで書き込む。
なお、ここまでの作業はCoolTermでもできるはずだが、ATコマンドを覚える必要がある。

確認

  1. 今度はCoolTermで接続。usbserialを選んだ後、Local Echoをonにする。 local echo
  2. HTTPリクエストを投げる。最後の空行も必要。
GET /fnetwork/accesstest/at.html HTTP/1.1
host: www.atmarkit.co.jp

XTerm screen

HTMLが返ってきたら成功。

ハマりどころ

ポート

XBeeの設定は16進数なので、HTTPの80番を指定するときは50(つまり0x50)を指定する必要がある。

モード

XBeeにはコマンドモードと透過モードがある。
クライアントで+++を入力するとコマンドモードに移る。
設定はコマンドモードで行うが、HTTPのリクエストは透過モードで行う。
コマンドモードでHTTPリクエストを投げると以下のようにエラってしまう。
HTTP error
コマンドモードにいる場合は10秒数えて、透過モードに戻ってからリクエストを投げる。透過モードに戻ったかどうかを確認する手段はないようだ。

参考書籍

注意

XBee Wi-Fiは技術基準適合証明の工事設計認証番号をとっており日本国内で適法で利用できるらしい。こういうのをちゃんと確認していくのも大事ですね。
giteki


次はセンサデータをWebへ送ってみたい。
いろいろ初めてなので間違って理解しているところもあるかもしれないのでご指摘あればください。