SlideShare a Scribd company logo
IAMAS Gangu Project - Work in Progress
“Sketching in Hardware”ワークショップ
小林茂(IAMAS:岐阜県立国際情報科学芸術アカデミー)
2008 年 12 月 27 日:AXIS Gallery
自己紹介
• 1970年名古屋市生まれ
• 電子楽器メーカー(1993∼2004)
– サウンドデザイナー
– 技術研究所
– ソフトウェアエンジニア
• IAMAS(2004∼)
– フィジカルコンピューティング
– インタラクションデザイン
自己紹介:ツールキット開発の動機
• ハードは気軽にスケッチできない
→ソフトが動いた段階で気がついても遅い
• 実際に動くまでは想像で進めるしかない
→建設的なディスカッションが行われにくい
• デザイナーとエンジニアの共通言語がない
→コミュニケーション上の齟齬が多発する
→インタラクションデザインのプロセスで使える
 ツールキットが必要なのでは?
自己紹介:書籍(執筆)
Make日本語版Volume 04
特集「Sketchーハードウェアでスケッチする」
オライリー・ジャパン編(オライリー・ジャパン・2008年)
自己紹介:書籍(執筆)
Make日本語版Volume 05
「Sketch / Prototype―素材として使える電子回路」
オライリー・ジャパン編(オライリー・ジャパン・2008年)
自己紹介:書籍(共著)
+GAINER
GainerBook Labo+くるくる研究室(九天社・2007 年/オーム社・2008 年)
自己紹介:書籍(監修)
Making Things Talk
Arduinoで作る「会話」するモノたち
Tom Igoe 著・小林 茂 監訳・水原 文 翻訳(オライリー・2008年)
本日の予定
• イントロダクション
– フィジカルコンピューティングとは
– ツールキットの紹介(Gainer)
– 事例紹介
– ツールキットの紹介(Funnel)
• 実習
– 実習1:電子回路の基礎知識
– 実習2:Funnel入門
– 実習3:Funnel応用
フィジカルコンピューティングとは?
• ニューヨーク大学のITP*1
でTom Igoeらが
中心となって教えているコースの名前
• インタラクションデザインを教えるための
方法の1つ
• コンピュータが理解したり反応できる人間の
フィジカルな表現の幅をいかに増やすか
• デザインやアート教育の1つの分野として定着
*1 Interactive Telecommunications Program
ITPの紹介
ITP Winter Show 2008
• ITPで学ぶ学生の展覧会で毎年春冬2回開催
• 12月17日から18日まで開催
• http://itp.nyu.edu/shows/winter2008/
フィジカルコンピューティングとは?
一般的なPCから見た人間は?
• キー情報(ASCIIキーボードから)
• マウス情報(1つのマウスから)
Alto (1973)
出典:http://toastytech.com/guis/
フィジカルコンピューティングとは?
• PC+標準入出力デバイスの世界で実現できる
インタラクションには限界がある
– 人間が直接触れて感じることができない
– PCのパラダイムに縛られてしまう
• 統一されたプラットホームならではの良さも
勿論ある
(例:Flashなどによるウェブ上での表現)
フィジカルコンピューティングとは?
• 物理的な入出力を活用することによって
表現力は拡大する(例:Nintendo Wii)
• 電子楽器などではずいぶん昔からのテーマ
• iPhoneが注目される理由とも大きく関連
• フィジカルなインタラクションデザインの
メソッド確立はまだまだこれから?
フィジカルコンピューティングの構成要素
• センサ
(例:光、圧力、音、温度、加速度など)
• アクチュエータ
(例:LED、モータ、ソレノイドなど)
• プロセッサ
(例:マイコン、I/Oモジュール+PCなど)
→ものすごく簡単にまとめると
 プログラミング+電子工作
