USBセンサを使ってみよう 〜Phidgets活用講座 概要編 (2)〜
作成日: 2006/7/6  最終更新日: 2008/10/19



概要

このページの内容は,Software Design 2005年12月号 pp.114-121に掲載された, 「USBセンサを使ってみよう Phidgets活用講座(1)」をHTML化したものです.分量が多いため,三つのページに分割してあります.
本文中の「現在」などは「2005年10月」を指します.

ここでは,さまざまなPhidgetsのセンサー/アクチュエーター群を手軽にネットワーク経由で操作できる,「PhidgetServer」というソフトウェアについて紹介します.USBセンサを使ってみよう(PhidgetServer編)も参考にしてください.

※新しいPhidgetデバイスやドライバに対応したPhidgetServer2.0を公開しました.(2008/10/19)

連載目次




PhidgetServerの基本
1.PhidgetServerの概要

PhidgetServerは,Phidgetデバイスを手軽に制御できるGUIと,TCPサーバーを一体化したソフトウェアです(図 7).PhidgetServerを用いれば,GUIからPhidgetデバイスの動作テストを行ったり,TCPソケットを利用できる全ての言語から容易 にPhidgetsを制御することが可能です.たとえば,ローカルホストでPhidgetServerを起動して,Flashなどからソケット経由で Phidgetsを制御することができます. さらに,複数のPCに接続されたPhidgetsを連携して扱うことも可能になります.たとえば,遠隔地のPCに接続されたセンサーデータを定期的に取得 し,解析&描画するようなアプリケーションも容易に記述できるでしょう.

PhidgerServerは,.Net Framework1.1 + C# + COM版のPhidgetライブラリを用いて実装されています.Phidgetsには.Netに対応したライブラリも用意されているのですが,本稿執筆時点では動作が不安定なため,COM版のライブラリを利用しています.

ここではまず,PhidgetServerを利用するための準備について説明し,次に具体的な利用手順を紹介します.

図7 PhidgetServerのスクリーンショット
目次へ



2. PhidgetServerを使う準備
PhidgetServerを起動するために必要なハードウェア/ソフトウェアは以下のようなものです.
  • Phidgets
    • 前述したいずれかのPhidgetデバイスを入手してください.
    • Phidgetドライバを,Phidgetsの公式サイトから入手し,インストールします.
    • インストールは,Phidgetデバイスを接続する前に完了させる必要があります.
  • Windows PC
    • Windows XPで動作を確認しています.
  • Microsoft .NET Framework 1.1
    • PhidgetServerは .NET + C#で書かれているため,事前に Microsoft .NET Framework の 再頒布パッケージ をインストールしておく必要があります.インストーラーはMicroSoftのWebページから入手できます.
  • PhidgetServer
    • PhidgetServerの実行ファイル及びソースコードは,筆者のWebページからダウンロードできます.また,Phidgetドライバや.Net Frameworkの再頒布パッケージはここからもダウンロード可能です.
    • .NET Framework, Phidgetドライバのインストール完了後,実行ファイル(PhidgetServer.exe)をダブルクリックすることで起動します.
目次へ



3. 基本的な使い方
次に,PhidgetServerの基本的な使い方について説明します.PhidgetServerのGUIを直接利用し,Phidgetsの動作確認などを行います.
1. デバイスの接続と切断(Attach/Detach)
PhidgetServerを起動後,PCにPhidgetデバイスを接続すると,自動的に種別を認識し,確認メッセージ(Attach)を表示します.アプリケーション側で特別な操作は必要ありません. 同様に,PCからデバイスを取り外すと,確認メッセージ(Detach)を表示します.なお,デバイスは基本的にいつでも接続/切断(=抜き差し)できます.
[image]
2. デバイスからの入力と閾値設定
入力系デバイス(Accelerometer, InterfaceKit, RFID, WeightSensor)のセンサーデータに閾値以上の変化があった場合,新しいデータを取得し,GUI表示を更新します.閾値は各センサー毎に指定で き,フォーム上の変更がリアルタイムに反映されます. なお,RFIDの場合は,閾値(秒)で指定された時間後に再度読み取りを行い,タグが除去されたかどうか確認しています.これは,PhidgetRFID にはタグが除去されたイベントを取得する機能が備わっていないためです.

[image]  [image]

