...

Arduino と XBee,SQL Server による 自動無線計測システムの実験

by user

on
Category: Documents
15

views

Report

Comments

Transcript

Arduino と XBee,SQL Server による 自動無線計測システムの実験
10
Arduino と XBee,SQL Server による
自動無線計測システムの実験
兵庫県立西宮香風高等学校主幹教諭
松本 吉生
1. Arduino とシールド
ZigBee 規格のものなどがあり,物理的にはアンテ
Arduino
( ア ル ド ゥ イ ー ノ )は Atmel 社 が 製 造 す
ナ形状の異なるものや,電波出力の大きさの異なる
る RISC ベースの 8 ビットマイクロコントローラ
ものなどいくつかの種類がある。
Atmel AVR を使ったマイコンボードの一種で,ディ
ZigBee は Bluetooth と同種の技術で家電向けに
ジタルとアナログの I/O ピンを利用したセンサ実
策定された無線通信規格で,Bluetooth よりも低速
験を手軽に行うことができる。この Arduino の I/O
だが省電力で低コストの通信が可能であり,物理層
ピン配置に適合した
「シールド」と呼ばれる様々な拡
のインタフェースには IEEE 802.15.4 が使われる。
張ボードが販売されており,これを搭載することで
前述のように XBee は ZigBee 規格のものだけで
Arduino の機能を拡張することができる。一般的に
はないが,Arduino などマイコンボードの無線化
基板状の電子部品に付け足す形状の小型の基盤部品
によく用いられるのは ZigBee 対応の XBee か,ま
を
「ドーターボード」と呼ぶが,Arduino と「シール
たは ZigBee 準拠ではないが IEEE 802.15.4 で通信
ド」
もこれと類似の関係になる。
を行う Series 1 である。この実験では Series 1 の
「シールド」には回路を自作するための「バニラ
XBee を使っている。
シールド」やプロトタイプ作成用の「プロトシール
XBee を利用するには,通信上の設定をするため
ド」
といった部品素材に近いものから,DC モーター
にアダプターを介して USB でコンピュータに接続
を制御できる
「モータードライブシールド」,SD カー
する必要がある。この実験では,スイッチサイエン
ドやマイクロ SD カードスロットを持つ「SD カード
ス社の XBee USB アダプターを使用した。
シールド」
,RJ45 ジャックを有してイーサネットに
接続できる
「イーサネットシールド」など完成された
3. X-CTU による XBee の設定
機能を持つものがある。
XBee の セ ッ ト ア ッ プ に は,XBee を USB ア ダ
プターでコンピュータに接続し,ディジインター
2. XBee
ナショナル社が提供する X-CTU というアプリケー
XBee はディジインターナショナル社が開発,販
ションを利用する。X-CTU はディジインターナショ
売する無線通信モジュールで,組み込み機器の開
ナル社の Web ページからダウンロードできる。
発 な ど に 用 い ら れ る。 対 応 す る 無 線 規 格 と し て
通 信 を す る た め に 2 台 の XBee を 用 意 す る。
は,Wi-Fi や独自プロトコルの DigiMesh,そして
XBee を互いに通信させるには,出荷時に決められ
Fig.1 XBee Series 1 モジュール
Fig.2 Xbee を Xbee USB アダプターに取り付けた
11
ら抜き差しする際には,ピンが折れないように注意
して取り扱う。
4. Arduino XBee シールド
XBee を Arduino で使うにはシールドが必要とな
る。XBee を使うためのシールドも様々なものがあ
り,XBee シールドやワイヤレスシールドなどと呼
Fig.3 XBee の裏面に印刷された個別 ID
ばれる。この実験では,スイッチサイエンス社のワ
イヤレスプロトシールドを使用する。
た個別 ID を互いに登録し,ユーザーが自由に決め
る共通の PAN ID を設定しなければならない。
XBee の個別 ID は X-CTU で接続するとわかるが,
本体裏側にも印刷されている。XBee をアダプター
に接続すると裏側は見えなくなるので,設定の前に
手元に控えておくとよい。
XBee を USB ア ダ プ タ ー に 挿 し て USB ケ ー ブ
ル で コ ン ピ ュ ー タ に 接 続 し,X-CTU を 起 動 す る
と XBee の設定ができる。X-CTU の PC Settings メ
ニューで接続されている XBee が確認でき,通信
Fig.5 ワイヤレスプロトシールドと XBee
に使われるシリアルポートの番号がわかる。Test /
5. 通信テスト
Query ボタンで XBee との通信テストができ,個別
通信テストのために簡単なスケッチを作り
ID を取得することができる。
Arduino に書き込む。このテスト用スケッチは,1
次 に Modem Configuration メ ニ ュ ー で XBee の
秒ごとに数字をカウントアップし,シリアル通信で
設定値を読み出し,Networking & Security の項目
数字を送信する。
であらかじめ決めた共通の PAN ID と,相手 XBee
の 個 別 ID を 登 録 す る。 自 分 の 個 別 ID は Serial
Number High と Serial Number Low で 上 位 と 下 位
に分かれて表示されている。相手 XBee の個別 ID
は Destination Address High と Destination Address
Low に登録する。なお設定中に XBee をコネクタか
Fig.4 X-CTU で XBee の設定をする
int i = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.print(i);
Serial.print("¥n");
delay(1000);
i = i + 1;
}
Fig.6 XBee 通信テスト用のスケッチ
12
Arduino にテスト用スケッチを書き込んだらコ
ンピュータから取り外し,設定できた 2 台の XBee
のうち一方をワイヤレスプロトシールドに載せて
Arduino に取り付ける。もう一方の XBee は XBee
USB アダプターに取り付けてコンピュータに接続
する。コンピュータで X-CTU を起動して XBee と
の接続を確認し,Terminal メニューを開いておく。
Arduino を 5V の USB 電源に接続するとスケッチ
が起動し,XBee から無線通信で数字のデータを送
り出す。送られたデータはもう一方の XBee が受け
取り,USB アダプターからコンピュータに送信さ
れ,X-CTU で受け取ることが確認できる。
Fig.9 LM35 の出力を A0 で受け取るスケッチ
スケッチを書き換えたら再び XBee シールドを取
り付け,温度センサ LM35 を接続し,Arduino を外
部電源に接続して動かす。コンピュータで X-CTU
を起動し,XBee で受け取るシリアルデータをモニ
タする。LM35 を指でつまんで温めるなどすると,
アナログ出力データが変化することがわかる。
Fig.7 通信テスト中の Arduino と XBee
Fig.10 X-CTU で受け取った温度データ
Fig.8 X-CTU で数字データを受け取る
6. 温度センサの値を送信するスケッチ
7. シリアルデータを SQL Server に記録する
次 に 受 け 取 っ た シ リ ア ル デ ー タ を SQL Server
通信テストが成功したら,Arduino から XBee を
に記録するアプリケーションを作成する。Visual
シールドごと取り外し,コンピュータに接続して
Studio で C# による Windows アプリケーションを
Arduino のスケッチを温度センサの値を読み取りシ
作り,シリアルポートからデータを受け取るイベン
リアル通信で送信するものに書き換える。
トでデータを SQL Server に送るコードを書く。
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.print(analogRead(A0),DEC);
Serial.print("¥n");
delay(1000);
}
using System.IO.Ports; // 名前空間の追加
namespace GetArduinoData_NA_toFIX4
{
public partial class Form1 : Form
{
SerialPort mySerialPort
= new SerialPort("COM4");
System.Data.SqlClient.SqlCommand sCom;
13
public Form1()
{
InitializeComponent();
mySerialPort.BaudRate = 9600;
mySerialPort.Open();
System.Data.SqlClient.SqlConnection scn
= new System.Data.SqlClient.SqlConnection
("Data Source=OWNER-PC¥¥SQLEXPRESS;
Initial Catalog=test;Integrated Security=True");
scn.Open();
Fig.12 テストビルド画面
sCom = new System.Data.SqlClient.
SqlCommand("INSERT INTO
LM35DATA(data) VALUES(@data)", scn);
mySerialPort.DataReceived
+= mySerialPort_DataReceived;
}
void mySerialPort_DataReceived
(object sender, SerialDataReceivedEventArgs e)
{
sCom.Parameters.Clear();
sCom.Parameters.Add("@data", SqlDbType.
Int).Value = Convert.ToInt32(mySerialPort.
ReadLine());
sCom.ExecuteNonQuery();
}
}
}
Fig.13 SQL Server に記録されたデータ
C# に よ る Windows ア プ リ ケ ー シ ョ ン を 起 動
から出力 10 mW で最大 750 m の屋外見通しレンジ
す る と,Windows フ ォ ー ム 自 体 は 空 白 の フ ォ ー
のものなどがある。Arduino で使えるセンサも温度
ム が 表 示 さ れ る だ け だ が, 受 け 取 っ た デ ー タ を
センサ以外に光センサ,気圧センサ,距離センサ,
SQL Server に記録している。データは SQL Server
加速度センサなど様々なものがある。XBee で無線
Management Studio で確認できる。
通信を行うことにより,離れたところの計測が可能
8. まとめ
になり,SQL Server に記録すれば計測データの管
理や分析もしやすくなる。
ディジインターナショナル社の ZigBee あるいは
IEEE 802.15.4 インタフェースの XBee は,無線出
力が 1 mW で最大 90 m の屋外見通しレンジのもの
参考 URL
1)
「スイッチサイエンス社 - XBee をはじめてみよう」
http://mag.switch-science.com/2012/07/20/startup_xbee_s1/
(アクセス日:2014 年 2 月 25 日)
2)
「ディジインターナショナル株式会社」
http://www.digi-intl.co.jp/index.html
(アクセス日:2014 年 2 月 25 日)
3)
「IT 用語辞典 e-Words - ZigBee」
http://e-words.jp/w/ZigBee.html
(アクセス日:2014 年 2 月 25 日)
4)
「IT 用語辞典 バイナリ - ZigBee」
http://www.sophia-it.com/content/ZigBee
Fig.11 Visual Studio による C# プログラミング
(アクセス日:2014 年 2 月 25 日)
Fly UP