FrontPage

Funnel勉強中。まとめてみる。Fioを特別に貸してもらっているのでまだ公にできないかな?書いてから小林先生にみてもらう。問題なければ公開。

Funnel

fio.JPG
IAMASの小林茂先生が考案したフィジカル・コンピューティング・ツールキットがGainer。その無線版。
詳しくはここ
開発状況はここ
名前の由来はここ

動作モデル

Funnel専用I/Oモジュール(Fio)だけなく、XBee, Gainer, ArdinoなどいろいろなI/Oモジュールを利用できる。基本的にどれもXBee経由。よって、

-XBee単体
-XBee+Fio

の2つでやってみた。
XBeeとは、シリアルポート接続によるPCのデータを送受信する無線モジュール。くわしくはここを参照。利用にあたってはブレッドボードなどを用いて3.3V電源などを用意する必要があるが、ピンのピッチ幅がGainerなどで使われるブレッドボードと違うのでそのままでは手軽に使えない。手っ取り早く使うにはXBeeスターターキットについてくる評価ボードを使う。しかし、これは余分な機能も付いているのでボードが大きい。よって以下の2つを用いるととても便利、

SparkFun XBeeエクスプローラUSB(完成品)
http://www.switch-science.com/products/detail.php?product_id=30
SparkFun XBeeピッチ変換基板とソケットのセット(キット)
http://www.switch-science.com/products/detail.php?product_id=28

評価ボード(大きい)
evaluation_board_usb.jpg evaluation_board_enddevice.jpg

XBeeエクスプローラUSB(コンパクト!ブレッドボード直!)
explorer_usb.JPG xbee_valicon.jpg

XBee単体

PC<-USB->(エクスプローラ(XBee)) ------ (XBee)
explorer_usb_s.JPG ------ xbee_valicon_s.jpg
利点)すぐに始められる。
欠点)ポート数が少ない。電源を制作しなければならない。そのままではブレッドボードに刺さらない。

XBee+Fio

PC<-USB->(エクスプローラUSB(XBee)) ------ ((XBee)Fio)
explorer_usb_s.JPG ------ fio_valicon_s.JPG
利点)ポートが多い。電源がある。ブレッドボードに刺さる。
欠点)まだ製品になっていない。

可変抵抗でやってみた。

XBee単体

※)XBeeの抜き差しや敗戦の変更時は必ず電源を切って行うこと。

1.Funnel007のダウンロード

http://funnel.googlecode.com/files/funnel_007.zip
最新版の008b4では動作しなかった。
接続はするが後述するサンプルでは値を得られない。謎

2.ProcessingにFunnelのライブラリをインストールする

processingはビルド0098を使用。ここでは手元にあったのが0098というだけで特にこれという理由はなし。最新安定版0148を使用することをお勧めする。
libraries/processing/library

funnel.jar
javaosc.jar

processing-0098/libraries/funnel/library
に入れる。(ディレクトリがなければ作成)

3.X-CTUでXbeeの値を設定する

設定に関してほかのパラメータをいじったことがあればrestoreして初期設定に戻す。
1:1の通信を行う。

コーディネータ(ホスト)側
ATID 1111 <-PAN(グループ)ID
ATMY 0001 <-自分のID
ATDH 0000
ATDL 0002 <-相手のID
ATAP 2    <-APIモードの設定

エンドデバイス(クライアント)側
ATID 1111 <-PAN(グループ)ID
ATMY 0002 <-自分のID
ATDH 0000
ATDL 0001 <-相手のID
ATD0 2    <-ピン20をアナログ入力AD0に設定
ATIR 64   <-サンプリング間隔(0x64 = 100)
ATIT 5    <-ここで指定したサンプル数ごとに送信

4.Funnel Serverを設定する

settings.yamlを次のようにする

server:
  command port: 9000
  notification port: 9001

io:
  type: XBee
  com: COM22 <-ここはコーディネータをつなげているCOMポート番号を指定
  baudrate: 9600

5.回路を組む

xbee_valicon.jpg
(そのうち、ここに回路図をいれる)

エンドデバイス側の回路を組む際の注意点
電源電圧は必ず2.8〜3.4Vの範囲で使用
↑5Vを加えるとモジュールが破壊!
Vref(14番ピン)はVCC(1番ピン)に接続
↑A/D変換のための基準電圧

6.ここでXBeeのコーディネータ・エンドデバイスとも電源を入れる

7.Funnel Serverを起動する

以下のメッセージを確認

Funnel 007 (2008-04-21)

