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



概要

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

ここでは,一般的なWindows PCから手軽に扱うことができる,USB接続のセンサー/アクチュエータ群「Phidgets」の基本について説明します.USBセンサを使ってみよう(PhidgetServer編)も参考にしてください.

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

連載目次



Phigetsの基本
1. はじめに

近年,ユビキタス・コンピューティングやセンサー・ネットワークといった言葉を,さまざまなところで目にするようになってきました.これ らは,さまざまなセンサー・アクチュエーター,小型コンピュータを生活空間に配置し,それらを組み合わせた新しいユーザ・インタフェースやサービスの構築 を目指しています.

現在のPCの入出力インタフェースは,マウス/キーボード/ディスプレイにほとんど固定されてしまっていますが,こうしたさまざまなデバイスを組み合わせることで,身体的な動作や周辺的な情報を活用した,より豊かなユーザ・インタフェースを構築できる可能性があります.

その一方,こうしたユビキタス的な実世界システムはハードウェア/ソフトウェアの双方の開発を伴うため,個人が取り組むには敷居の高い領域でした.

もし,日曜プログラミングのような形で,思い立った時に手軽にさまざまなセンサ・アクチュエータなどを組み合わせた実世界システムを製作できれば,プログラミングの世界は大きく広がるのではないでしょうか.

本連載は全3回(+α)を予定しており,Phidgetsというデバイス群を用いて,こうした「日曜ユビキタス環境」を実現する方法について説明します.

まず今回は,Phidgetsの概要と,Phidgetsをさまざまな言語から手軽に扱うことができるPhidgetServerというソフトウェアを中心に紹介します.

目次へ




2. Phidgetsの概要

Phidgets(Physical Widgets)は,一般的なWindows PCから手軽に扱うことができる,USB接続のセンサー/アクチュエータ群です.(筆者は試用していませんが,Mac/Linux用のドライバも用意されています.) センサーの種類もなかなか豊富で扱いやすいため,ちょっとした実世界指向システムを開発するのに適しています.

Phidgetsはもともと,カルガリー大学のSaul Greenberg氏らによりはじめられたプロジェクトであり,物理的なデバイス(スライダー,スイッチ,LED,モーターなど)を,PC上のGUIと同じような感覚で利用 することを目標とした,デバイス&ツールキットの総称です.(製品化以前の論文/デモビデオなどがWebページ上で紹介されています.)

なお,本稿では便宜的に,Phidgetsのデバイス群を「Phidgetデバイス」と呼ぶことにします。

ほとんどのPhidgetデバイスはUSBから給電されるため,PCとUSBケーブルさえあればどこでも利用できます.また,専用のライブ ラリ(COMやDLL)が用意されているため,Visual Basic, VC++, Javaなどの言語から比較的容易に扱うことが可能です.

Phidgetデバイスには,たとえば以下のようなセンサー/アクチュエーターが用意されています.

  • PhidgetInterfaceKit
  • PhidgetRFID
  • PhidgetAccelerometer
  • PhidgetWeightSensor

ここではまず,これらのPhidgetデバイスの概要について説明します.

PhidgetInterfaceKit
PhidgetInterfaceKit(以下,InterfaceKit)は,各8ポートのアナログ入力/デジタル入力/デジタル出力を備えた,基本となるPhidgetデバイスです(図1). アナログ入力は10bitのA/Dコンバーターを搭載しており,電圧を出力とするさまざまなセンサーを接続できます.代表的なセンサーとし てはは次のようなものが挙げられます(図2).(これらは後述するInterfaceKit Package #2に付属しています.)
  • タッチセンサー
    • 人の指などが基盤面に触れたことを検出します.
  • 温度センサー
    • 気温を取得します.
  • 光センサー(CDS)
    • 明るさを取得します.
  • 圧力センサー
    • 押し込み圧力を検出します.
  • スライダー(可変抵抗)
    • 一般的なスライダーです.
  • つまみ(可変抵抗)
    • 一般的なボリュームつまみです.
  • ジョイスティック
    • アナログジョイスティックです.X軸/Y軸をそれぞれ別のポートに接続します.

デジタル入力はOn/OFFを検出する1bitの入力端子であり,スライドスイッチ,プッシュスイッチなどを接続します. デジタル出力は,5Vの電圧をOn/Offすることで,LEDなどを制御します.リレーなどを介せば,電球など100V機器の制御も可能です. InterfaceKitは,国内代理店のぷらっとホームから購入するか,Phidgetsの公式サイトから直接購入することができます.(以下のPhidgetデバイスも同様です.) ぷらっとホームでは,InterfaceKitにいくつかのセンサーなどを組み合わせた形で,InterfaceKit Package#1,#2として販売しています.価格は#1が14800円,#2が24800円となっています(本稿執筆時点,以下同様).#2の方が付 属するセンサーが豊富で扱いやすいため,お勧めです. Phidgetsの公式サイトでは,InterfaceKitと各種センサーは別売されており,今回紹介した以外のセンサーも多数販売されています.

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

PhidgetRFID

PhidgetRFIDは,USBに直結するRFIDリーダーと10個程度のタグのセットです(図3). 135KHzの周波数帯を利用しており,アンチコリジョン(タグの複数読み取り機能)には対応していません.価格は,ぷらっとホームで9800円, Phidgets公式サイトで90CDN(カナダドル)となっています.(1CDN = 97円前後,本稿執筆時点.)

PhidgetRFIDは,RFIDシステムとしてはごく基本的な性能ですが,安価で取り扱いが容易なため,小規模な試作には最適だと思います. なお,RFIDについては,筆者がSoftware Design2004年10月号〜2005年2月号に執筆した,「RFIDを使ってみよう」にて,詳しく紹介していますので,参考にしてください.

PhidgetAccelerometer

PhidgetAccelerometerは,USBに直結できる2軸の加速度センサーです(図4). AnalogDevices社のADXL202という有名な加速度センサーを利用しており,物体の移動にともなう加速度,および静止時の地軸に対する傾斜(重力加速度)を計測できます. 価格は,Phidgets公式サイトで75CDNとなっています.ぷらっとホームでは単体販売はされておらず,InterfaceKit #2などに同梱されているようです.

PhidgetAccelerometerは,ヒト/モノのさまざまな動作/状態を取得できるため,使い勝手のよいセンサーといえます.

図3 PhidgetRFIDの外観 図4 PhidgetAccelerometerの外観
PhidgetWeightSensor
PhidgetWeightSensorは,USBに直結できる体重計です(図5).市販の体重計をそのままハックしたような外観です が,体重を0.1kg単位でかなり正確に計測することができます.価格は,ぷらっとホームで19,800円,Phidgets公式サイトでは130CDN (カナダドル)となっています.

PhidgetWeightSensorは,体重を直接取得できる珍しいセンサーなので,アイデア次第で面白い使い方が出来るのではないかと思います.

PhidgetServoMotor

PhidgetServoMotorは,サーボモーターとコントローラーをセットにした,PCからサーボモーターを手軽に制御できるシス テムです(図6).1度以下の正確な単位で,サーボモーターの動作角度(最大約180度)を制御することができます.なお,給電はACアダプタから行いま す.

PhidgetServoMotorには,1つのサーボモーターを制御する1-motorと,4つのサーボモーターを制御する4- motorの二つのラインナップが用意されています.4-motorの場合,価格はぷらっとホームでは24,800円,Phidgets公式サイトでは約 150CDNとなっています.

PhidgetServoMotorは,PCから制御できるサーボモーターとしてはもっとも手軽で扱いやすいものの一つです.

図5 PhidgetWeightSensorの外観 図6 PhidgetServoMotorの外観
目次へ




3. Phidgetsの問題点

これまでみてきたように,Phidgetsには魅力的なセンサー/アクチュエータが多数用意されています.

ここでソフトウェアの方に目を向けてみると,Visual Basic, VC++, Javaなどに対応したサンプルが用意されている反面,Rubyなどのスクリプト系言語やFlashなどからは利用できなかったり,.Net環境への対応 がやや貧弱であったりと,実際に使おうとすると不便な要素も散見されます. また,複数のPCに接続されたPhidgetデバイスを相互に連携させることは困難です.

そこで,ここでは,主要なPhidgetデバイスをTCPサーバー経由で手軽に制御できる,PhidgetServerというソフトウェアを開発してみました.



[次へ->PhidgetServerの基本]

[1] [2] [3]

[デバイスぶらり旅]