プログラミング+電子工作?
フィジカルコンピューティングは難しい?
• プログラミングはそれなりのスキルが必要
(例:ActionScript、C、C++、Javaなど)
• 電子工作にもそれなりのスキルが必要
(例:回路設計、実装、検証)
• 両方のスキルが必要ということは…
プログラミング+電子工作?
フィジカルコンピューティングは難しい?
• 確かに習得するまでにはそれなりの努力が必要
• できあがった結果は直接的に人間の感覚に
訴えるものになる(はず)
プログラミング+電子工作?
最近では扱いやすいプラットホームが登場
• プログラミング
– Flash
– Processing
– Max/MSP
• 電子回路のスケッチ
– Gainer
– Arduino
– Phidgets
電子工作は大変?
• 誰でもはんだ付けくらいはやったことがある
• まずは必要最小限のこと(だけ)を覚えれば
スタートできる
– 電圧∼電流∼抵抗
– 回路図の読み方
– オームの法則など
– よく使う部品のシンボルと特徴
• 失敗しながら覚えていけばいい
• でもUNDOはきかない(=人生と一緒)
フィジカルな世界とつなぐ方法
マイコンのみ(例:PIC、AVR)
a
b
c
d
A
B
C
D
マイコン
microcontroller
program
a0]=ain.o;
aout.1 = 255;
フィジカルな世界とつなぐ方法
マイコン+PC(例:Arduino、Wiring)
a
b
c
d
A
B
C
D
マイコン
microcontroller
PC
USB
program
a0]=ain.o;
aout.1 = 255;
program
a0]=ain.o;
aout.1 = 255;
Arduino I/Oボード
写真:SparkFun Electronics
フィジカルな世界とつなぐ方法
I/Oモジュール+PC(例:Gainer、Phidgets)
a
b
c
d
A
B
C
D
I/Oモジュール
I/O module
PC
USB
program
a0]=ain.o;
aout.1 = 255;
Phidgets
Gainerとは?
オープンソース・ハード&ソフトのツールキット
• I/Oモジュール
• ソフトウェア・ライブラリ
– ActionScript 2/3
– Processing
– Max/MSP
Gainer I/Oモジュール
写真撮影:高尾俊介
I/Oモジュール+ブレッドボード
写真撮影:高尾俊介
さまざまな電子部品
写真撮影:高尾俊介
I/Oモジュール+ブレッドボード+部品
写真撮影:高尾俊介
入力:曲げ
写真撮影:高尾俊介
出力:LEDアレイ
写真撮影:高尾俊介
出力:振動モータ
写真撮影:高尾俊介
ワークショップ
HELLO!!フィジカルコンピューティング
• 日時:2007.12.22-23
• 場所:山口情報芸術センター
• 参加者:19名
• 言語:日本語
• 環境:Processing×Funnel×Gainer I/O
作例:Mountain Guitar
• 金箱淳一
• 音楽表現のためのギター型インタフェース
– 親しみやすさ
– 演奏の奥深さ
• 各種センサ+I/Oモジュール+PC
• IAMAS東京展「いまからだ」などで展示
• 学生CGコンテストなど複数で受賞
作例:Mountain Guitar(スケッチ)
作例:Mountain Guitar(1号)
作例:Mountain Guitar(2号)
作例:Mountain Guitar(2号の製作中)
作例:Mountain Guitar(3号)
作例:Mountain Guitar(4号)
作例:Mountain Guitar(4号の製作中)
作例:Mountain Guitar(4号の配線)
作例:Mountain Guitar(5号)
作例:Mountain Guitar(5号の内部)
Funnelとは?:コンセプト
• 単純で透明
• スケッチ∼プロトタイプまで使える
• デザイナーとエンジニアの「共通言語」
FunnelとGainerの違い
• Gainer
– シンプルなドライバ的なもの
– Gainer I/Oと1:1対応
– 入門書がある
• Funnel
– フレームワーク的なもの
– ArduinoやXBeeも利用可能
– 入門書がない
Funnelとは?:関連
Sketching User Experiences
Getting the Design Right and the Right Design
Bill Buxton(Morgan Kaufmann Pub・2007年)
Funnelとは?:関連
出典:Bill Buxton, Sketching User Experiences (2008)
Funnelの特徴
• 疑似コード風のコーディング
• 入出力をより簡単に扱うためのフィルタ
– ローパス、ハイパス(Convolution)
– 入力を設定した閾値で分割(SetPoint)
– スケーリング(Scaler)
– オシレータ(Osc)
• 複数のI/Oモジュールに対応
Funnelの構成
USB XBee
Dongle
Gainer
I/O Module
Arduino
(with Firmata)
USB XBee
Dongle
Funnel Server
ActionScript 3 Processing
Max/MSP
etc.
Ruby
AS3 Library
Processing
Library
OSC LibrariesRuby Library
Funnel I/O
Digi International
XBee
Funnel I/O
Digi International
XBee
Arduino Duemilanove
写真:SparkFun Electronics
LilyPad Arduino
写真:SparkFun Electronics
Arduino Pro Mini
写真:SparkFun Electronics
Arduino ProtoShield
写真:SparkFun Electronics
Arduino XBee Shield
写真:SparkFun Electronics
FIO: Funnel I/O Module v1.3
FIO: Funnel I/O Module v1.3
FIO: Funnel I/O Module v1.3
+-
XIO: XBee I/O Board v1.0
XIO: XBee I/O Board v1.0
Funnel:今後の開発予定
ビルド009のリリースを近日中に予定
• I2Cデバイスのサポートを追加
• XBeeおよびFIOのサンプルとツールを追加
• バグ修正や細かな改良など
配布物一覧
品名 品番など 数
Gainer I/Oモジュール 1個
USBケーブル 1本
ブレッドボード SAD-01 1個
ジャンプワイヤ SPP-100 適量
抵抗器(橙橙茶金) 330Ω 2個
抵抗器(茶黒橙金) 10kΩ 1個
ボリューム 10kΩ(Bカーブ) 1個
CdSセル 5mm 1個
LED 白色 1個
加速度センサ KMX52-1050 1個
タクトスイッチ 6mm角 1個
電圧∼電流∼抵抗
電気の流れは水の流れのようなもの
• 電圧
– 2点間の高度(電位)の違い
– 基準点が必要(GND)
– 単位はボルト(V)
電圧のイメージ図
低高
電圧∼電流∼抵抗
電気の流れは水の流れのようなもの
• 電流
– 電圧の高いところから低いところに流れる
– 単位はアンペア(A)
電流のイメージ図
少多
電圧∼電流∼抵抗
電気の流れは水の流れのようなもの
• 抵抗
– 電流の流れにくさ
– 単位はオーム(Ω)
抵抗のイメージ図
低 高
電圧∼電流∼抵抗
よく出てくる補助単位の例
• 1,000倍を表すキロ(例:1kΩ)
• 1,000,000倍を表すメガ(例:1MΩ)
• 1
1,000 を表すミリ(例:1mA)
• 1
1,000,000 を表すマイクロ(例:50µA)
回路図ってなに?
回路図ってなに?
回路図は電子回路の設計図
• シンボルで表した電子部品の接続を示したもの
• シンボルに若干のバリエーションはあるが、
基本的には全世界共通
電源の回路図シンボル
+5V GND
スイッチの回路図シンボルと部品例
抵抗器の回路図シンボルと部品例
可変抵抗器の回路図シンボルと部品例
LEDの回路図シンボルと部品例
ブレッドボードってなに?
• 部品の足を穴にさすことで電子回路を形成
• はんだ付け不要
– 部品を再利用できる
– 回路を組み間違えてもやり直しできる
– 耐久性にはやや注意が必要
ブレッドボードの構造
• 横方向のブロックは背面で接続
• 縦方向のブロックは未接続
• 電源用のエリアは専用に用意されている
実習:LEDを点灯させてみよう
LEDを点灯させてみよう
どうして抵抗器が必要なの?
• LEDには適切な電流の範囲がある
(例:20mA)
• その範囲を超えると簡単に焼き切れてしまう
• 適切な値の抵抗器を用いて電流を制限する
• 適切な抵抗値はどうやって求める?
→オームの法則を用いて計算する
※抵抗器で電流を制限する方法が全てではありません
オームの法則
電圧∼電流∼抵抗の関係
V = I × R
• Vは電圧で単位はV(ボルト)
• Iは電流で単位はA(アンペア)
• Rは抵抗で単位はΩ(オーム)
オームの法則
電源電圧 − LEDの電圧 = LEDに流したい電流 × R
Rを求めるためにこの式を変形
R =
電源電圧 − LEDの電圧
LEDに流したい電流
例:電源電圧が5.0V、LEDの電圧が1.8V、電流が10mA
R =
5 − 1.8
0.01
=
3.2
0.01
= ?
※実際には計算結果に近い値の抵抗器を用いる
例:LEDを点灯させてみる
参考:ジャンプワイヤの色分け
• 赤:電源の+側(+5V)
• 黒:電源のー側(GND)
• 白・青・黄:センサとの接続など
例:LEDを点灯させてみる(NG)
の方向が違う
ワイヤをさす位置が違う
にささっていない
実習:LEDをスイッチでオン/オフさせてみる
実習:LEDをスイッチでオン/オフさせてみる
7
Processing入門
• 基本的な操作方法
• 用語
• 簡単なプログラム
参考書籍
Built with Processing [改訂版]
デザイン/アートのためのプログラミング入門
前川 峻志+田中 孝太郎(ビー・エヌ・エヌ新社・2008年)
Processing入門:基本的な操作方法
• 起動
• サンプルを開く
• 実行
• 終了
Processing入門:用語
• Processing Development Environment
• Sketch
• Display Window
Processing入門:簡単なプログラム1
コード例 1 Hello World!
println("Hello World!");
Processing入門:簡単なプログラム2
コード例 2 ウィンドウを表示してみる
// 最初に1回だけ実行される
void setup() {
// Display Windowのサイズ(横、縦)
size(200, 200);
}
// 毎フレームごとに実行される
void draw() {
// 背景の色(赤、緑、青)
background(255, 255, 255);
}
Processing入門:簡単なプログラム3
コード例 3 直線を描画してみる
void setup() {
size(200, 200);
}
void draw() {
background(0);
stroke(255);
line(0, 0, 199, 199);
}
Processing入門:簡単なプログラム4
コード例 4 マウスの状態を読み取る
void setup() {
size(200, 200);
}
void draw() {
if (mousePressed) {
background(255);
} else {
background(0);
}
}
Processing入門:簡単なプログラム5
コード例 5 マウスイベントを扱う
int brightness = 0;
void setup() {
...
void draw() {
background(brightness);
}
void mousePressed() {
brightness = 255;
}
void mouseReleased() {
brightness = 0;
}
Funnel入門
• 出力をコントロールしてみる
– マウスでI/Oモジュール上のLEDを制御
– I/Oモジュール上のボタンでLEDを制御
• 入力を扱ってみる
– ボリューム
– CdSセル
Funnel入門:Gainer I/Oの出力について
出力には2種類ある
• デジタル出力(dout:0か1かの2段階)
– LED、モータなど
– 状態がシンプルで取扱が簡単
• アナログ出力(aout:0∼1の256段階)*2
– LED、モータなど
– 連続的な変化を扱うことができる
*2 実際にはPWMによる疑似アナログ出力
Funnel入門:マウスによる制御
コード例 6 マウスでI/Oモジュール上のLEDを制御( 01 ControlLEDByMouse)
import processing.funnel.*;
Gainer gainer;
void setup()
{
size(200, 200);
frameRate(30);
gainer = new Gainer(this, Gainer.MODE1);
gainer.autoUpdate = true;
}
void draw()
{
background(100);
}
Funnel入門:マウスによる制御
コード例 7 マウスでI/Oモジュール上のLEDを制御( 01 ControlLEDByMouse続き)
void mousePressed()
{
gainer.led().value = 1.0;
}
void mouseReleased()
{
gainer.led().value = 0.0;
}
Funnel入門:ボタンによる制御
コード例 8 ボタンでI/Oモジュール上のLEDを制御( 02 ControlLEDByButton)
import processing.funnel.*;
Gainer gainer;
void setup()
{
size(200, 200);
frameRate(30);
gainer = new Gainer(this, Gainer.MODE1);
gainer.autoUpdate = true;
}
void draw()
{
background(100);
}
Funnel入門:ボタンによる制御
コード例 9 ボタンでI/Oモジュール上のLEDを制御( 02 ControlLEDByButton続き)
void gainerButtonEvent(boolean pressed)
{
if (pressed) {
gainer.led().value = 1.0;
} else {
gainer.led().value = 0.0;
}
}
Funnel入門:aout 0にLEDを接続
Funnel入門:aout 0にLEDを接続
Funnel入門:アナログ出力の制御
コード例 10 ボタンでaout 0に接続したLEDを制御
// _02_ControlLEDByButtonの以下の部分だけを変更する
void gainerButtonEvent(boolean pressed)
{
if (pressed) {
gainer.analogOutput(0).value = 1.0;
} else {
gainer.analogOutput(0).value = 0.0;
}
}
Funnel入門:Gainer I/Oの入力について
入力には2種類ある
• デジタル入力(din:0か1かの2段階)
– スイッチなど
– 状態がシンプルで取扱が簡単
• アナログ入力(ain:0∼1の256段階)
– 出力電圧が変化するセンサなど
– 連続変化を扱うことができる
Funnel入門:ain 0にボリュームを接続
Funnel入門:ain 0にボリュームを接続
Funnel入門:ain 0にボリュームを接続
• 03 SimpleScopeを開いて実行
• ボリュームを回して変化を確認
• チャンネル数を2に増やす
• ain 1が不安定なのはなぜ?
• どうしてボリュームを回すと電圧が変わるの?
Funnel入門:抵抗分圧
Funnel入門:抵抗分圧
Funnel入門:サンプルをボリュームで制御
• 04 Treeを開く*3
• 変更を加えるために別名で保存
• Funnelを使うための準備
• mouseXをain 0の値で置き換える
*3 Topics/Fractals and L-Systems/Treeと同じものです
Funnel入門:ain 0に光センサを接続
Funnel入門:ain 0に光センサを接続
Funnel入門:ain 0に光センサを接続
• 改変した 04 Treeを再度実行
→ボリュームの場合と何かが違う?
• 03 SimpleScopeで入力の範囲を調べる
• Scalerをフィルタとして追加する
• 意図した通りになったかどうか確認
Funnel入門:Scalerの追加
コード例 11 Scalerを追加した 05 Tree
import processing.funnel.*;
Gainer gainer;
void setup()
{
size(400, 400, P3D);
...
gainer = new Gainer(this, Gainer.MODE1);
Filter f[] = {
new Scaler(0.3, 0.9, 0, 1, Scaler.LINEAR, true)
};
gainer.analogInput(0).filters = f;
}
Funnel応用:ainに加速度センサを接続
Funnel応用:ainに加速度センサを接続
Funnel応用:ainに加速度センサを接続
• 03 SimpleScopeを開く
• 表示するチャンネル数を3に増やす
• x, y, zそれぞれの軸の動きを確認
– 傾けてみる
– 振ってみる
Funnel応用:加速度センサの用途
• 動きの検出
• 傾きの検出
→なぜ加速度センサで傾きが検出できるの?
Funnel応用:傾きを検出する原理
Funnel応用:センサの出力から角度を求める
• フィルタで細かい動きを取り除く
• 03 SimpleScopeで変化幅を確認する
• -1から+1までにスケーリングする
• 逆sin関数を用いて角度に変換する
Funnel応用:加速度センサを使ってみる
• 05 RGBCube Mouseを開く*4
• マウスを動かして動作を確認する
• マウス操作を加速度センサに置き換える
*4 3D and OpenGL/Form/RGBCubeを一部改変
IAMAS Gangu Project - Work in Progress
“Sketching in Hardware”ワークショップ
小林茂(IAMAS:岐阜県立国際情報科学芸術アカデミー)
2008 年 12 月 27 日:AXIS Gallery

More Related Content

PDF
Arduinoをこれから始める人のためのArduino紹介スライドβ版
PPTX
平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測
PDF
ものづくりプロジェクトII 一日でわかるArduino入門
PDF
配布用Raspberry pi+arduino+scratchでフィジカルコンピューティング体験!
PDF
20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門
PDF
Gesture Workshop
PDF
Telematics Hackathon
PDF
au未来研究所ハッカソン
Arduinoをこれから始める人のためのArduino紹介スライドβ版
平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測
ものづくりプロジェクトII 一日でわかるArduino入門
配布用Raspberry pi+arduino+scratchでフィジカルコンピューティング体験!
20120519_qpstudy 2012.05 いやらしい@hasegawのI/O入門
Gesture Workshop
Telematics Hackathon
au未来研究所ハッカソン

Similar to Slides AXIS WS2 (20)

PDF
Lecture at University of Tsukuba
PDF
KOGEI & KAIT Funnel WS
PDF
Slides AXIS WS1
PDF
PDF
会津IT秋フォーラム2012での講演資料
PDF
フィジカルコンピューティング入門 USB-MIDIベースのPepper-Monakaを使う
PDF
Open-hardware and Japan
PDF
Japanino Workshop #3
PDF
Japanino Workshop #2
PDF
今すぐ始めるArduino
PPT
基板を作ろう
PDF
大阪市立大学大学院創造都市研究科ワークショップ
PDF
coma Study Room vol.2 Arduino Workshop
PPTX
micro:bit を使ってみる
PDF
D2Cコンテスト 2013 参加者トレーニング .NET Gadgeteer の活用
PPTX
Programming Is Fun
PDF
20110803
PDF
「明日からできる!面白ガジェットの作り方」 プロ生勉強会 第35回@DMM.comラボ
KEY
Androidロボットサミットin名古屋
PDF
ビジュアライゼーションの役割とUI開発のイノベーション(2)
Lecture at University of Tsukuba
KOGEI & KAIT Funnel WS
Slides AXIS WS1
会津IT秋フォーラム2012での講演資料
フィジカルコンピューティング入門 USB-MIDIベースのPepper-Monakaを使う
Open-hardware and Japan
Japanino Workshop #3
Japanino Workshop #2
今すぐ始めるArduino
基板を作ろう
大阪市立大学大学院創造都市研究科ワークショップ
coma Study Room vol.2 Arduino Workshop
micro:bit を使ってみる
D2Cコンテスト 2013 参加者トレーニング .NET Gadgeteer の活用
Programming Is Fun
20110803
「明日からできる!面白ガジェットの作り方」 プロ生勉強会 第35回@DMM.comラボ
Androidロボットサミットin名古屋
ビジュアライゼーションの役割とUI開発のイノベーション(2)
Ad

More from Shigeru Kobayashi (20)

PDF
Maker Faireを持続可能にするには?
PDF
Maker Faire Tokyo 2018
PDF
IoT Workshop in Macao
PDF
Maker Faire Tokyo 2015
PDF
テレマティクスハッカソン参加同意書
PDF
monoFab Ideathon Meeting
PDF
monoFabアイデアソンミーティング参加同意書
PDF
CEATEC JAPAN 2014
PDF
BLE Boot Camp
PDF
Fab MeetUp Vol.5
PDF
SK creator planet 2014
PDF
Solid 2014 kobayashi
PDF
情報学基礎:エレクトロニクス
PDF
Rebuilding the world, from the 'periphery'
PDF
Engadget電子工作部:インテルGalileoでガジェットを作ろう!
PDF
第2回iBeaconハッカソン
PDF
イノベーション創出のファシリテータとしてのデジタル工作機械を備えた市民工房
PDF
Rapid PrototypingからRapid Manufacturingへ
PDF
iBeaconハッカソン
PDF
IAMAS × 十六銀行:産学連携記念セミナー
Maker Faireを持続可能にするには?
Maker Faire Tokyo 2018
IoT Workshop in Macao
Maker Faire Tokyo 2015
テレマティクスハッカソン参加同意書
monoFab Ideathon Meeting
monoFabアイデアソンミーティング参加同意書
CEATEC JAPAN 2014
BLE Boot Camp
Fab MeetUp Vol.5
SK creator planet 2014
Solid 2014 kobayashi
情報学基礎:エレクトロニクス
Rebuilding the world, from the 'periphery'
Engadget電子工作部:インテルGalileoでガジェットを作ろう!
第2回iBeaconハッカソン
イノベーション創出のファシリテータとしてのデジタル工作機械を備えた市民工房
Rapid PrototypingからRapid Manufacturingへ
iBeaconハッカソン
IAMAS × 十六銀行:産学連携記念セミナー
Ad

Slides AXIS WS2