I/Oモジュールと接続中です…
baudrate: 9600
I/Oモジュールと接続が完了しました:COM22
FIRMWARE VERSION: 10a5
SOURCE ADDRESS: 01
PAN ID: 1111
コマンドポート:サーバの起動中…
通知ポート:サーバの起動中…
通知ポート:サーバが起動しました:9001
コマンドポート:サーバが起動しました:9000
NODE: MY=2, SH=13a200, SL=400107f0, dB=59, NI=' '

8.Processingを起動する

以下のスケッチを作成。フォントはサンプルのものを流用する。

/*
analog in
*/
 
import processing.funnel.*;
 
XBee xbee;
PFont myFont;
  
void setup()
{
  size(400,130);
  
  myFont = loadFont("CourierNewPSMT-24.vlw");
  textFont(myFont, 24);
  
  int[] moduleIDs = {2};
  xbee = new XBee(this,moduleIDs); 
}
 
void draw()
{
  background(0);
  text("analogInput[0]: " + xbee.iomodule(2).port(0).value,10,80);  
}

9.動作確認

可変抵抗のつまみを回すと、値が0.0から1.0で変わる。ヤフー:-D
値が震えていたりしたらエンド・デバイスの電源を切って、14番ピンに基準電圧(+3.3V)をとっているか確認すること。
XBee単体をエンドデバイスにするとどうしても電源レギュレータも用意しないといけないので配線がややこしい。

XBee+Fio

※)XBeeの抜き差しや配線の変更時は必ず電源を切って行うこと。

1.Funnel008b4のダウンロード

http://funnel.googlecode.com/files/funnel_008b4.zip

2.ProcessingにFunnelのライブラリをインストールする

processingはビルド0098を使用。ここでは手元にあったのが0098というだけで特にこれという理由はなし。最新安定版0148を使用することをお勧めする。
libraries/processing/library

funnel.jar
javaosc.jar

processing-0098/libraries/funnel/library
に入れる。(ディレクトリがなければ作成)

3.X-CTUでXbeeの値を設定する

以下の設定ファイルをX-CTUから読んで設定する。この際、必要に応じてPAN ID(ATID)は変更。

コーディネータ(ホスト)側
hardware/fio/fio_v1.0/xbee/coordinator.pro
エンドデバイス(クライアント)側
hardware/fio/fio_v1.0/xbee/end_device.pro

4.Funnel Serverを設定する

Funnel008b4を使用する。
settings.yamlを次のようにする

server:
  port: 9000

io:
  type: Fio
  port: COM23 <-ここはコーディネータをつなげているCOMポート番号を指定
  baudrate: 19200

5.回路を組む

fio_valicon.JPG
(そのうち、ここに回路図をいれる)

6.XBeeコーディネータ・Fioエンドデバイスとも電源を入れる

XBeeなどの3.3vで動くモジュールには3.4v以上の電圧を与えないこと!

7.Funnel Serverを起動する

以下のメッセージを確認

Funnel 008 (r430) [EXPERIMENTAL]

I/Oモジュールと接続中です…
baudrate: 19200
I/Oモジュールと接続が完了しました:COM23
API MODE: 2
FIRMWARE VERSION: 10a5
コマンドポート:サーバの起動中…
コマンドポート:サーバが起動しました:9000
SOURCE ADDRESS: 00
PAN ID: 1111
NODE: MY=1, SH=13a200, SL=400107f0, dB=42, NI=' '
Firmata Protocol Vesrion: 2.0

8.Processingを起動する

以下のスケッチを作成。フォントはサンプルのものを流用する。

/*
 Fio 
 analog in
*/

import processing.funnel.*;

Fio fio;
PFont myFont;

void setup()
{
  size(400,130);
 
  myFont = loadFont("CourierNewPSMT-24.vlw");
  textFont(myFont, 24);
 
  int[] moduleIDs = {1};
 
  fio = new Fio(this,moduleIDs,Fio.FIRMATA);
}

void draw()
{
  background(0);
  text("analogInput[0]: " + fio.iomodule(1).port(14).value,10,80);
}

9.動作確認

可変抵抗のつまみを回すと、値が0.0から1.0で変わる。XBeeのときと比べて値が少しぶれるようだ。
電源などがすでに用意されているので配線もすっきりする。これは作業する上でかなりメリットが大きい。

ジャイロでやってみた。

IMU 5 DOFモジュール
http://www.sparkfun.com/commerce/product_info.php?products_id=741 ~
これから書く。


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS