SFC デザイン言語WS(電子工作)第4回「センサーを使う」

115
Makoto Hirahara 第4回 センサーを使う 5.1 2015 DIY ELECTRONICS デザイン言語ワークショップ(電子工作)

Transcript of SFC デザイン言語WS(電子工作)第4回「センサーを使う」

Makoto Hirahara

第4回 センサーを使う

5.1 2015

DIY ELECTRONICSデザイン言語ワークショップ(電子工作)

2

今日の内容

・Analog Input

・光センサー(Cds)

・振動センサー(ピエゾ素子)

・温度センサー(LM35)

・距離センサー

・タッチポジションセンサー

・感圧センサー

・曲げセンサー

・傾斜スイッチ

・加速度センサー

・カラーセンサー

・人感センサー

・近接センサー

・静電容量センサー

・まとめ

ANALOG INPUT

4

入力方法

デジタルインプット

On(0V), Off(5V)を判定する。

スイッチ、傾斜スイッチ、人感センサ等。

digitalRead(ピン番号);

アナログインプット

0V~5Vの電圧を0~1023の数値として読み込む。

距離センサー、温度センサー、曲げセンサ等。

analogRead(ピン番号);

5

アナログインプットに使えるピン

アナログインプットに使えるのは、

ANALOG INの表示がある A0~A5の

ピンだけ。

6

サンプル回路

10kΩ(茶黒橙金)

7

サンプル回路

8

サンプルスケッチ

[ファイル]-

[スケッチの例]-

[01.Basics]-

[AnalogIReadSerial] を開く。

Arduinoに書き込む。

右上の虫眼鏡アイコンを押す。

9

実行

Cdsに光をあてると、

数値が変化する。

通信速度を9600に設定。

10

スケッチ解説

void setup() {

// initialize serial communication at 9600 bits per second:

Serial.begin(9600);

}

void loop() {

// read the input on analog pin 0:

int sensorValue = analogRead(A0);

// print out the value you read:

Serial.println(sensorValue);

delay(1); // delay in between reads for stability

}

PCとの通信(シリアル通信)を始める。

通信スピードをシリアルモニタの設定と合わ

せる。初期値は9600。

11

スケッチ解説

void setup() {

// initialize serial communication at 9600 bits per second:

Serial.begin(9600);

}

void loop() {

// read the input on analog pin 0:

int sensorValue = analogRead(A0);

// print out the value you read:

Serial.println(sensorValue);

delay(1); // delay in between reads for stability

}

A0ピンの電圧を読み取る。

0v~5v を 0~1023 として数値化。

12

スケッチ解説

void setup() {

// initialize serial communication at 9600 bits per second:

Serial.begin(9600);

}

void loop() {

// read the input on analog pin 0:

int sensorValue = analogRead(A0);

// print out the value you read:

Serial.println(sensorValue);

delay(1); // delay in between reads for stability

}

文字列、数値をPCへ送信する。

printは改行なし、printlnは改行あり。

13

抵抗分圧回路

電源の電圧から、抵抗の比率に応じた

電圧を発生させる回路。

可変抵抗で任意の電圧を得たり、Cds

などのセンサーの反応を取得できる。

出力電圧 =抵抗1 + 抵抗2

抵抗2x 電源電圧

14

Cdsの場合

Cdsは明るいほど抵抗が下がる。

明るい場所では1kΩ程度、

暗い場所では30kΩ程度となる。

0.45 = 10kΩ + 1kΩ

1kΩx 5v明

3.75v = 10kΩ + 30kΩ

30kΩx 5v暗

0.45v ~ 3.75v

15

可変抵抗の場合

5V OUT GND

可変抵抗の構造は、抵抗分圧回路。

中央のピンをAnalogReadで読み取れば、

回転量を知ることができる。

PIEZO

17

圧電スピーカー(ピエゾ素子)

電気を流すと振動するデバイス。

可聴域の周波数で電気を流すと振動して

音が鳴る。

逆に振動すると電気が発生することを利

用し、振動センサとして利用できる。

http://akizukidenshi.com/catalog/g/gP-01251/

18

配線図

1MΩ(茶黒緑金)

19

回路図

20

実行

[AnalogIReadSerial]が

Arduinoに書き込まれた状態で、

右上の虫眼鏡アイコンを押す。

ピエゾ素子を手で弾くと値が変

化する。

21

スケッチを改造

