カテゴリー別アーカイブ: arduino

[arduino]XBee wifi

XBee wifiはシリアル通信だけでなく、HTTPリクエストのやりとりができる。
これはインターネットを介してサーバーとの連携を容易に実現するだろう。

今回用意したもの
・XBee wifi
・XBee USBアダプタ <-設定用
・arduino UNO
・ワイヤレスシールド <-なくても良かったが、arduinoとXbeeをつなぐのは楽。
・無線LAN環境 <-SSIDや暗号化形式などは調べてまとめておく

1. XBee wifiの設定とテストをX-CTUにより行える
cooltermとか最悪ターミナルからでもできる。その場合ドライバをインストールする必要あり。
無線LANとIPの設定、得に相手先のIP(destination IP)は固定で設定する。
設定が成功すればpingが通る。

2. X-CTUコンソールでHTTPリクエストのテスト。
以下のように予め送信するパケットを編集しておくことができる。
GET /index.html HTTP/1.0
Host:xxx.xxx.xxx.xxx

送信だがサーバー側の改行コードに合わせること。
成功するとレスポンスが帰ってくる

3. arduinoによるサンプル
適当なwebサーバーにURL引数を受け取って表示するようなCGIをPHPなどで作成し、以下のスケッチでテスト。

void setup() {
Serial.begin(9600);
}
void loop() {
Serial.write(“GET /arduino_xbee_test.php?val1=99&val2=88 HTTP/1.0”);
Serial.write(“\r\n”);
Serial.write(“Host:xxx.xxx.xxx.xxx”);
Serial.write(“\r\n\r\n”);
delay(3000);
}

[補足]
・個人的に改行コードではまることが多かった。X-CTUのコンソールは0Dでしか送らないので0Aを追加したりとか。
・プロキシサーバーを通す場合もプロキシのIPを相手先に設定してHTTPリクエストを投げればOK。

・XBeeとのシリアル通信ができていれば、結局のところX-CTUでもcooltermでもarduinoからでも、”+++OK”からATコマンドで設定ができる。設定方法とかは以下のリンクを参照。

http://arduino.sugakoubou.com/xbee_wi-fi#xbee_wi-fi

 

シリアル通信[arduino,C#]

arduinoのLEDをUSBシリアル通信でC#により点灯させる。
USBのCOMポートはデバイスマネージャーとかから確認。
arduino側は’H’の文字を受けると1秒間13ピンをHIGHにする。

[arduino]
const int LED=13;
void setup() {
pinMode(LED,OUTPUT);
Serial.begin(9600);
}

void loop() {
//シリアル通信のバッファに何か入ったら読み込む
if(Serial.available()>0){ //2文字以上の場合は>2とかでforで格納
char c = Serial.read();
if(c == ‘H’){
digitalWrite(LED,HIGH);
delay(1000);
digitalWrite(LED,LOW);
}else if(c == ‘L’){
digitalWrite(LED,LOW);
delay(1000);
}
}
}

[C#]
using System.IO.Ports

SerialPort mySerialPort = new SerialPort(“COM1”);
mySerialPort.BaudRate = 9600;
mySerialPort.Open();
mySerialPort.Write(“H”);
mySerialPort.Close();