USBセンサを使ってみよう (PhidgetServer編)

作成日: 2005/11/18  最終更新日: 2008/10/19



◆はじめに

ここでは,Software Design 2005年12月号記事「USBセンサを使ってみよう〜Phidgets活用講座(1)〜」にて紹介したソフトウェア,PhidgetServerをダウンロードすることができます.
※新しいPhidgetデバイスやドライバに対応したPhidgetServer2.0を公開しましたので,通常はそちらを利用してください.(2008/10/19)

Phidgetsは,一般的なWindows PC(Mac/Linux)などから手軽に扱うことができる,USB接続のセンサ/アクチュエータ群です(図1, 2).センサの種類もなかなか豊富で扱いやすいため,ちょっとした実世界指向システムを開発するのに適しています.

PhidgetServerは,Phidgetsデバイスを手軽に制御できるGUIと,TCPサーバーを一体化したソフトウェアです(図3).たとえば,TCPソケットを利用できる全ての言語(たとえばRubyなどのスクリプト系言語やFlashなど)から,容易にPhidgetsを制御することが可能です.また,遠隔地のPCに接続されたセンサーデータを定期的に取得したりすることもできるでしょう.図4に,telnetでPhidgetServerに接続した際の様子を示します.

PhidgetServerを使った応用例については,USBセンサを使ってみよう (PhidgetApplication編) を参考にしてください.

図1 Phidgets InterfaceKitの外観

図2 InterfaceKit付属のセンサーたち
(左上から,タッチ/圧力/光/温度センサ
右上から,スライダー,ボリューム,ジョイスティック)

図3 PhidgetServerのスクリーンショット

図4 PhidgetServerへのtelnet接続

◆更新情報
2008/10/19:
さまざまな入出力デバイスを同一の作法で手軽に扱うことができるミドルウェア群「MobiServer」の一部として,新しいデバイスやドライバに対応したPhidgetServer2.0を公開しました.
2006/7/10:
記事本体「USBセンサを使ってみよう〜Phidgets活用講座(1)〜」を,HTML化して公開しました.
2006/2/18:
Flashとの接続時(改行コードを\0としたとき),Flash→PhidgetServerのコマンド受信に失敗する問題を解決しました.




◆ダウンロード

※新しいPhidgetデバイスやドライバに対応したPhidgetServer2.0を公開しましたので,通常はそちらを利用してください.

  • PhidgetServer.zip
    実行ファイルです.事前に.Net Framework1.1,およびPhidget用ドライバをインストールしておく必要があります.詳しくは下記のインストールを参照してください.
  • PhidgetServerSource.zip
    ソースコードです.Visual Studio .NET 2003 を用いて,C#で書かれています.
  • ※ソフトウェア/ソースコードともに,個人・研究用途に自由に使っていただいて結構です.完全に無保証です.感想・要望などは下記メールアドレスまでご連絡ください.

  • PHIDGET.msi
    -Phidgetドライバなどを含むインストーラーです. 上記サイトに接続できない場合は,こちらからもダウンロード可能です.

◆インストール

PhidgetServerを実行する前に,Microsoft .NET Framework再頒布パッケージ (23.7 MB) をインストールしておく必要があります.加えて,Phidgetsデバイスを接続する前に上述のPHIDGET.msiをダウンロードし,ドライバをインストールしておく必要があります.

これらのインストールが完了後,PhidgetServer.zipを解凍し,PhidgetServer.exeをダブルクリックすればプログラムが起動します.




◆通信仕様(抜粋)

ここでは,PhidgetServerの通信仕様を抜粋して説明します.詳細については,該当記事を参照してください.

まず,基本仕様は以下のようになります.

  • 送受信文字列は全てASCIIテキスト形式.
  • コマンドは「デリミタ」で指定した区切り子("\r\n","\r","\n","\0")のいずれかで区切られる.
  • コマンド内の各要素はカンマ(",")で区切られる.

基本的なコマンド構成

PhidgetServerの各コマンドの,基本的な構成は,以下のようになります.

<CommandType>,<PhidgetType>[,<CommandSubType>][,<Port>],<Data>

  • [ ]内はデバイスの種別により省略される.
  • <CommandType>は以下の5種類
    • Attach, Detach, In, Out, Threshold
  • <PhidgetType>は以下の5種類
    • Accel, InterfaceKit, RFID, Servo, Weight
  • <CommandSubType>は以下の2種類(InterfaceKitのみ)
    • Analog, Digital
PhidgetServer→クライアントへ送信するコマンド(抜粋)
  • Attach,<PhidgetType>
    • デバイスが接続された.
    • e.g.) Attach,InterfaceKit
  • Detach,<PhidgetType>
    • デバイスが切断された.
    • e.g.) Detach,InterfaceKit
  • In,InterfaceKit,Analog,<Port>,<Data>
    • InterfaceKitのアナログ入力<Port>が<Data>へと変化した.
    • e.g.) In,InterfaceKit,Analog,0,210
    • ※<Port>は0--7の整数.
        <Data>は0--1024の整数.
クライアント→PhidgetServerへ送信するコマンド(抜粋)
  • Out,InterfaceKit,<Port>,<Data>
    • InterfaceKitのデジタル出力<Port>を<Data>に変更する.
    • e.g.)Out,InterfaceKit,0,1
    • ※<Port>は0--7の整数.
        <Data>は0 or 1の整数.
  • Out,Servo,<Port>,<Data>
    • ServoMotorのチャンネル<Port>の出力を<Data>に変更する.
    • e.g.)Out,Servo,0,180
    • ※<Port>は0--3の整数.
        <Data>は0--180の整数.
  • Threshold,InterfaceKit,<Port>,<Data>
    • InterfaceKitのアナログ入力<Port>の閾値を<Data>に変更する.
    • e.g.)Threshold,InterfaceKit,0,50
    • ※<Port>は0--7の整数.
        <Data>は0--1024の整数.
※クライアント→PhidgetServerにコマンドを送信する際の注意事項
  • コマンドにミスがあった場合は無視される.(PhidgetServerはエラーを返さない.)
  • <CommandType>,<PhidgetType>,<SubType>は厳密に指定する必要がある.
    • 大文字/小文字は区別される.
    • スペースを入れない.
  • <Port>, <Data>は各コマンド毎に適切な範囲を指定する.



◆おわりに

ここでは,Software Design 2005年12月号の記事で紹介した,PhidgetServerというソフトウェアについて簡単にまとめました.PhidgetServerを利用すれば,さまざまな言語/ネットワーク環境から,容易にPhidgetsを制御することが可能になります.

次回以降の記事では,PhidgetServerを利用したさまざまなシステムを紹介していきます.みなさんも是非,Phidgets & PhidgetServerを用いて,さまざまな実世界システムを製作してみてください.




◆参考URL
  • Phidget Inc. HomePage
    - 本家Phidgetsのサイトです.Phidgetsに関する技術資料の提供や,通信販売などを行っています.
  • ぷらっとホーム
    - Phidgetの日本国内のディストリビューターです.秋葉原の店舗や,通信販売でPhidgetを購入できます. たとえば,InterfaceKit Package #2はこちらから購入できます.
  • Phidgets.NET
    - Phidgetの.Net用ライブラリを配布しています.PhidgetServer製作時点では加速度センサーに対応していない,一部の関数が機能しないなど問題があったため利用していませんが,たまにアップデートされているようです.
  • Grouplab Phidgets HomePage
    -Phidgetを開発した,カルガリー大学 GroupLabのホームページです.Galleryには,論文や多数のデモビデオなどが紹介されています.


[デバイスふらり旅]