参考にすべき物

XBee Starter Kit の CD-ROM 中のドキュメントを頼りに進めていきます。

product-manual_XBee_OEM_RF-Modules_802.15.4.pdf : 使い方が一通り載っています。

以下も参考になります。

http://ftp1.digi.com/support/documentation/productmanual_xbeecodedevelopment.pdf : P16に、開発キットの回路図が載っています。これをもとに回路図を考えました。

モジュールの設定

APIはよく分からないのでATコマンドのみで。

ファームウェアのアップデート

付属のX-CUTで、最新のファームウェアをダウンロードしておく。
古いと、一部のATコマンドが未対応。

今回は、バージョン:10A5 を利用。

受信側

デフォルトのまま。

送信側(端末)

  • D0 = 3
    • DIO0 を Digital Input に設定
  • IC = 1
    • DIO0 が変化したら、送信するように設定

受信するデータ

X-CUT や TeraTerm などでCOMポートを見ると、以下のようなデータを受信します。(ASCIIや16進数で表示されますが、ここでは2進数にしてあります。)

01111110 00000000 00001010 10000011 00000000 00000000 00111110 00000000 00000001 00000000 00000001 00000000 00000000 00111100

スイッチを切り替えると、以下のようなデータになります。

01111110 00000000 00001010 10000011 00000000 00000000 00111100 00000000 00000001 00000000 00000001 00000000 00000001 00111101

このデータの説明は、付属の product-manual_XBee_OEM_RF-Modules_802.15.4.pdf に書いてあるのですが、どうも書いてある内容とデータが違います。

データの意味はよく分かりませんでしたが、このデータの13バイト目(後ろから二つ目)が、DIO0〜DIO7 までのデータです。

これをRubyで必要な部分だけ書き出すようにします。

以下のスクリプトを参考にしました。


http://ruby.g.hatena.ne.jp/garyo/20061130/1164845977

class Com
  @comno
  @speed
  @parity
  @data
  @stop
  @com
  attr_accessor :comno, :speed, :parity , :data , :stop, :com
  def initialize
    @comno="1"
    @speed="9600"
    @parity="N"
    @data="8"
    @stop="1"
  end

  def open(n)
    @comno=n.to_s
    modestr = "MODE COM#{@comno} BAUD=#{@speed} PARITY=#{@parity} DATA=#{@data} STOP=#{@stop}"
    system modestr
    @com = open("com#{@comno}", "r+b")#.binmode
  end
  def close
    @com.close
  end
  def recv
    @com.readpartial(1024 * 1024)    # RS232C IN
  end
end

com1=Com.new
com1.speed="9600"
com1.open(1)  # USBの開発ボードを使っている場合は、この数字が変ります。環境に応じて変えてください。
loop {
	unless com1.com.eof? then
		a = com1.recv 
		while a.size < 14
			a += com1.recv unless com1.com.eof?
		end
		abort a.size.to_s + "is too large." if a.size > 14

		0.upto(13) {|i|
			print "%08b"%(a[i].to_i) + " "
		}

		puts ""
		print "%08b"%(a[12].to_i) + " "
		puts ""
	end
	sleep(0.2)
}
com1.close

XBeeを超シンプルに使ってみた

requirement

  • 1つのスイッチの状態を通知するのみ
  • 即応性は不要(あってもかまわない)
    • スイッチの状態が一瞬だけ切り替わった時は、通知しなくて良い
    • 伝送に時間が掛かってもかまわない
  • 省電力は無視(後々考える
回路図


完成図



PC側の動作(といっても、0と1が切り替わるだけ。)

環境

開発環境

  • PC
  • XBee
    • XBee (普通のやつ。X-CUTでは、XB24と呼ばれる。容量不足でZigBeeが使えない)
    • 802.15.4 (ZigBeeでは無い)
    • PCには、XBIB-U-DEV (USB 接続の開発ボード。Start Kitに付属。)を接続


ようは、XBee Starter Kit (XB24-DKSJ)で事足ります。

http://www.alpha-denshi-shop.com/Item/Item_DigiModule.html