狠狠撸

狠狠撸Share a Scribd company logo
Make @ Osaka
Making Things Talk発売記念レクチャー
はじめてのArduino
小林茂(kotobuki [at] yapan.org)
2008 年 11 月 22 日:共立電子産業株式会社?セミナールーム
自己紹介
? 1970年愛知県名古屋市生まれ
? 電子楽器メーカー(1993~2004)
– サウンドデザイナー
– 技術研究所
– ソフトウェアエンジニア
? IAMAS(2004~)
– フィジカルコンピューティング
– インタラクションデザイン
このセッションの内容
? フィジカルコンピューティングとは?
? Arduinoをスタンドアロンで使ってみる
? ArduinoをPCとつないで使ってみる
? ArduinoやGainerに関連した話題
フィジカルコンピューティングとは?
? ニューヨーク大学のITP*1
でTom Igoeらが
中心となって教えているコースの名前
? インタラクションデザインを教えるための
方法の1つ
? コンピュータが理解したり反応できる人間の
フィジカルな表現の幅をいかに増やすか
? デザインやアート教育の1つの分野として定着
*1 Interactive Telecommunications Program
関連:ITP Spring Show 2008
概要:
? ITPで学ぶ学生の展覧会で毎年2回開催
? 5月12日から13日まで開催
? http://itp.nyu.edu/shows/spring2008/
フィジカルコンピューティング関連書籍
Physical Computing
Sensing and Controlling the Physical World with Computers
Dan O’Sullivan and Tom Igoe(Course Technology Ptr?2004年)
フィジカルコンピューティング関連書籍
Making Things Talk
Arduinoで作る「会話」するモノたち
Tom Igoe 著?小林 茂 監訳?水原 文 翻訳(オライリー?2008年)
Making Things Talkの紹介
扱っているテクノロジー
? Arduino
? Processing / PHP
? Ethernet
? Bluetooth
? IEEE 802.15.4 / ZigBee
? RFID
? 基本的なCV
Making Things Talkの紹介
さまざまなプロジェクト
? モンスキーポン
? ネットワークに接続された猫
? ネットワーク大気清浄度計
? 太陽電池のデータをワイヤレス中継
? デジタルコンパスを使って進路を知る
? ウェブカムを用いた2次元バーコード認識
? RFIDを使ったホームオートメーション
フィジカルコンピューティング関連書籍
Getting Started with Arduino
The open source electronics prototyping platform
Massimo Banzi(O’Reilly Media?2008年)
フィジカルコンピューティングとは?
一般的なPCから見た人間は?
? キー情報(ASCIIキーボードから)
? マウス情報(1つのマウスから)
Alto (1973)
出典:http://toastytech.com/guis/
フィジカルコンピューティングの構成要素
? センサ
(例:光、圧力、音、温度、加速度など)
? アクチュエータ
(例:LED、モータ、ソレノイドなど)
? プロセッサ
(例:マイコン、I/Oモジュール+PCなど)
→ものすごく簡単にまとめると
?プログラミング+電子工作
フィジカルな世界とつなぐ方法
マイコンのみ
a
b
c
d
A
B
C
D
マイコン
microcontroller
program
a0]=ain.o;
aout.1 = 255;
フィジカルな世界とつなぐ方法
マイコン+PC
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;
フィジカルな世界とつなぐ方法
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;
Arduinoとは?
? Hernando Barrag?anがIDII*2
にいた時に
開発を始めたWiringがベース
? 電子回路をプロトタイピングするための
オープンソースのプラットフォーム
? IDEとArduino I/Oボードから構成される
*2 Interaction Design Institute Ivrea
Wiring
写真:SparkFun Electronics
Arduino Duemilanove
写真:SparkFun Electronics
Arduino IDE
オープンソース?ハードウェアとは?
? ハードウェアのデザインデータがオープン
– 回路図
– 基板レイアウト
? ライセンスに基づいて自由に改変できる
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
関連:Sketching in Hardware 3
概要:
? フィジカルコンピューティングに関する会議
? 2008.7.25~27の3日間開催
? 参加者は約40名
? 全員が発表
? 濃密な情報交換とコミュニティ作り
? 最後に「Sketching in Hardware」を実践
電圧~電流~抵抗
電気の流れは水の流れのようなもの
? 電圧
– 2点間の高度(電位)の違い
– 基準点が必要(GND)
– 単位はボルト(V)
電圧のイメージ図
低高
電圧~電流~抵抗
電気の流れは水の流れのようなもの
? 電流
– 電圧の高いところから低いところに流れる
– 単位はアンペア(础)
電流のイメージ図
少多
電圧~電流~抵抗
電気の流れは水の流れのようなもの
? 抵抗
– 電流の流れにくさ
– 単位はオーム(?)
抵抗のイメージ図
低 高
電圧~電流~抵抗
よく出てくる補助単位の例
? 1,000倍を表すキロ(例:1k?)
? 1,000,000倍を表すメガ(例:1M?)
? 1
1,000 を表すミリ(例:1mA)
? 1
1,000,000 を表すマイクロ(例:50?A)
回路図ってなに?
回路図ってなに?
回路図は電子回路の設計図
? シンボルで表した電子部品の接続を示したもの
? シンボルに若干のバリエーションはあるが、
基本的には全世界共通
電源の回路図シンボル
+5V GND
スイッチの回路図シンボルと部品例
抵抗器の回路図シンボルと部品例
可変抵抗器の回路図シンボルと部品例
尝贰顿の回路図シンボルと部品例
Arduino入門
Make日本語版Volume 04
特集「Sketchーハードウェアでスケッチする」
オライリー?ジャパン編(オライリー?ジャパン?2008年)
Arduinoの各部紹介
デジタル入出力 x14
アナログ入力 x6GND+5V
GND
比較:Gainer vs Arduino
Gainer Arduino Duemilanove
入出力ピン 16 20(RX/TXを含む)
A/D 8(8bit) 6(10bit)
PWM 8(8bit) 6(8bit)
ユーザLED 1 0
ユーザLED 1 1(D13兼用)
オープンソース Yes Yes
スタンドアロン No Yes
重点 シンプルさ 拡張性
ハードウェアにおける「Hello World!」
? LEDを一定の間隔で点滅させる
Examples/Digital/Blink
? 诲别濒补测()の値を変更して间隔を変えてみる
Arduinoを用いるメリットは?
? シンプルに記述できる
? 非プログラマでも取り組みやすい
? 多くの利用例が公開されている
? 登場する「おまじない」が少ない
比較:ArduinoでのLED点滅
コード例 1 Arduino言語でのLED点滅
int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
比較:通常のC言語でのLED点滅
コード例 2 通常のC言語でのLED点滅の例
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/delay.h>
#define CLK_CALIB_DATA (FLASHEND - 3)
void init() {
uint8_t osccal_data = pgm_read_byte(CLK_CALIB_DATA);
if (osccal_data != 0xff) OSCCAL = osccal_data;
DDRB = 0xff;
DDRD = 0xff;
return;
}
比較:通常のC言語でのLED点滅
コード例 3 通常のC言語でのLED点滅の例(続き)
void delay_ms(uint16_t t) {
while (t--) _delay_ms(1);
}
int main(void) {
init();
for (; ;) {
PORTB = 0xff;
delay_ms(500);
PORTB = 0x00;
delay_ms(500);
}
return 0;
}
Arduinoを用いるデメリットは?
? C/C++ベースなのでサイズが大きくなりがち
? 実行速度の面で不利な場合もある
? デバッガは利用できない
スケッチをアップロードする
スイッチでLEDをコントロールする
+ ? + ?
ブレッドボードってなに?
? 部品の足を穴にさすことで電子回路を形成
? はんだ付け不要
– 部品を再利用できる
– 回路を組み間違えてもやり直しできる
– 耐久性にはやや注意が必要
ブレッドボードの構造
? 横方向のブロックは背面で接続
? 縦方向のブロックは未接続
? 电源用のエリアは専用に用意されている
参考:ジャンプワイヤの色分け
? 赤:電源の+側(+5V)
? 黒:電源のー側(GND)
? 白?青?黄:センサとの接続など
もう少しいろいろ試してみよう
? ボリュームの値でLEDの点滅速度を変える
Examples/Analog/AnalogInput
? 光センサの値でLEDを点灯/消灯する
ArduinoとPCをつなぐ方法
? 有線
– シリアル
– USB
– Ethernet
? 無線
– Bluetooth
– IEEE 802.15.4 / ZigBee
どのようにデータをやり取りするかについて
取り決め(=プロトコル)が必要
プロトコル:Firmata
http://www.arduino.cc/playground/Interfacing/Firmata
? Hans-Christoph Steinerが提案
? MIDIを参考にしたプロトコル
? Arduino 0012から標準に
Firmataに対応したPC側のライブラリ
? Pd (aka Pure Data)
? Processing
? Funnel
? Linux C++
? C++/openFrameworks
Funnelとは?:背景
? Gainerはいわばシンプルなドライバ
→複雑な現実世界を扱うにはもう少し高次の
?レベルが必要なのでは?
? 全ての用途をカバーできるツールキットはない
→ツールキットの使い分けは容易ではない
? 有線接続だと体験に制限がでてしまう
→簡単に利用できる無線接続が必要
Funnelとは?:コンセプト
? 単純で透明
? スケッチ~プロトタイプまで使える
? デザイナーとエンジニアの「共通言语」
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の特徴
? 入出力をより簡単に扱うためのフィルタ
– ローパス、ハイパス
– アナログ入力を設定した閾値で分割
– スケーリング
– オシレータ
? 複数の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
FIO: Funnel I/O Module v1.3
? LilyPad v1.6がベース
? 3.3V動作
? Arduino互換機(動作速度は8MHz)
? XBee無線モデム(802.15.4またはZigBee)
? 充電器内蔵
? シールドでさまざまな機能を拡張
贵滨翱:使用例(スタンポロン)
贵滨翱:使用例(スタンポロン)
贵滨翱:使用例(スタンポロン)
FIO:現状について
? FIO v1.0をベースに実際に使用して検証
? Nathan Seidle*3
と共同で改良
? 12月上旬頃SparkFun Electronicsから発売
*3 SparkFun ElectronicsのCEO
さまざまな無線通信の方式とその特徴
Wi-Fi Bluetooth 802.15.4 / ZigBee
IEEE規格 802.11b 802.15.1 802.15.4
通信距離 約100m 約10m 約30m
最大通信速度 11Mbps 1Mbps 250kbps
接続ノード数 32 7 65535
電池寿命 数時間 数日 数年
ネットワーク構成 スター型 スター型 スター型?メッシュ型など
主な用途 無線LAN 携帯電話 セキュリティ機器
表1 代表的な2.4GHz帯無線通信方式の比較
Point to Point
Point to Multi
Star
802.15.4 Coordinator
802.15.4 End Device
IEEE 802.15.4で可能な構成
IEEE 802.15.4デバイスの種類
? コーディネータ(1個)
? エンド?デバイス(复数)
Mesh
Coordinator
End Device
Router
ZigBeeで可能となるクラスタツリー/メッシュ構成
ZigBeeデバイスの種類
? コーディネータ(1個)
? ルータ(複数)
? エンド?デバイス(复数)
XBeeの特長
? IEEE 802.15.4とZigBeeの2つのモデル*4
– XBee 802.15.4
– XBee ZB ZigBee PRO
? 比較的低価格(国内モデルで約3500円)
? 日本国内でも利用できるよう認証取得済み
? 利用方法を解説した書籍がある
*4 モデル間での相互接続性はない
その他:Arduinoに関連した話題
? Propeller
? RAD
? Instructables
その他:Arduinoの耐久性について
? 過電流などの保護回路は内蔵している
? AVRベースなので比較的丈夫
? 接続ミスなどでブートローダが壊れることは
ある
? FT232RLはベストではないかもしれないが
安定している
Arduinoに関して注目していること
? さまざまな立場からのコミット
– ホビーユーザ
– エンジニア
– デザイナー
– アーティスト
– 教育関係者
? 基礎→応用ではなく応用→基礎
? 日本独自のマイコン文化との接触と発動?
? Arduinoは現代のApple ][か?
質疑応答など
? Arduinoについて
? フィジカルコンピューティングについて
? Making Things Talkについて
? その他
Make @ Osaka
Making Things Talk発売記念レクチャー
はじめてのArduino
小林茂(kotobuki [at] yapan.org)
2008 年 11 月 22 日:共立電子産業株式会社?セミナールーム

More Related Content

Make @ Osaka