[image][image]
3. デバイスへの出力
フォーム上のチェックボックスやスライダーを操作することで,出力系デバイス(InterfaceKit, ServoMotor)を制御することができます.InterfaceKitの場合,0〜7のチェックボックスをOn/Offすることで,対応するポート をOn/Offすることができます.ServoMotorの場合,CH0〜3のスライダーを動かすことで,各サーボモーターの回転角度を180段階で制御 することができます.

[image]
[image]

目次へ



4. ネットワーク経由の使い方
それでは,PhidgetServerのメインとなるネットワーク経由の使い方について説明します.TCPソケットを介して,さまざまな言語からPhidgetデバイスを制御することができます.
0. サーバーの開始/停止

サーバーを起動するためには,フォーム左上の「サーバー」において,任意のポートを指定し,「開始」ボタンを押します.

  • 標準ではIPは自動的に取得されます.「ローカルホストで利用する」をチェックしておくと,ローカルホスト(127.0.0.1)でPhidgetServerを起動します.
  • 各コマンドの区切り子(終端文字)は「デリミタ」のプルダウンメニューから選択できます.三種類の改行コード("\r\n", "\r", "\n")と,NULL文字("\0")のいずれかを選択します.なお,Flashと連携させる場合には,必ずNULL文字を指定する必要があります. (FlashのXMLSocketクラスの仕様.)

次に,開始に成功すると,確認メッセージが表示され,停止ボタンがアクティブになります.この状態で,クライアントの接続を待機します. 最後に,サーバーを停止する場合は,「停止」ボタンを押します.全てのクライアントとの接続を切断し,サーバーを終了します.

[image]
1. PhidgetServerへの接続

ここでは,ネットワークを介したPhidgetServerの使い方を簡潔に説明します.まず,PhidgetServerの動作してい るIP/Portを確認します.たとえば,IP:127.0.0.1,ポート:4321で動作しているPhidgetServerにtelnetを用いて 接続する場合,以下のようにコマンドプロンプトから入力します.

  • % telnet 127.0.0.1 4321
2. デバイスの接続/切断
Phidgetデバイスが新たに接続/切断されると,以下のようなメッセージがPhidgetServer→クライアントへ送信されます.
  • Attach,InterfaceKit 【InterfaceKitが接続】
  • Detach,InterfaceKit 【InterfaceKitが切断】

詳細については,後述する「通信仕様」を参照してください(以下のコマンドも同様).

3. デバイスからの入力

入力系デバイス(Accelerometer, InterfaceKit, RFID, WeightSensor)のセンサーデータに閾値以上の変化があった場合,以下のようなメッセージがPhidgetServer→クライアントへ送信されます.

  • In,InterfaceKit,Analog,0,210 【InterfaceKitのアナログ入力(ポート0)の入力が210に変化】
  • In,Weight,10.5 【WeightSensorの入力が10.5に変化】
4. デバイスへの出力と閾値の設定

出力系デバイス(InterfaceKit,ServoMotor)の制御,および入力系デバイスに対する閾値の設定は,以下のようなメッセージをクライアント→PhidgetServerに送信することで行います.

  • Out,InterfaceKit,0,1 【InterfaceKitのデジタル出力(ポート0)をHighにする】 
  • Out,Servo,0,180 【ServoMotorのチャンネル0を180の位置に移動】
  • Threshold,InterfaceKit,0,50 【InterfaceKitのアナログ入力(ポート0)の閾値を50に設定】
  • Threshold,Weight,0.5 【WeightSensorの閾値を0.5に設定】
目次へ



コラム: USBケーブルとハブ

Phidgetsなどの複数のUSBデバイスを同時に扱う場合,複数のUSBケーブルとハブを持ち歩くことが多くなります.こうした場合,USBケーブル/ハブ自体がかさばると非常に不便です.

そこで,筆者は巻き取りタイプのUSBケーブル(ELECOM製 USB-RL08)+スティックタイプのハブ(SIGMA製 HBH4)を愛用しています(図8).特に,USB-RL08は通常のUSBケーブルよりはるかにコンパクトなので重宝します.価格も一つ1000円程度ですので,Phidgetsのお供に(?)購入を検討してみてはいかがでしょうか.

(ただし,USB2.0には対応していません.高速通信が必要な用途には USB-RL15などを検討するとよいでしょう.)

図8 おすすめUSBケーブル&ハブ
目次へ


[次へ->PhidgetServerの詳細と応用]


[1] [2] [3]

[デバイスぶらり旅]