とりあえず Arduino + XBee をやってみる
すぐ近くではほとんど手出しされてませんが、ちょっと離れたところで Arduino に手を出している模様なのを知ったのは1月上旬。
その後、学研の大人の科学に Arduino 互換を売ってたので、ちょっと買って IDE でごにょごにょしました。それには、温度センサとかのセンサ類も無く、XBeeとかもないので、もうちょっと踏み込んでみようと思った次第。
まずは、XBeeから電波を飛ばしてパソコンで受ける、というもの。
材料
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シールドからデータが出ています。
てことは、あんまり深く考えずにデータ送信ができるということですね。