XBee-WiFi

TeraTermからの通信

XBeeを使って、TeraTermとホストで通信を行います。
XCTUが起動しているときは、XCTUを停止します。
TeraTermを起動して、通信ポートにXBeeのポートを指定します。
TeraTermの設定→シリアルポートで、ボーレートを9600bpsに変更します。
TeraTermの設定→端末で、ローカルエコー有り、受信をCR+LFに変更します。

ホストマシンで以下のpythonスクリプトを実行します。
# -*- coding : UTF-8 -*-
import socket
HOST_NAME = '255.255.255.255'
PORT = 9750 # 0x2616
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
sock.sendto(b"Hello, UDP BroadCast", (HOST_NAME, PORT))

TeraTermに受信したデータが表示されます。
WiFiからの入力が、そのままシリアルポートからの入力になります。


ホスト側で以下のpythonスクリプトを実行します。
# -*- coding : UTF-8 -*-
import socket
HOST_NAME = ''
PORT = 9750
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((HOST_NAME, PORT))
while True:
    rcv_data, addr = sock.recvfrom(1024)
    print("receive data : [{}]  from {}".format(rcv_data,addr))
sock.close()

TeraTermで適当な文字を打ち込むと、打ち込んだ文字がホスト側に表示されます。
シリアルポートへの出力が、そのままWiFiへの出力になります。


TeraTermで[+++]を打ち込みます。
これでXBeeがAPIモードに移行します。
これ以降の入力は、送信データではなく、XBeeに対するコマンド(ATコマンド)となり、以下の様にXBeeの設定情報を取り出したり、
XBeeの設定を変更することができます。
ATCNコマンド、あるいは一定時間入力が無いとAPIモードから抜け、通信モードに戻ります。
ATコマンドの一覧は、こ ちらのドキュメントのCommand Referenceに記載されています。
以下の例は、APのSSID、IPアドレス、GWアドレス、ネットマスクを取り出しています。


続く...