XBeeとMacをつなぐ

XBeeのテストのためだけにPICを用意するのも面倒だったので、
パソコンからXBeeとシリアル通信して、試しにネット接続してみましょう。
僕はMacなのでMacからやります。
とりあえずXBeeに電源を供給してMacとシリアルでつなぐだけです。
こんな感じ。
XBeeはピンの左上(1番ピン)が3.3Vで、左下(10番ピン)がGNDです。2番ピンがTxで3番ピンがRxとなっています。

IMG_0988

Macにはシリアルポートはないので USB-シリアル(3.3V)のケーブルを使います( http://akizukidenshi.com/catalog/g/gM-05840/ (ドライバはググって探してね!))
XBeeには電源(3.3V)をつないで、シリアルの2本をつなぐだけでOKです。
これで接続完了。

無線LANに繋ぐ

XBeeに接続先のSSIDやパスワードを設定しましょう。

データのやり取りもSSIDの設定もUARTから行えます。
つまりMacからやるわけですが、Macにはいい感じのシリアル通信ができるソフトが標準で入ってないのでCoolTermという無料アプリを入れて下さい

さて、XBeeの電源を入れてケーブルを繋いだらCoolTerm起動
最初に通信速度とかシリアルポートがどれかとか設定しないといけないです。Optionを押してこんな風にします
Portは最初はbluetoothとかになってるのでシリアルケーブルに切り替えます。
ボートレートは9600。
あとからコマンドでボートレートを変更できますが、もしどんな値にしたかわからなくなったらXBeeのRx端子をGNDにつないで起動してみてください。そうすると9600で起動します。
次に左側にあるTerminalを押してLocalEchoをONにして下さい。(やんなくてもいいけど やると自分の打った文字が見えてわかりやすい)
できたらOptionを閉じて Connectを押して接続してみましょう。これで打った文字がXBeeに行きます。

[ATコマンド]
SSIDの設定などをしましょう。
XBeeをコマンドモードに切り替えましょう。
何かというと、通常はXBeeは受け取った文字をそのまま今設定してある送信先に飛ばすようになっているので。
「これは君宛ての命令だよ」と いうことで命令するモードにします。
どうやってやるかというと +++ というコマンドを打つだけですそしたらOKって送ってきます。
設定例はこんな感じ
SSID oyabunn
パスワード oyabunnpass
認証方式 WPA2 PSK(AES)
という接続先にXBeeを接続するとすると

+++
atid oyabunn
atpk oyabunnpass
atee 2

これでOKです。それぞれ打ってEnterを押すと OK ってのがXBeeから来ると思います。
(ちなみに10秒ぐらい何も打たないでいると勝手に通常モードに切り替わるのでまた+++を送って下さい)
つまりいそいで
+++OK
atid oyabunn
OK
ってやりとりをしないといけないです。
ちなみにateeが認証方式で
0:open 1:WPA 2:WPA2 3:WEP40 4:WEP104
となっています。

さて、接続の確認をしましょう
atai
と打つと今の接続状況がわかります。
0ならOKですし、FFなら探し中とか接続中です。それ以外が出たら何かがおかしいのでもうちょっと待ってみるかやり直してみて下さい。
これで0ときたらこの設定を保存しましょう。
atwr
で書き込みです。
ちなみに
atmy
で自分のIPアドレスを確認できます。これで既に接続完了ですね^^
[Twitterを取得してみる]

どうせなので、Twitterのタイムラインを取得してみましょう。
http://api.twitter.com/1/statuses/public_timeline.json 
これがTwitterのpublicタイムラインです。クリックすると改行のない長い文字が見えると思います。
じゃあXBeeにここに接続させてTLを取得してみましょう!

ここで一つ悲しいお知らせ。
実はXBeeWifiはXBeeの無線部分をwifiにしただけでXBeeなんです。
どういうことかというと、XBeeってのは2つのXBeeで通信するってのがメジャーな使い方で、主に接続先は1つなんですね。
なのでXBeeWifiも、基本的には接続先を1つに設定したらそこといろんな通信をする ってな使い方をするように作られています。
なので接続先切り替えは若干面倒です。できるのはできるんだけどね。
基本的にはツイッターに接続先を設定したらoyabunn.comに切り替えるのはちょっと面倒なわけです。

まぁとりあえずやってみましょう。
まず、HTTPで通信するのでプロトコルをTCPにして、送信と受信のポートを80番にしましょう。16進数で入力するので80は50となります。

atip 1
atde 50
atc0 50

これでTCPにして相手と自分のポートを80にしました。(atwrで設定を書き込むと便利です)
これは1回やって保存しとけば良いことです。

atip
0:UDP 1:TCP
というプロトコルの選択になってます。
atdeは相手のポート番号を設定するコマンドです 80は0x50なので相手の80ポートにデータを送るならatde 50です。
atc0はどのポートに届けられたデータを受け付けるかというものです。ここで80にしていますので、同じIPでもport: 81に届いたものは無視されます。
さて、次は相手のipアドレスです。api.twitter.comは2012年9がつ現在で219.94.243.70らしいので、これを接続先にしましょう

atdl 219.94.243.70

これでOKです。
これで何か文字をXBeeにおくったら 219.94.243.70のポート80に送られます。
そして自分のポート80にデータが来たらUARTでXBeeからデータが送られてくる状態になってます。
接続先を切り替えたい時はまた+++してatdl で接続先IPを切り替えるわけです。
では 早速APIを叩いてみましょう。
最後にコマンドを打ってから10秒ぐらい待ってXBeeが通常モードになったら
GET /1/statuses/public_timeline.json HTTP/1.1
Host: api.twitter.com

の文字をCoolTermにコピペして下さい。これがさっきのURLを開くHTTPプロトコルの内容になります。
この時に最後に改行が入るようにコピペして下さい
GET /1/statuses/public_timeline.json HTTP/1.1
Host: api.twitter.com(改行)
ってことです。

そしたらTwitterからpublicTimelineの応答が来るはず!
これでTwitterとの接続は完了です!やったね!

コメントを残す