Technical Workshop 20080501
-
Upload
shigeru-kobayashi -
Category
Documents
-
view
1.258 -
download
0
Transcript of Technical Workshop 20080501
![Page 1: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/1.jpg)
テクニカル・ワークショップ:無線通信デバイス
担当:小林茂(IAMAS:岐阜県立国際情報科学芸術アカデミー)
2008.05.01
![Page 2: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/2.jpg)
参考書籍
Making Things TalkTom Igoe(2007年・O’Reilly Media)
![Page 3: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/3.jpg)
さまざまな無線通信の方式とその特徴
2.4GHz帯を利用する代表的な無線通信方式
• Wi-Fi(IEEE 802.11b/g/n)• Bluetooth• IEEE 802.15.4/ZigBee
![Page 4: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/4.jpg)
さまざまな無線通信の方式とその特徴
Wi-Fi Bluetooth ZigBee
IEEE規格 802.11b 802.15.1 802.15.4通信距離 約100m 約10m 約30m
最大通信速度 11Mbps 1Mbps 250kbps接続ノード数 32 7 65535電池寿命 数時間 数日 数年
ネットワーク構成 スター型 スター型 スター型・メッシュ型など主な用途 無線LAN 携帯電話 セキュリティ機器
表1 代表的な2.4GHz帯無線通信方式の比較(Bluetoothはクラスやバージョンにより異なる)
![Page 5: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/5.jpg)
IEEE 802.15.4とZigBee
レイヤ名 定義する規格
アプリケーション層 ZigBeeアプリケーション・サポート・サブ層 ZigBeeネットワーク層 ZigBee
MAC層 IEEE 802.15.4物理層 IEEE 802.15.4
表2 ZigBee規格の階層構造
![Page 6: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/6.jpg)
Point to Point
Point to Multi
Star
802.15.4 Coordinator802.15.4 End Device
IEEE 802.15.4で可能な構成
![Page 7: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/7.jpg)
IEEE 802.15.4デバイスの種類
• コーディネータ(1個)• エンド・デバイス(複数)
![Page 8: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/8.jpg)
MeshCoordinator
End DeviceRouter
ZigBeeで可能となるクラスタツリー/メッシュ構成
![Page 9: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/9.jpg)
ZigBeeデバイスの種類
• コーディネータ(1個)• ルータ(複数)• エンド・デバイス(複数)
![Page 10: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/10.jpg)
XBeeの特長
• IEEE 802.15.4モデルとZigBeeモデルの両方がある*1
– XBee 802.15.4– XBee ZNet 2.5
• 比較的低価格(国内モデルで4000円弱)• 日本国内でも利用できるよう認証取得済み• 利用方法を解説した書籍がある
*1 モデル間での相互接続性はない
![Page 11: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/11.jpg)
参考資料(日本語)
• アルファ電子株式会社http://www.alpha-denshi.co.jp/seihin/toriatukai/Digi/TechDB/
– 基本的なドキュメントの日本語版– 内容的には最新でない部分もある
![Page 12: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/12.jpg)
XBeeで実験するための準備
• ブレークアウトボードの準備– コネクタをはんだ付け– ピンをハンダ付け
• ドングル用のドライバをインストール• X-CTUをセットアップ• ファームウェアを最新版*2にアップデート
*2 現時点では1.0.A.5
![Page 13: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/13.jpg)
ドライバのインストール(Windows XP/Vista)
• ドライバをダウンロードhttp://www.ftdichip.com/Drivers/VCP.htm
• デバイスをPCに接続• 指示に従ってインストール
![Page 14: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/14.jpg)
ドライバのインストール(Windows XP/Vista)
• ソフトウェア検索のため、Windows Updateに接続しますか?→いいえ、今回は接続しません。
• インストール方法を選んでください→一覧または特定の場所からインストールする(詳細)• 次の場所で最適のドライバを検索する→「次の場所を含める」をチェックし→ドライバを展開したフォルダを指定
![Page 15: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/15.jpg)
ドライバのインストール(Windows XP/Vista)
![Page 16: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/16.jpg)
ドライバのインストール(Windows XP/Vista)
![Page 17: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/17.jpg)
ドライバのインストール(Windows XP/Vista)
![Page 18: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/18.jpg)
ドライバのインストール(Mac OS X)
• ドライバをダウンロードhttp://www.ftdichip.com/Drivers/VCP.htm
• 指示に従ってインストール• デバイスをPCに接続
![Page 19: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/19.jpg)
XBeeの設定方法の説明と簡単な通信
• Windows XP/Vistaの場合– 専用ユーティリティーX-CTUを使う方法– Acknowrichを使う方法
• Mac OS Xの場合– screenコマンドを使う方法
• 共通– Processing用のスケッチを使う方法
![Page 20: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/20.jpg)
専用ユーティリティーX-CTUを使う方法
1. X-CTUをダウンロードするhttp://www.digi.com/support/productdetl.jsp?pid=3352&osvid=57&tp=4&s=316
2. ダウンロードしたファイルを実行してインストールする
3. X-CTUを起動して該当するポートを選択する4. Serialタブを開いて通信する
![Page 21: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/21.jpg)
Processing用のスケッチを使う方法
1. Making Things Talkのサポートページからコードをコピーする
http://www.makingthingstalk.com/chapter6/31/2. Processingを起動してスケッチにコードを貼付ける
3. スケッチを実行する4. Display Windowをクリックしてアクティブにする5. キーボードからATコマンドをタイプする
![Page 22: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/22.jpg)
Processing用のスケッチを使う方法
![Page 23: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/23.jpg)
Processing用のスケッチを使う方法
1. +++をタイプする(returnなし)2. 1秒程度待つ3. received:の下にOKが表示される
4. ATID 1111のように入力して最後に return5. 電源をオフにした後も設定を保持するには最後にATWRコマンドを実行する
6. キー入力終了後に一定時間が経過すると自動的にコマンドモードに戻る
![Page 24: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/24.jpg)
実習:XBeeを使ってお互いに通信してみる1
1:1で通信してみる
• 二人一組で実習• 一方がタイプした内容が他方で表示されることを確認
![Page 25: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/25.jpg)
実習:XBeeを使ってお互いに通信してみる1
A B 備考
ATID 1111 1111 チームごとに別の IDを設定ATMY 0001 0002
ATDH 0000 0000
ATDL 0002 0001 相手側の ID
表3 1:1の通信のための設定
![Page 26: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/26.jpg)
実習:XBeeを使ってお互いに通信してみる2
1:Nの通信(ブロードキャスト)
• 五人一組で実習• Aがタイプした内容がB~Eで表示されることを確認
• Aはコーディネータでそれ以外はエンドデバイス
![Page 27: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/27.jpg)
実習:XBeeを使ってお互いに通信してみる2
A B C D E 備考
ATID 1111 1111 1111 1111 1111 チームごとに別の IDを設定ATMY 0001 0002 0003 0004 0005
ATDH 0000 0000 0000 0000 0000
ATDL FFFF 0001 0001 0001 0001 Aはブロードキャストに設定
表4 1:Nのブロードキャスト通信のための設定
![Page 28: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/28.jpg)
実習:XBeeの通信モード
• コマンドモード– 単なる無線モデムとして気軽に使える– 通信相手は基本的に固定
• APIモード– 通信時のパケット構造を知る必要がある– 通信相手を随時変更できる
![Page 29: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/29.jpg)
実習:XBee用のライブラリ
• XBee API Library for Processinghttp://www.faludi.com/code/xbee-api-library-for-processing/
• Funnelhttp://funnel.cc/
![Page 30: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/30.jpg)
実習:XBee用のライブラリ
XBee API Library Funnel
802.15.4 ○ ○ZigBee ○ ー受信 ○ ○送信 ー ○
Processing ○ ○ActionScript 3 ー ○
Ruby ー ○
表5 XBee API Library for Processing 1.2とFunnel 007の比較
![Page 31: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/31.jpg)
XBee API Libraryを使ってみる
• ライブラリのインストール*3
• エンドデバイス側の回路を組む• エンドデバイス側を設定• コーディネータ側を設定• エンドデバイスからの情報をグラフ表示
*3 一般に配布されているXBee API LibraryはJava 1.5用にビルドされているため、ProcessingのJava実行環境のバージョンに注意。将来のバージョンでは解決される可能性あり。
![Page 32: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/32.jpg)
エンドデバイス側の回路を組む
!"#!$#%&'%!(%)''#*+,-+#./0/12.3#4/526,70+#,89:,#020/-38:#;1,,<,7=<=,>35,?+5@'AB@,,0('%#%C
![Page 33: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/33.jpg)
XBee API Libraryを使ってみる
エンドデバイス側の回路を組む際の注意点
• 電源電圧は必ず2.8~3.4Vの範囲で使用↑5Vを加えるとモジュールが破壊!
• Vref(14番ピン)はVCC(1番ピン)に接続↑A/D変換のための基準電圧
![Page 34: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/34.jpg)
XBee API Libraryを使ってみる
コーディネータ エンド・デバイス 備考
ATID 1111 1111 チームごとに別の IDを設定ATMY 0001 0002
ATDH 0000 0000
ATDL 0002 0001 相手側の IDATD0 - 2 AD0/DIO0をアナログ入力にATIR - 64 サンプリング間隔(0x64 = 100ms)ATIT - 5 ここで指定したサンプル数ごとに送信ATAP 1 - APIモードの設定
表6 XBee API Libraryのための設定
![Page 35: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/35.jpg)
XBee API Libraryを使ってみる
リスト 1 XBeeReaderオブジェクトのコンストラクタで設定
import xbee.*;
import processing.serial.*;
Serial port;
XBeeReader xbee;
void setup() {
size(200, 200);
port = new Serial(this, Serial.list()[0], 9600);
xbee = new XBeeReader(this,port);
println("Setting up Xbee");
// 最初のコマンドのみATをつけて後は省略String response = xbee.startXBee("ATRE,ID1111,MY2,DH0,DL1");
println("Setup response: " + response);
}
![Page 36: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/36.jpg)
XBee API Libraryを使ってみる
リスト 2 受信したデータからAD0/DIO0の値を取得する
public void xBeeEvent(XBeeReader xbee) {
XBeeDataFrame data = xbee.getXBeeReading();
if (data.getApiID() == XBeeDataFrame.SERIES1_IOPACKET) {
int totalSamples = data.getTotalSamples();
for (int n = 0; n < totalSamples; n++) {
int[] analog = data.getAnalog(n);
print("analog: ");
for (int i = 0; i < analog.length; i++) {
print(analog[i] + " ");
}
println();
...
}
}
}
![Page 37: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/37.jpg)
XBee用Funnelライブラリを使ってみる
• ライブラリのインストール• Funnel Serverの設定• コーディネータの設定• エンドデバイスからの情報をグラフ表示
![Page 38: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/38.jpg)
Funnel Severの設定
リスト 3 XBee用のserver/settings.yamlの設定例
server:
command port: 9000
notification port: 9001
io:
type: XBee
com:
baudrate: 9600
![Page 39: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/39.jpg)
コーディネータの設定
コマンド 値 備考
ATID 1111 個人ごとに別の IDを設定ATMY 0001
ATDH 0000
ATDL 0002 相手側の IDATAP 2 APIモード
表7 Funnelライブラリから使用するための設定
![Page 40: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/40.jpg)
Funnel Severの起動
リスト 4 Funnel Server起動時に表示されるメッセージの例
Funnel 007 (2008-04-21)
シリアルポートが指定されていないため自動的に取得されたポートを使用しますI/Oモジュールと接続中です…I/Oモジュールと接続が完了しました:/dev/cu.usbserial-A1001hqjコマンドポート:サーバの起動中…通知ポート:サーバの起動中…コマンドポート:サーバが起動しました:9000
通知ポート:サーバが起動しました:9001
FIRMWARE VERSION: 10a5
SOURCE ADDRESS: 01
PAN ID: 5555
NODE: MY=2, SH=13a200, SL=4044245d, dB=54, NI=’ ’
![Page 41: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/41.jpg)
チェックポイント
• FIRMWARE VERSIONなどの情報が表示されているか?→されていなければATAPの結果を確認
• エンド・デバイスが表示されているか?→リトライしても表示されなければATIDの結果を確認
![Page 42: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/42.jpg)
Funnelライブラリでの使用方法
リスト 5 FunnelライブラリでXBeeを使用する例
import processing.funnel.*;
XBee xbee;
void setup()
{
...
int[] moduleIDs = { 2 }; // 使用するXBeeのID一覧を納めた配列xbee = new XBee(this, moduleIDs);
}
void draw()
{
background(0);
text("analogInput[0]: " + xbee.iomodule(2).port(0).value, 10, 80);
}
![Page 43: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/43.jpg)
Funnel 007でのXBee関連のサンプル
libraries/processing/workshop/XBee
• SimpleScope3ch XBee– 3ch分の入力をグラフで表示– チャンネル数などは簡単に変更可能– スコープ表示はScopeクラスで担当
• RGBCube XBee– サンプルのRGBCubeに変更を加えたもの– マウスの代わりに加速度センサで制御
![Page 44: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/44.jpg)
レスポンスを改善するには?
• サンプリング間隔を短くする例:100ms→10ms
• 送信までにサンプリングする回数を少なくする→例:5回→1回
• コーディネータ⇔PC間の通信速度を上げる*4
例:9600bps→57600bps
*4 最終的にはコーディネータがボトルネックとなるために限界はある。
![Page 45: Technical Workshop 20080501](https://reader034.fdocuments.in/reader034/viewer/2022042715/55978d501a28ab5a1e8b46ad/html5/thumbnails/45.jpg)
まとめ
• 有線では1:1の通信が基本だが無線では1:NやN:Mが比較的簡単に実現できる
• XBeeのような扱いやすい無線モジュールを使えば難易度はそれほど高くない
• ただし有線の場合と比較すると不安定なのでプログラム側で配慮する必要がある