とりあえず Arduino + XBee をやってみる

すぐ近くではほとんど手出しされてませんが、ちょっと離れたところで Arduino に手を出している模様なのを知ったのは1月上旬。
その後、学研の大人の科学Arduino 互換を売ってたので、ちょっと買って IDE でごにょごにょしました。それには、温度センサとかのセンサ類も無く、XBeeとかもないので、もうちょっと踏み込んでみようと思った次第。

まずは、XBeeから電波を飛ばしてパソコンで受ける、というもの。

材料

Arduino IDEバージョンを0021以降にするようにとスイッチサイエンスさんのサイトにありました.

Arduinoとパソコンの接続

デバイスドライバは、(IDE)/drivers に同梱されているので、とりあえずUSBつなげて、ドライバディレクトリのパスを指定すれば入ります。
パソコン側のUSB-COM変換されているので、デバイスドライバを見て、COMポートを覚えます。
IDEを開いて "Tools" -> "Serial Port" で COMポートリストが出るので、先ほど覚えたCOMポートを指定します。

サンプルの実行

IDEで、次のコードを書きます。
http://www.saturn.dti.ne.jp/~npaka/flash/arduino/index.html まるうつしです。

int ledPin=13;

void setup()
{
    pinMode(ledPin,OUTPUT);
}

void loop()
{
    digitalWrite(ledPin,HIGH);
    delay(1000);
    digitalWrite(ledPin,LOW);
    delay(1000);
}

右端の「再生」的なボタンはコンパイルまでです。アップロードは右から2番目(右端がシリアルモニタ)にあります。
コンパイルボタンだけをクリックして、全くアップロードされずに迷ったんだ…。
アップロードボタンをクリックすると、まずコンパイルを行うので、アップロードボタンでもとりあえず可です。
LED(当初はもっと早い間隔で点滅してます)が1秒おきに点滅すれば成功です。

XBeeシールドの接続

XBee通信モジュールと、XBeeシールド(XBeeモジュールのソケットを持ち、本体と接続できるもの)を用意します。
XBeeシールドにXBeeモジュールをインストールしたうえで、本体にXBeeシールドをインストールします。
XBeeシールドには、ジャンパスイッチ2つあって、"XBEE/USB"と書かれています。USBとXBeeとを同時にできないようです。
プログラムをアップロードするには、USB接続を有効にしないといけないので、2つとも、USBと書かれた側に切り替えます。
そうしないと、"Protocol Error"とか言われます。

XBee用のサンプル

まで電波は出しません。
次のコードをコンパイル、アップロードします。
http://www.saturn.dti.ne.jp/~npaka/flash/arduino/index.html まるうつしです。
9600bpsにして、1秒ごとに 'H', 'L' を送信するものです。えー、別にどんな文字でもかまいません。

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  Serial.print('H');
  delay(1000);
  Serial.print('L');
  delay(1000);
}

動作確認は、シリアルモニタを使います。
"Tools" -> "Serial Monitor" を開きます。'H' と 'L' が交互に出てくれば成功です。

電波を出す

まずやるべきことは、電波を出すための設定です。
まず、本体からUSBを引っこ抜きます。
続いて、先ほど "XBEE/USB" と書かれたジャンパスイッチを"USB"側に切り替えましたが、今度は "XBEE"側に2つとも切り替えます。
そして、電力供給のために、あらためてUSBを刺します。ACアダプタがあるなら、それでも構いません。

パソコンで受信する

XBee Explorer USB をとりあえずパソコンに刺します。これもCOMに変換されるので、デバイスマネージャでCOMポートを確認します。
TeraTerm等で、9600ボー、8ビット、パリティなし、ストップビット1、フロー制御なし、でつなげると、確認できました。

よくよく考えたら

Serial.print() とかはそのまま変えずに、XBeeシールドからデータが出ています。
てことは、あんまり深く考えずにデータ送信ができるということですね。