SUACメディアデザインウィーク
「フィジカル・コンピューティング」ワークショップ
2014年11月23日(日) 10:45〜12:15
スケッチングとは? SUACの事例紹介など
長嶋洋一
1. スケッチングとは
- 過去の「ものづくり(デザイン)」
- 新しい「ものづくり(デザイン)」
- 企画
- 実験・設計・試作 ← 「スケッチング」〜「実際に動く試作モデル」による検討
- 制作・製造・量産
- 「ものづくり(デザイン)」の2つのスタイル
- ニーズ指向 - 「こういうテーマを追求したい」
→ 実現する方法を考える
- シーズ指向 - 「こんな新しい技術/モノ/センサ/システム等がある」
→ 作品として活用できないか考える
- 「ものづくり(デザイン)」の3つの階層
- ハードウェア - 電子回路、機構、筐体
- ソフトウェア - いわゆる「プログラム」 - 何度でも書き換え更新/改訂が可能
- ファームウェア - 不揮発メモリ(FlashEEPROM)に書き込まれたプログラム ※スケッチング技術の基盤
(参考)メモリのいろいろ
- RAM - Random Access Memory
- 無限に読み書きできるメモリ
- 電源を切ると情報は消える(保持されない)
- 一般のコンピュータ機器の主記憶
- データはここに置かれて処理される
- OSやプログラムも記憶装置からここにロードされる
- 「ソフトウェア」はここ
- ROM - Read Only Memory
- 半導体製造時にデータ/ブログラムを書き込んだメモリ
- 読み出し専用、電源を切っても情報は保持される
- 書き換えは出来ない
- 電卓、時計、・・・
- PROM - Programmable ROM
- 読み出し専用、電源を切っても情報は保持される
- 製造時にはデータが書き込まれていなくて、1回だけ特殊な機構で書き込めるROM
- 少量多品種生産、特殊機器など → 現在では消えた
- EPROM - Erasable PROM
- 読み出し専用、電源を切っても情報は保持される
- 特殊な機構により情報を消去して再度(上限あり)書き込みできるPROM
- 紫外線により消去するのがUV(UltraViolet)EPROM、パッケージにガラス的があり紫外線消去機に入れて消去
- 電気的に消去するのがEEPROM - Electronic EPROM、特殊な電圧と特殊なモードで書き込む
- Flash EEPROM
- 読み出し専用、電源を切っても情報は保持される
- フラッシュメモリノプロセスを使ったEEPROM、現在「ファームウェア」と言えばこれ
- 消去機に入れる必要がなく基板上でもチップ内でも外部から消去/書き込みできる
- 携帯のアドレスはこれで記憶している
- USBメモリ、SDメモリカード、SSD(ソリードステートドライブ)等も中身は全てこれ
- マイコンではチップ内のここにファームウェアを書き込む
- オープンソースの文化
- 「皆んなでHAPPYになろう」
- (C)で縛られない → 一例は(CC) Creative Commons
- クラウド、ユビキタス、モバイル、コンテンツ、n次創作、・・・
- オープンソース・ソフトウェア
- オープンソース・ハードウェア
- 3Dプリンティングも同じ流れに
- ファウンドリ、クラウドファンディング
- ソフトウェア・プラットフォームと開発環境
- Max → jitterサンプル
- Flash (ActionScript)
- Processing (Java)
- .Net (?)
- Xcode (C++)
- gcc (C)
- 各マイコン用IDE
- 詳しくは以下もどうぞ
- スケッチング/プロトタイピングへの警鐘
- 画像認識(CV: ComputerVision, Kinect, WebCamera・・・)もいいけど、物理的センサのリアリティも忘れないで
- ブレッドボード - 信頼性がまったく無い、ライブのシステムに使う非常識はなんとかならないか(^_^;)
- P板屋 - 特急設計サービス、特急製造サービスは活用できる(台湾・香港・韓国が凄い)
- ハンダ付け - この王道を忘れてはいけない(^_^)
- インタラクティブなシステム実現の例
- 菅内さん作品に向けての実験の例
- SUAC碧風祭・メディア造形学科企画 「お化け屋敷」の事例
- 碧風祭2011「お化け屋敷」
- 碧風祭2013「お化け屋敷」
- 碧風祭2014「お化け屋敷」
- センサを使うための定番Max/MSP/jitterのテクニック集
- 値を見たい → マルチスライダー
- 値を反転したい → 数値演算オブジェクト
- 変化イベントを検出したい → "change"オブジェクト
- 「ある範囲の数値」で識別 → "if"オブジェクト
- 一定期間、反応をマスクする「不応期」のテクニック → "switch"オブジェクト
- 値の範囲を変更する → "scale"オブジェクト
- とびとびの値を滑らかに繋ぎたい → "line"オブジェクト
- 平均的な値を取り出したい → "mean"オブジェクト(移動平均)
- あとは → 以下もどうぞ
2. 色々なハードウェア・プラットフォーム
- Gainer
- PCと実世界とのインターフェース専用(スタンドアロン無し)
- Max, Flash, Processingに対応
- いくつもの動作モードがある
- シリアル通信は出来ない
- 「+5V」系
- 活用システム例
- 詳しくは小林さんのgainerサイトをどうぞ(^_^)
- Arduino
- PCナシでスタンドアロン・システムを実現
- いろいろなファミリがある
- フリーのIDE、サイトにはサンプル多数あり (C言語)
- 外部インターフェースのための増設基板(シールド)多数、XBeeも使える
- アナログ入力6ポート
- ディジタル出力6ポート
- PWM出力6ポート
- XBee通信は出来る(可能な範囲にプロトコルを定義すればよい)
- MIDI送信は出来るがMIDI受信は出来ない ※データを落とすのは音楽用途には致命的(^_^;)
- 「+5V」系
- 活用システム例
- ふわり (スタンドアロン、音センサに反応して電球の輝度制御)
- hikiribi (ガラスとアクリルで制作したデスクランプ。目覚めてランプに息を吹きかけると、次第に明るくなっていく)
- Coloration (色センサ情報をArduinoがシリアルで受けてD/AしてGainerに渡してFlashが利用)
- ジャミーズ娘+ (MIDI出力→Maxへ)
- 日本の音風景 (XBeeでワイヤレス伝送→Maxへ)
- 三味線の兵(つわもの) (XBeeでワイヤレス伝送→Maxへ)
- パラパランプ (スタンドアロン、ボリュームを回すとステッピングモータを制御)
- 詳しくはArduinoサイトをどうぞ
- Arduino日記もどうぞ
- Firmata(+Maxuino)
- PCと実世界とのインターフェース専用(スタンドアロン無し)
- Firmataとは「ArduinoをGainer化するオープンソース・ファームウェア」のこと
- FirmataはUSBシリアル経由でいろいろな環境に対応している
- Gainerで不足する入出力をArduinoファミリの機能に拡張できる
- 「Firmataの走るArduino」をMaxからGainerのように扱うのがMaxuino
- シリアル通信は出来ない
- 「+5V」系
- 活用システム例 (ClydeとLittleBitsArduinoをFirmata化してMaxuino経由で使っています)
- 詳しくはFirmataサイトとMaxuinoサイトをどうぞ
- 制作例はこちらもどうぞ
- Propeller
- PCナシでスタンドアロン・システムを実現
- オープンソース・コミュニティはあるがParallax社だけ。「マイコン界のApple」
- 内部に8個のCPU(80MHz)があり、並列動作(割り込み無し)
- フリーの専用IDE(Windows)、さらにフリーIDEのbst(Windopws/MacOSX/Linux)あり
- 専用言語spinとアセンブラで超強力
- アナログ入力は最大で14ポート可能
- ディジタル出力は最大で28ポート可能
- PWM出力は最大で28ポート可能
- シリアル送受信は最大で同時に6チャンネル可能、MIDIの受け落としナシ
- 「+3.3V」系
- 活用システム例
- 詳しくはPropellerサイトをどうぞ
- Propeller日記もどうぞ
- Raspberry Pi
- PCナシでスタンドアロン・システムを実現
- ローコストのLinuxボード、いろいろなファミリがある
- USB、イーサネット、ビデオ出力、シリアル通信、汎用I/Oなど搭載 - 単体でパソコン/サーバとなる
- CPUは800MHzで高性能、ただし大電流の電源が必要なため事実上は電池動作不可
- Unixの開発環境、gcc
- 簡易言語PythonもOK
- 「+3.3V」系
- 動作例
- 詳しくはRaspberry Piサイトをどうぞ
- Raspberry Pi日記もどうぞ
- mbed
- PCナシでスタンドアロン・システムを実現
- ARM CPUのオープンソース・コミュニティ
- いろいろなファミリがあり、I/O機能はマイコンによって千差万別
- フリーのオンラインIDE、サイトにはサンプル多数あり (C言語)
- Arduino互換シールドピン対応も多い(電圧が違うので注意)
- シリアル送受信は同時に複数可能、MIDIの受け落としナシ
- 現在、長嶋がCQ出版「インターフェース」誌の特集記事を執筆中(^_^;)
- 「+3.3V」系
- 動作例
- 詳しくはmbedサイトをどうぞ
- mbed日記もどうぞ
- AKI-H8
3. 代表的な入出力/ホスト通信の方式とその対応法
- ディジタル入力
- 電源/信号電圧(H)とGND(L)とのいずれかをとる
- ディジタルICの出力を接続する
- スイッチを使う場合にはpull-up回路を使用する
- クロック(周波数)出力タイプのセンサは低周波数なら対応可能
- アナログ(電圧)入力
- 電源電圧とGNDとの間の電圧を連続値として入力
- 規定範囲外の電圧は素子破壊するので厳禁(保護回路)
- サンプリング時間に注意(→S/H)
- 電源供給・電圧出力型センサは直結
- 電圧生成型センサもレンジを検討して直結
- 抵抗値が変化するセンサは分圧抵抗を使用する
- 交流信号は規定範囲に変換する回路が必要
- ディジタル出力
- 電源/信号電圧(H)とGND(L)とのいずれかを出力
- LEDのドライブは電流供給能力に注意
- LEDのドライブには正論理と負論理がある
- モーター/リレー等は専用のドライバ素子を使用
- 「R-2Rラダー」を使用するとアナログ電圧出力できる(ビット数の精度で)
- 疑似アナログ(PWM)出力
- LED点灯でMaxとゼロの中間値を表示する
- 細かく時分割したON/OFFの比率(デューティ比)を制御 - PWM Pulse Width Modulation
- モーター等には適さない
- 最小値あたりでチラチラして、最大値近くでは視覚的には飽和する
- アナログ電圧出力
- GainerやArduinoでは出ない
- AKI-H8では出る
- ディジタル出力に「R-2Rラダー」を使用すると出来る
- シリアル通信
- 電圧制御システムのコントロール用に使用
- シリアル通信 - シリアル/RS232C/USBシリアル
- Max, Flash, Processingが対応
- GainerやFirmataでは出来ない(ホストとのUSB通信に使うため)
- 昔のパソコンでは「RS-232-C」としてモデムなどと通信した
- PC側はシリアルでも、ハードウェアとしてUSBを経由するドライバが充実している
- Maxでは「serial」オブジェクトで対応
- 活用システム例 - 「RFID」や「カラーセンサ」や「加速度センサ」や「超音波距離センサ」がシリアル対応
- シリアル通信 - MIDI
- Max, Processingが対応
- 電子楽器の標準通信形式として1980年代前半に規定されいまだ現役
- 1991年に登場したMaxがフルサポートしていて相性は最高
- 世界中の電子楽器だけでなく、パフォーマンス装置/照明機器なども対応
- MIDI規格により機器は電気的に分離されケーブルは最長15メートル(イーサネットで500m延ばす機器あり)
- 自作の場合、インターフェース回路はこれでOK
★
★
★
★
- 詳しくは「MIDIについて」をどうぞ
- 活用システム例 (多くがMIDI利用)
- シリアル通信 - XBee
- ネットワーク通信 - OSC
- Max, Flash, Processing、Raspberry Piが対応
- イーサネットを経由してあらゆるシステムが通信するためのオーブンソース・プロトコル
- 活用システム例
- Octagon (8台のPCの動画をフレーム単位で完全同期)
- 二人はウラハラ (3台のPCの動画切り替えをネットワーク連携で実現)
- インスタレーション作品「はやくスシになりたい」をOSC経由で3台のPCで同時動作版にしてオープンキャンパス等で展示
★
★
★
- インスタレーション作品「おはなしパネル」をOSC経由で3台のPCで同時動作版にしてオープンキャンパス等で展示
★
★
★
- 詳しくはOSCのサイトをどうぞ
- こちらもどうぞ(ProcessingとOSC)
- こちらもどうぞ(SuperColliderとOSC)
- こちらもどうぞ(Raspberry PiとOSC)
4. 「多数」の入力/出力に拡張する方法
- スリーステートゲート : ディジタル入力の拡張
- 入力をスルーするだけのバッファゲート
- 制御入力Gにより出力禁止にすると、出力がハイインピーダンス(絶縁)状態になる
- 多数の出力を結線することが出来る、ただし出力が許可されるのは必ず排他的にどれか一つだけ
- 74HC245
- ラッチ : ディジタル出力の拡張
- 入力はクロック入力CKの立ち上がりで保持(記憶)されて出力される
- CKが変化しなければ入力は変化しても出力は変わらない
- ある信号線を多数に分配してそれぞれ必要なところでラッチすることで多重化
- 74HC574
- デコーダ : 多チャンネルを管理するカギ
- 8ビット等のまとまりを1つのアドレスとして管理
- アドレスの2進状態を解読して排他的な選択信号を与える
- 一般的に負論理である事に注意
- 74HC138/139
- アナログスイッチ : アナログ入力/アナログ出力の拡張
- 規定範囲内の信号電圧であることを厳守する
- 半導体スイッチなので抵抗がそこそこある事に注意
- 簡単なシステムではとても重宝する
- 74HC4053/4052/4051
- 詳しくはセンサとマイクロエレクトロニクスの概要をどうぞ(^_^)
- 実際にマルチホストマイコン(Gainer、Arduino、AKI-H8。Propeller)に対応して製作した汎用入出力拡張基板「SUACボード」の開発物語もどうぞ(^_^)
5. インスタレーションやインタラクティブ展示の例
- 時間の関係で過去の作品事例の紹介はごく一部ですので、後日、以下のリンクを参照して下さい