2015/05/23 シニア技術者プログラム第3弾 「第二回iot勉強会&交流会」 ...

24
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. Arduino ででででででででで 2015 で 05 で 23 で でで IT ででででででででででで でででで でででででででででで でででで でででででででででで でででで

Upload: aitcjp

Post on 14-Aug-2015

136 views

Category:

Documents


1 download

TRANSCRIPT

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

Arduino で簡単回路作成実演

2015年 05月 23日先端 IT活用推進コンソーシアム

クラウド・テクノロジー活用部会 リーダー アドソル日進株式会社 荒本道隆

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

• Arduino の実演販売風– ハンズオンは、デバイスの準備が大変

• 経験を積んだ人なら、見ただけで分かるはず– ライブコーディングならぬ、ライブ回路作成

このセッションについて

2

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

Arduino とはArduino はスタンドアロン型のインタラクティブデバイス開発だけでなく、ホストコンピュータ上のソフトウェア(例えば、 Adobe Flash、 Processing、 Max/MSP、 Pure Data、 SuperCollider)で制御することもできる。オープンソースハードウェアでありハードウェア設計情報の EAGLEファイルは無料で公開されており、組み立て済みの基板を購入することもできるほか、誰でも自分の手で Arduino を組み立てることができる。Arduino プロジェクトは 2005 年にイタリアで 始まり、当時入手可能だった他の学生向けのロボット製造用コントロールデバイスよりも安価なプロトタイピング・システムを製造することを目的にスタートし た。設計グループは多くの競合製品よりも遥かに安価で簡単に使用できるプラットフォームの開発に成功した。 Arduino ボードは、 2008年10月までに 5 万ユニット以上 [3]が、 2011年2月で約 15 万台 [4]販売されている。 Arduino プロジェクトは 2006 年度のアルス・エレクトロニカ賞で名誉言及を受けている。 [5][6][7]

ウィキペデアより

3

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

Arduino の特徴• アナログ・デジタルの入出力が複数ある

– そこにセンサやリレーを簡単に接続できる• 豊富なシールド

– イーサネット , GPS, LCD, モーター制御– http://ideahack.me/article/147

• センサ以外は、使い慣れた技術・用語が多い– USB, シリアル , HTTP, TCP/IP

• 取り扱いが容易– 不器用な私でも何とかなった

• 無線シールドの半田付けに失敗し、3つほど捨てたけど– そんなに高くない

• 壊してしまっても、大人なら平気

色々と追加すると、Raspberry PI の方が安上がりな場合も

4

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

機器購入時の注意事項• 無線 LAN, Bluetooth は、技適が付いているか?

– 海外の無線シールドには、技適が付いていない– 技適が付いていないものを使うデメリット

• 発表時に、構成を詳しく言えない• 電波法違反=「1年以下の懲役又は 100 万円以下の罰金刑に処せれる」

– 有線→無線変換が簡単• 配置時

– 電源の確保• スマホの充電で使う USB アダプタが大活躍• センサだけなら、電池でも結構持つ

– 無線 LAN を電池で使いたいなら、省電力のものを選択

5

Amazon「 PLANEX 充電万能 2ポート USB充電器 ホワイト」\1,002-

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

Arduino の概要デジタル入出力(プログラムで切り替え)

アナログ入力( 0~ 1023 の範囲)

電源

出力にすると

5V, 40mA

6

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

ブレッドボードの概要

+-だけ縦につながってい

横につながってい

GND 5V

7

横につながってい

るa~ e, f~ j

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

プロトタイピング

開発時

テスト配置時

8

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

ドライバと開発環境をインストール

• ダウンロード– http://arduino.cc/en/main/software

• Windows– 「Windows ZIP file」をダウンロードして、解凍– drivers\arduino.inf を右クリックして「インストール」– Arduino を接続– arduino.exe で IDE を起動– メニューの「ツール」から

• →「シリアルポート」→「 COM3」( PC によって違う)を選択• →「マイコンボード」→「 Arduino Uno」を選択

• Mac– 「Mac OS X」をダウンロードして、解凍– Arduino を接続– arduino で IDE を起動– メニューの「ツール」から

• →「シリアルポート」→「 /dev/tty.usbmodem3d11」を選択• →「マイコンボード」→「 Arduino Uno」を選択

9

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

練習問題• LED を点ける

– 状況が目視できるようになる

5V と GNDを取り出す 5V側に抵抗

を入れる

足の長い方が+挿し易いように、カット済み

LED の仕様で抵抗値は違う

抵抗無しだと焼き切れる事

10

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

ステップ1-1• LED を1秒ごとに点滅させる

– デジタルの 8番を LED の+に接続• さっきまでの 5V の線は外す

デジタルの 8番

11

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

• LED を1秒ごとに点滅させる– 次にプログラムを作成

1.コンパイル

2.書き込みちょっと発展形

ステップ1-2おまけ高速に点灯と消灯を繰り返せば、明るさを調節できる

#define LED_OUTPUT 8

boolean led = false;

void setup() { pinMode(LED_OUTPUT, OUTPUT);}

void loop() { led = !led; // 反転 digitalWrite(LED_OUTPUT, led); delay(1000);}

書き込んだら、自動で実行開始

12

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

ステップ2-1• 照度センサの値を PC で参照

– 照度センサをアナログの 0番に入力• 足の短い方: 5V• 足の長い方: GND→抵抗→、 A0 に渡す

センサ

A0へ入力

13

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

ステップ2-2• 照度センサの値を PC で参照

– プログラムを作成– 実行後は、「ツール」→「シリアルモニタ」で確認

#define LED_OUTPUT 8#define CDS_INPUT 0

boolean led = true;

void setup() { Serial.begin(9600);}

void loop() { int val = analogRead(CDS_INPUT); Serial.print ("CdS :"); Serial.print (val); Serial.println(); delay(1000);}

14

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

ステップ3• 「暗くなったら、 LED を灯す」を実現

– ステップ2のプログラムを改良

#define LED_OUTPUT 8#define CDS_INPUT 0

boolean led = LOW;

void setup() { pinMode(LED_OUTPUT, OUTPUT);// Serial.begin(9600);}

void loop() { int val = analogRead(CDS_INPUT); if (val < 400){ // 暗ければ led = HIGH; // 点ける } else { // そうでなければ、 led = LOW; // 消す } digitalWrite(LED_OUTPUT, led); delay(100); // 反応の遅延を減らす}

閾値は、場所に合わせて調整

15

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

その他のセンサ• 人感センサ

– Panasonic AMN41121• 温湿度センサ

– DHT11デジタルで、 HIGH/LOW を読むだけ

シリアル通信するので、ちょっと大変

アナログに挿しても、楽しい

16

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

• 仕様– 人感センサの状態を LED で表示– ある程度暗くて、人が居たら、照明(別の LED )を点

ける– 人が居なくなったら、しばらく( 3秒)したら照明を消す

– 照明を点けた/消した、をサーバに記録– デジタル入力を使うには

• pinMode( ピン番号 , INPUT);• int a = digitalRead( ピン番号 );

17

Panasonic AMN41121人感センサを裏面から見た図

5V

GNDGND

デジタルの 7番へ

100KΩ (茶黒黄金)

「人感照明」の作成例

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

温度測定• 温湿度センサ( DHT11 )とはシリアル通信

– 専用のライブラリが公開されている• http://playground.arduino.cc/main/DHT11Lib

– 安物( 300円)なので精度と耐久度に不安• AM2302 という高級品( 1,000円)もある

18

http://learning.grobotronics.com/2013/07/measuring-humidity-with-dht11-sensor/

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

HTTP通信に必要なもの• イーサネットシールドで HTTP通信

– Mac アドレスをハードコード、 LAN内で重複しないように

– DNS を参照するのは手間なので、直 IP アドレスで指定

– 別機器で無線 LAN化(コンバータモードを使用)

イーサネットシールド

無線 LAN化機器PLANEX MZK-PR150N

19

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

HTTP通信(サンプル前半)#include <SPI.h>#include <Ethernet.h>

#define LED_OUTPUT 8#define CDS_INPUT 0

boolean led = LOW;

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // 自分の MAC を決めるIPAddress server(219,101,208,155); // 接続先の IP アドレスint port = 80; // 接続先のポート番号

void setup() { pinMode(LED_OUTPUT, OUTPUT);

Serial.begin(9600); Serial.println("DHCP Request"); for(;Ethernet.begin(mac) == 0;) { // DHCP サーバから IP アドレスを取得 Serial.println("Failed to configure Ethernet using DHCP"); delay(10000); } Serial.println("START!");}

20

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

HTTP通信(サンプル後半)void loop(){ int val = analogRead(CDS_INPUT); boolean writeFlag = false; if (val < 400){ // 暗ければ if (led != HIGH){ led = HIGH; // 点ける writeFlag = true; } } else { // そうでなければ、 if (led != LOW){ led = LOW; // 消す writeFlag = true; } } if (writeFlag == true){ digitalWrite(LED_OUTPUT, led); Serial.print ("CdS :"); Serial.print (val); Serial.println();

EthernetClient client; if (client.connect(server, port)) { Serial.println("HTTP connected"); // Make a HTTP request: client.print("GET /arduino/ID/"); // ID を識別できる名前に変更 client.print("?LED="); client.print(led); client.print(“&cds="); client.print(val); client.print(" HTTP/1.0"); client.println(); client.println();

delay(100); // 送信が終わるまで、ちょっと待つ client.stop(); } } delay(100);} 21

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

注意事項• 回路変更時には、必ず電源を抜く• 抵抗値の計算について

– よく分からなければ、計算用サイトを利用• http://diy.tommy-bright.com/

• Arduino の電流量は貧弱– 5V, 40mA

• 比較例:単三電池は 1.5V, 100mA– サーボモータなど大電流が必要な物は、別電源が必要

• 24 時間運転する場合は– ちゃんとケースに入れましょう

22

http://d.hatena.ne.jp/koki-h/comment/20090407/1239090406

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

後片付け• ブレッドボード上に、最初の状態に戻す

23

Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.

http://aitc.jp

https://www.facebook.com/aitc.jp

最新情報はこちらをご参照ください

ハルミンAITC非公式イメージキャラクター

Arduino+ Raspberry PI で、なんでもできます

センサって意外と単純