void loop() {

// read the input on analog pin 0:

int sensorValue = analogRead(A0);

// print out the value you read:

//Serial.println(sensorValue);

if( sensorValue > 100 ){

Serial.println("HIT");

}

delay(1); // delay in between reads for stability

}

// を先頭に付けて、コメントアウト

sensorValueが100以上の場合、

HITと出力

22

参考動画

https://youtu.be/jTcH8ao9IgQ

TEMPERATURE

24

温度センサー LM35

温度に応じて出力電圧が変わるセンサー。

1°C = 10mV

5v OUT GND

ピン配列は、平らな面から見て左から

5v, OUT, GND

http://akizukidenshi.com/catalog/g/gI-00116/

25

配線図

26

回路図

27

サンプルスケッチ

[ファイル]-

[スケッチの例]-

[01.Basics]-

[ReadAnalogVoltage] を開く。

Arduinoに書き込む。

右上の虫眼鏡アイコンを押す。

28

実行

1°C = 10mV(0.01V) なので、25°Cの場合、0.25と出力される。

ドライヤーなどで暖めると、値が変化する。

PROXIMITY SENSOR

30

距離センサー GP2Y0A21YK http://akizukidenshi.com/catalog/g/gI-02551/

距離に応じた電圧が出力される。 照射

された赤外線が反射して、PSD (ポジ

ション・センシング・ディテクター)に

入る角度から距離を算出する。

31

参考動画

http://youtu.be/yeHeHKUo4d8

32

配線

Vo = 出力電圧(ArduinoのA0などにつなぐ)

GND = グランド

Vcc = 電源電圧

33

配線図

34

回路図

35

距離センサー GP2Y0A21YK

推奨電源電圧 4.5V ~ 5.5V。

距離と出力電圧が、比例していない事に注意。

POTENTIOMETER

37

ポテンショメーター SoftPot https://www.switch-science.com/catalog/207/

5V OUT GND

12 3

指で押さえると内部の抵抗と電極が接触する。

1と3が抵抗でつながっていて、2の位置によっ

て抵抗値が変わる。 可変抵抗と同じ仕組み。

1 2 3

38

参考動画

39

配線図

10kΩ(茶黒橙金)

40

回路図

41

プルダウン抵抗

指で押さえていない状態は、A0がどこ

にも繋がっていないため、電圧が不安

定。

出力とGNDを抵抗でつなぐと、押さえ

ていない状態で確実に0Vになる。

42

プルダウン抵抗

スイッチが押されていな

い状態も入力が不定とな

るため、プルダウン抵抗

を入れる。

抵抗値は10kΩ程度。

PRESSURE SENSOR

44

感圧センサ https://www.switch-science.com/catalog/270/

圧力を加えると、抵抗値が下がる。

何もしないと1MΩ以上、 指で押して500Ω程度。

重量を量る場合は、

センサー面に均一に力がかかるようにする工夫が必要。

45

参考動画

http://youtu.be/IppZ308D-b8

46

配線図

10kΩ(茶黒橙金)

47

回路図

FLEX SENSOR

49

曲げセンサ http://www.switch-science.com/catalog/508/

曲げると抵抗値が変わる。まっすぐな

状態で10kΩ程度、ストライプの面を

外側にして、90°曲げると40kΩ程度。

熱に弱いので、ハンダ付けは注意が必

要。延長ジャンパワイヤーに接続し、

絶縁テープで固定すると安全。

参考: https://www.sparkfun.com/datasheets/Sensors/Flex/FlexSensor.pdf

50

参考動画

51

配線図

10kΩ(茶黒橙金)

52

回路図

TILT SWITCH

54

傾斜スイッチ RBS040200http://akizukidenshi.com/catalog/g/gP-01536/

傾けると中の金属球が転がって接点に触れ通電するスイッチ。

転倒などの判断に使用する。

55

参考動画

56

配線図

10kΩ(茶黒橙金)

330Ω(橙橙茶金)

57

回路図

58

サンプルスケッチ

[ファイル]-

[スケッチの例]-

[01.Basics]-

[Button] を開く。

Arduinoに書き込む。

ACCELEROMETER

60

3軸加速度センサモジュール MMA7361http://akizukidenshi.com/catalog/g/gM-06725/

XYZ軸それぞれの加速度を取得できる。

衝撃や落下を検知したり、重力加速度(下

方向への加速度)を利用し、傾きを得る

事もできる。

