Funnelまとめ

  • 公開 -- kazushi? 2008-09-11 (木) 21:12:23
  • IMU 5 DOFモジュールのセットアップ方法を追加 -- kazushi? 2008-09-14 (日) 16:54:56
  • Funnel008b5用にXBee単体での方法を更新 -- kazushi? 2008-09-18 (木) 14:19:18
  • FIOv1.3とFunnel009用に更新 -- kazushi? 2009-04-24 (金) 14:56:51
  • XIOの章の回路図を追加 -- kazushi? 2009-05-07 (木) 18:15:32
  • VCP driversの情報を追加 -- kazushi? 2009-05-12 (火) 22:15:25
  • XBeeのend device側paketization timeout(RO)は10より3(デフォルト)のほうが滑らかになる。 -- kazushi? 2009-11-10 (火) 13:37:19
  • XIO単体のみの説明に変更 -- kazushi? 2011-07-02 (土) 03:13:24
  • Processing2.0およびfunnel1.0r806にて動作確認 -- kazushi? 2012-12-09 (日) 13:09:23

XIO(XBee単体)

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

  • XBeeとは シリアルポート接続によるPCのデータを送受信する無線モジュール。

XIO(XBee単体)

※この情報は2012/12/09時点のものです。
※XBeeの抜き差しや配線の変更は必ず電源を切って行うこと。

可変抵抗でやってみた。

1.Funnel008bのダウンロード

http://funnel.googlecode.com/files/funnel-1.0-r806.zip

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

Processingは2.0 Beta 7 (7 December 2012)を使用。
libraries/processing/funnel

(My document)/Processing/libraries/
にコピーあるいは移動する。(ディレクトリがなければ作成)
Processingを起動してSketch>Import Library...>Contributedにfunnelと表示されていればOK

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

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

コーディネータ(ホスト)側
ATID 3111 <-PAN(グループ)ID
ATDH 0000
ATDL 0000 <-相手のID
ATMY 0000 <-自分のID
ATBD 6    <-シリアルポートの速度(57600)
ATAP 2    <-APIモードの設定

エンドデバイス(クライアント)側
ATID 3111 <-PAN(グループ)ID
ATDH 0000
ATDL 0000 <-相手のID
ATMY 0001 <-自分のID
ATBD 6    <-シリアルポートの速度(57600)
ATD0 2    <-ピン20をアナログ入力AD0に設定
ATIT 1    <-ここで指定したサンプル数ごとに送信
ATIR 0A   <-サンプリング間隔(0x0A = 10ms)

4.Funnelライブラリを設定する

(My document)/Processing/libraries/funnel/libraryの
settings.xbee.txtを次のようにする

server:
  port: 9000

io:
  type: XBee
  com: COM5 <-ここはコーディネータをつなげているCOMポート番号を指定
  baudrate: 57600 <-ATBDで設定した速度

5.回路を組む

xbee_valicon.jpg
回路図
xio_n_v-resistor_thumb.jpg
大きなファイルはこちら。filexio_n_v-resistor.bmp

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

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

7.Processingを起動する

以下のスケッチを作成。

 /*
 analog in
 */

 import processing.funnel.*;

 final int id = 1; // end device ID

 XBee xbee;

 void setup()
 {
   size(400,130);

   int[] moduleIDs = {id};
   xbee = new XBee(this, moduleIDs);
 }

 void draw()
 {
   background(0);
   text("analogInput[0]: " + xbee.iomodule(id).analogPin(0).value,10,80);  
 }
  • チェックポイント
    • FIRMWARE VERSIONなどの情報が表示されているか?→されていなければATAPの結果を確認

8.動作確認

可変抵抗のつまみを回すと、値が0.0から1.0で変わる。ヤフー:-D
値が震えていたりしたらエンド・デバイスの電源を切って、14番ピンに基準電圧(+3.3V)をとっているか確認すること。

加速度センサ(KXM52-1050モジュール)でやってみた。

KXM52-1050モジュール
http://akizukidenshi.com/catalog/g/gI-01425/

1.X-CTUにてエンドデバイスのXBeeの設定をかえる。

