WEBとリアルをつなげるデバイス「ioBridge」を触ってみる

TechCollab2009-02-21

ioBridgeとは?

ioBridgeはさまざまなデバイスをインターネット経由で監視/制御できるモジュール。先日Engadged Japanで紹介されたこともあり、自分の中にある「ウェブとリアルの融合」という興味にも合致してたので勢いで購入してみた。下図(ioBridgeシステム構成)の通り、ioBridgeにLANケーブルを挿しネットワークに接続させることで、WEB経由でioBridgeに接続されたセンサー、デバイスの情報を取得したり制御することができる(温度センサー、GPS、ジャイロ、サーボモータ 、etc)。このDog Feederで利用しているサーボコントローラだけでなく、X10コントローラやBasic StampやArduinoなどのシリアルスマートボードとの連携も可能となっているため、デバイス側の連携は無限大の可能性がある。そしてそれらのセンサー、デバイスはすべてWEB経由で操作できる。

ioBridgeコントローラ
ioBridge architecture

ioBridgeシステム構成
ioBridge architecture

入手方法

ioBridgeはioBridge Storeから購入することができる。発注してから大体1週間で到着する。今回かかった料金は下の通り*1

  • IO-204 Module : $88.00
  • Serial Smart Board : $19.99
  • Servo Controller Smart Board : $16.99
  • Shipping Charge : $20程度
利用準備

1. デバイスのセット
電源、LANケーブル、サーボコントローラを接続する。

2. ioBridge接続、ダッシュボード設定
ioBridgeのサイトにログインし、指示に従いデバイスの初期設定を行う。

3. Widgetの作成
バイス制御用Widgetを作成する。

API: デバイス情報の取得

json形式でioBridgeコントローラ情報を取得することが可能。例えば自分のioBridgeコントローラの情報を取得する場合は、下記クエリを投げてデバイス情報を取得する。
http://www.iobridge.com/api/feed/key=v3KAtozHaCZAMDEuHB

{
        "module": {
            "serial": "24000142",
            "label": "Module 24000142",
            "lat": "",
            "long": "",
            "location": "",
            "datetime": "Feb-21-2009 03:14:17 AM",
            "status": "Online",
            "channels": [
            {"channel": "1", "label": "Channel 1", "AnalogInput": "0", "AnalogInputRaw": "0", "AnalogInputScale": "Raw", "DigitalInput": "0", "DigitalInputState": "0", "DigitalOutput": "0", "DigitalOutputState": "0"},
{"channel": "2", "label": "Channel 2", "AnalogInput": "302", "AnalogInputRaw": "302", "AnalogInputScale": "Raw", "DigitalInput": "On", "DigitalInputState": "1", "DigitalOutput": "Off", "DigitalOutputState": "0"},
{"channel": "3", "label": "Channel 3", "AnalogInput": "0", "AnalogInputRaw": "0", "AnalogInputScale": "Raw", "DigitalInput": "0", "DigitalInputState": "0", "DigitalOutput": "0", "DigitalOutputState": "0"},
{"channel": "4", "label": "Channel 4", "AnalogInput": "352", "AnalogInputRaw": "352", "AnalogInputScale": "Raw", "DigitalInput": "On", "DigitalInputState": "1", "DigitalOutput": "Off", "DigitalOutputState": "0"}]
        
        }}

これを応用し、ioBridgeサーバの温度センサーの情報を取得しグラフ表示するようなことも可能: ioBridge Server Temperature

API: デバイスの制御

まだAPIらしいAPIが整備されている段階ではない。デバイス制御はwidgetごとに定義されているスクリプトを元に操作ロジックを書いていくことで行う。

<script type="text/javascript">document.write(unescape("%3Cscript src='" + "http://www.iobridge.com/widgets/io.js?WH0Ng8OIC2B6' type='text/javascript'%3E%3C/script%3E"));</script>

サーボ(Variable Servo Position Widget)の場合は、下記のようにwidgetGetString、widgetSetStringをコールすることでサーボモータの操作ができる(参考:http://www.iobridge.net/forum/index.php/topic,94.0.html)。

<html>
<title>Servo Control Example</title>
<head>

<script type="text/javascript">

function moveServo(widgetID, direction, distance){
  
  distance = parseInt(distance);
  current = parseInt(widgetGetString(widgetID));

  if (direction == "CCW") {
       distance = current-distance;
  }
  else {
       distance = current+distance;
  }

   widgetSetString(widgetID, distance);
	
   current = Math.round(29 - (current - 800) * 60 / 500);
	
   document.getElementById("ServoPosition").innerHTML = current + "°";
}

</script>
</head>

<body onload="moveServo('mfwa3qcO79m8', 'CW', '0')">
<iframe name="livecam" id="livecam" width="320" height="240" src="http://www.picobay.com/fishcam/inside.html" frameborder="0" allowtransparency="false" scrolling="no" ></iframe>
<br><br>

Click the arrow buttons to move pan the camera.
<br><br>

<form><input type="button" Name="CamLeft" Value="<-" onClick="moveServo('mfwa3qcO79m8', 'CW', '200')"><input type="button" Name="CamRight" Value="->" onClick="moveServo('mfwa3qcO79m8', 'CCW', '200')"></form>

Camera Servo Positon = <a id="ServoPosition"></a>

<div id="ioWidgets" style="display:none;">
<script type="text/javascript">document.write(unescape("%3Cscript src='" + "http://www.iobridge.com/widgets/io.js?mfwa3qcO79m8' type='text/javascript'%3E%3C/script%3E"));</script>
</div>

</body>
</html>
お試し:ioBridgeでホーム監視システムの作成

以上を踏まえれば、webカメラサーボモータをつけることで、遠隔操作可能なWEBカメラシステムを簡単に作成することができる。配信はustreamを利用し、WEBカメラの操作はioBridgeサーバを介したJavaScriptコードを書くことで実現する。
ホーム監視システムサンプル: http://hirayama-sosuke.appspot.com/

その他: ioBridgeの応用例

ioBridge Gun Shooting!
WiiリモコンとPCをBluetooth接続し、そのアクションをサーボWidgetを通して操作するというもの。

ioBridge Fish Tank monitor

ioBridge Dog Toy

その他:関連図書

Making Things Talk ―Arduinoで作る「会話」するモノたち (Make:PROJECTS)

Making Things Talk ―Arduinoで作る「会話」するモノたち (Make:PROJECTS)

*1:サーボコントローラは別途購入:SANWA SX-101z