値は電圧としてアナログ出力される。

電源電圧は3.3V。5Vを繋がないよう

に注意。

参考: http://shokai.org/blog/archives/7701

61

ハンダ付け

1.ピンヘッダをピンの本数分切り離す。 2.まず一箇所だけ半田付けし傾きと位置を調整する。

3.残りのピンをハンダ付けする 裏側。ピンが垂直になるように

62

参考動画

http://youtu.be/VbW6zyqdpYY

63

配線図

64

回路図

65

サンプルスケッチ

授業ページから「サンプルスケッチ」

をダウンロードし、

accelerometerSampleを

Arduinoに書き込む。

AnalogReadでそれぞれの加速度を読

み込み、X,Y軸の傾きを計算している。

COLOR SENSOR

67

カラーセンサ HDJD-S822https://www.switch-science.com/catalog/870/

白色LEDの光を照射し、

反射光のRGBそれぞれの明るさを取得する。

この製品はRGBそれぞれを電圧として出力す

る。

68

参考動画

http://youtu.be/AYRd0CTWcVM

69

色味の再現性

70

配線図

71

サンプルスケッチ

サンプルスケッチをDLする。

HDJD_S822_QR999_Color_Sensor.pde

拡張子を.inoに変更し、

ファイルと同じ名前のフォルダを作り、

その中に入れてからArduinoで開く。

72

サンプルスケッチ

R,G,B のアウトプットをそれぞれ

analogReadで取得している。

red = analogRead(redpin) * 10;

green = analogRead(greenpin) * 14;

blue = analogRead(bluepin) * 17;

色によって感度が違うため、補正値を掛け

て調整している。

73

ゲインの調整

// Set the gain of each sensor

digitalWrite(GSR1, LOW);

digitalWrite(GSR0, LOW);

digitalWrite(GSG1, HIGH);

digitalWrite(GSG0, LOW);

digitalWrite(GSB1, HIGH);

digitalWrite(GSB0, HIGH);

GSXXはGainSelection。

各色High/Lowの組み合わせで、

ゲインを4段階調節できる。

0:LOW、1:LOWで最大、

0:HIGH、1:HIGHで最小。

COLOR SENSOR 2

75

カラーセンサ ATD3200販売サイト

http://www.aitendo.com/product/9550

制作記事

http://arms22.blog91.fc2.com/blog-entry-215.html

ライブラリ

http://dl.dropbox.com/u/14188987/isweb/arduino/ColorSensor001.zip

データシート

http://aitendo3.sakura.ne.jp/aitendo_data/product_img/sensor/colorsensor-

TCS3200D/ TCS3200-E11.pdf

76

黒い物を置いて押すと

黒を設定

白い物を置いて押すと

白を設定

実際は基盤が大きい

ので、大きなブレッド

ボードを使う。

77

参考動画

https://youtu.be/JsbUcrySBMw

PASSIVE SENSOR

79

人感センサ NaPiOn(ナピオン)シリーズhttp://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=5A2C-NNGN

温度の変化に応じてセラミックに帯電する電荷が変化

する現象(焦電効果)を利用し、人が発する赤外線の変化

を検知するセンサー。

NaPiOnシリーズは、検出距離5m・検出範囲水平100°

垂直82°の標準検出タイプに加え、微動タイプ、スポッ

ト検出タイプ、10m検出タイプがある。

スイッチのように機能し、人を感知すると通電する。

スポット検出タイプ

10m検出タイプ

80

参考動画

http://youtu.be/rVnE_900WvI

81

配線図

10kΩ(茶黒橙金)

330Ω(橙橙茶金)

82

回路図

83

サンプルスケッチ

[ファイル]-

[スケッチの例]-

[01.Basics]-

[Button] を開く。

Arduinoに書き込む。

PHOTO INTERRUPTER

85

フォトリフレクタ・フォトインタラプタ

赤外線LEDと受光素子が一体となった物体の接近・通過を検知するセンサー。

形状の違いで反射型と透過型の2タイプがある。

反射型(フォトリフレクタ) 透過型(フォトインタラ)

86

フォトリフレクタhttp://akizukidenshi.com/catalog/g/gI-00276/

反射型はLEDと受光素子が同じ向きに

セットされ、対象物に反射した光を検

知する。

物体の有無の検知のほかに、対象の色

による反射の違いを利用し、明るい色

か暗い色かを判断する事もできる。