ATID 3111 <-PAN(グループ)ID
ATDH 0000
ATDL 0000 <-相手のID
ATMY 0001 <-自分のID
ATIT 1    <-ここで指定したサンプル数ごとに送信
ATIR 0A   <-サンプリング間隔(0x0A = 10ms)
ATD0 2    <-ピン20をアナログ入力AD0に設定
ATD1 2    <-ピン19をアナログ入力AD1に設定
ATD2 2    <-ピン18をアナログ入力AD2に設定

2.回路を組む

回路図
xio_kxm52.png
pdfはこちら。filexio_kxm52.pdf
eagleスケマティックはこちら。filexio_kxm52.sch

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

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

4.Processingを起動する

以下のスケッチを作成。

/**
  * SimpleScope XBee
  */

 import processing.funnel.*;

 final int kChannles = 3;  // the number of channels to display
 final int kPoints = 200;  // the number of points to display
 final int id = 1; // end device ID

 XBee xbee;
 float values[][];
 int index = 0;

 void setup()
 {
   size(400, 400);
   frameRate(30);

   int[] moduleIDs = {id};
   xbee = new XBee(this, moduleIDs);

   values = new float[kChannles][kPoints];

   for (int channel = 0; channel < kChannles; channel++) {
     for (int i=0; i < kPoints; i++) {
       values[channel][i] = 0;
     }
   }
 }

 final int kLeft = 35;
 final int kTop = 25;
 final int kHeight = 100;

 void draw()
 { 
   background(0);

   smooth();

   for (int channel = 0; channel < kChannles; channel++) {
     int offset = channel * 130;

     textSize(12);
     text("analogInput(" + channel + ")", kLeft - 24, kTop - 8 + offset);
     text("1.0", kLeft - 24, kTop + 8 + offset);
     text("0.0", kLeft - 24, kTop + kHeight + offset);
     text("val: " + xbee.iomodule(id).pin(channel).value, kLeft + kPoints + 8, kTop + 8 + offset);
     text("max: " + xbee.iomodule(id).pin(channel).maximum, kLeft + kPoints + 8, kTop + 20 + offset);
     text("min: " + xbee.iomodule(id).pin(channel).minimum, kLeft + kPoints + 8, kTop + 32 + offset);
     text("avg: " + xbee.iomodule(id).pin(channel).average, kLeft + kPoints + 8, kTop + 44 + offset);

     values[channel][index] = xbee.iomodule(id).pin(channel).value;

     // draw outlines
     stroke(200);
     noFill();
     beginShape();
     vertex(kLeft - 1, kTop - 1 + offset);
     vertex(kLeft + kPoints, kTop - 1 + offset);
     vertex(kLeft + kPoints, kTop + kHeight + offset);
     vertex(kLeft - 1, kTop + kHeight + offset);
     endShape(CLOSE);

     // draw the signal
     stroke(255);
     beginShape();
     for (int i = 1; i < kPoints; i++) {
       vertex(kLeft + i, kTop + kHeight - values[channel][(index + i) % kPoints] * (float)kHeight + offset);
     }
     endShape();
   }

   index = (index + 1) % kPoints;
 }


6.動作確認

ブレッドボードを大きく動かす(ここがポイント)と、それぞれの値が変わる。今回の場合は

0 -> x-accel
1 -> y-accel
2 -> z-accel

で、動作を確認してみた。

}}


添付ファイル: filexio_kxm52.sch 147件 [詳細] filexio_kxm52.pdf 175件 [詳細] filexio_kxm52.png 1167件 [詳細] filexio_imu5dof.bmp 1049件 [詳細] filexio_imu5dof.jpg 956件 [詳細] filexio_n_v-resistor.bmp 1793件 [詳細] filexio_n_v-resistor_thumb.jpg 1776件 [詳細] filevr_with_fio13.jpg 820件 [詳細] filefio_v13front.jpg 1164件 [詳細] filefio_v13back.jpg 1109件 [詳細] fileIMG_4010.JPG 1079件 [詳細] filexbee_valicon_s.jpg 1672件 [詳細] filefio_valicon_s.JPG 1277件 [詳細] fileexplorer_usb_s.JPG 1794件 [詳細] filexbee_valicon.jpg 1545件 [詳細] filefio_valicon.JPG 1059件 [詳細] filefio.JPG 1013件 [詳細] fileexplorer_usb.JPG 1049件 [詳細] fileevaluation_board_usb.jpg 1088件 [詳細] fileevaluation_board_enddevice.jpg 998件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-12-10 (月) 22:48:42 (4379d)