ライントレーサーなどに使用。e.g. http://www.ijh.shibaura-it.ac.jp/robot/tracer/

87

フォトインタラプタhttp://akizukidenshi.com/catalog/g/gP-05310/

透過型はLEDと受光素子が向かい合わ

せに配置され、対象が隙間を遮った事

を検出できる。

平行移動する物の位置を測定したり、

回転体に付けた遮蔽物の通過回数をカ

ウントする事で、回転数を計測する。

e.g. http://www.mk0.enat.jp/solar_car.html

88

参考動画

http://youtu.be/IJu8CHyrmRg

89

配線図

10kΩ(茶黒橙金)トランジスタ用

330Ω(橙橙茶金)LED用

90

回路図

91

サンプルスケッチ

[ファイル]-

[スケッチの例]-

[01.Basics]-

[AnalogIReadSerial] を開く。

Arduinoに書き込む。

右上の虫眼鏡アイコンを押す。

CAPACITIVE SENSOR

93

静電容量センサ

人体が近づくと静電容量(電気を貯める能力)が変化する。電気の溜まる時間を

計測する事で静電容量がわかるので、人体の接近を検出できる。電気を通す素

材であれば、遮蔽物があってもセンシングできるのが特徴。

受信部

アルミホイルを50mm x 50mmくらいの大きさに切り、

ジャンパワイヤをテープで付ける。大きさにより感度

が変わる。また、入力とホイルの間に入れる抵抗によっ

ても感度が変わる。実際の用途に合わせて調整が必要。

94

参考動画

http://youtu.be/0IuiHRBszs0

95

配線図

この抵抗値によって感度が変わる。

1MΩ:短距離

10MΩ:数十センチ

96

回路図

Foil

97

ライブラリ

http://playground.arduino.cc/Main/CapacitiveSensor

98

ライブラリのインストール(Mac)

DLしたファイルを解凍して「CapacitiveSensorDue」を

[Documents(書類)]-[Arduino]-[libraries]にコピーする。

[libraries]フォルダが無い場合は、自分で作って入れる。

99

ライブラリのインストール(Windows)

DLしたファイルを解凍して「CapacitiveSensorDue」を

[MyDocuments]-[Arduino]-[libraries]にコピーする。

[libraries]が無い場合は、自分でフォルダを作って入れる。

100

サンプルプログラム

Arduinoを再起動。

[ファイル]-

[Examples]-

[CapacitiveSensorDue]-

[CapacitiveSensorDueSketch] を開く。

Arduinoに書き込み、

右上の虫眼鏡アイコンをクリック。

SUMMARY

102

通電する・しないが切り替わるもの

タクトスイッチ、傾斜スイッチ、人感センサーなど

プルダウン抵抗を入れて、 2~13ピンに繋ぐ。

digitalRead()で値を読み取る。

103

抵抗値が変化するもの

可変抵抗、Cds、ポテンショメーター、

圧力センサ、曲げセンサ等

抵抗分圧回路を使って、

Vout = 出力をA0~A5に繋ぎ、

analogRead(); で読み取る。出力電圧 =

抵抗1 + 抵抗2

抵抗2x 電源電圧

104

出力電圧が変化するもの

温度センサ、距離センサ等、

カラーセンサ等

出力をA0~A5に繋いで、

analogRead();で読み取る

105

通信を行う物

SPI

SCK(シリアル・クロック)と単方向のSDI、SDOの3本の信号線で通信する

同期式のシリアル通信。

SPIライブラリを使用する。

I2C

I2CバスとはSCL(シリアル・クロック)と、双方向のSDA(シリアル・デー

タ)の2本の信号線で通信する同期式のシリアル通信。

Wireライブラリを使用する。

THEME

107

最終課題テーマ

寄生・共生するもの

周囲との関係性の中で現れてくる価値を考える。

・既存のシステムをハック

・手動で扱っていた物を自動化

・相互に影響し合う仕組み

108

例えば…

時計 フォトリフレクタ

+

109

例えば…

一輪車 加速度センサー

+

110

例えば…

ディスプレイ カラーセンサー

+

111

Bright Blind (ブラインド+無機LE)

112

ルンバ + LED

113

ノックマン(明和電機)

ゼンマイを巻くと自分の頭を自分の手でたたく。

手の向きを変えると、隣の頭をたたく。

NEXT

115

次回の準備

• PWMでLEDをふわっと光らせる

• 駆動部品