FrontPage
11/24 概要, Arduino †
自己紹介 †
この部分(3週間分)の概要 †
センサネットワークと Internet of Things (IoT) †
- たとえば
- 点のデータから面のデータへ
- いままでも、センサを使った監視はあちこちで行われていた。
- クラウド、スマートホン、ZigBee? などの技術が利用できることにより、
従来より広い範囲のデータを大量に入手し、より簡単に、我々の生活に役立てることができるようになっている。
- Big data
- スマートホン、カーナビ、そのほかのあらゆるデータが、GPS などの位置情報と共に、クラウドに集積されている。
- こんなことが可能になっている。
- こんなサービスも使える
- センサネットワークとは、面に配置されたセンサデータを、無線や有線のネットワークを使って、収集できるようにしたもの。センサを備えた「ノード」があちこちに配置され、ノード間で
情報交換が行われる。
- ノード間を自動的に接続する手法の1つに、Adhoc On-demand Distance Vector (AODV) アルゴリズムがある。ZigBee? はAODV を使ったメッシュネットワークを構成することができる。
- IoT とは、「物」どうしで構成されたインターネット。従来のパソコンを使ったインターネットだけでなく、人が操作しない、自律に動作する物(ノード)がインターネットを使って情報交換を行う。広範囲なセンサネットワークとして実際に使われている。
Arduino と Android とクラウドの融合 †
- Arduino
- オープンソースのハードウェア。とても簡単にセンサとアクチュエータを制御できる。
- Arduino を使って、みんなで電子工作をして、web で自慢しあい、教えあう文化、情報をみんなで共有する文化が広まっている。Social 電子工作。
- 例 Maker fair
- Android
- 皆様ご存知。今、ここで講習中。
- 無線LAN や有線LAN がないところでも、インターネットが使える。
- クラウドとの相性がよい。
- クラウド
- インターネットの、どこにあるか意識しなくても使える、大量のサーバ群
- google, twitter, facebook, ... など、クラウドを使ったサービスを、我々は、すでに普通に使っている。
- 今後の3回で、Arduino, Android, twitter を使って、簡単な IoT システムを作成する。
デモ(このようなものを作ってもらいます) †
Arduino の紹介 †
Arduino のプログラミング環境のインストール †
Arduino でLED ちかちか †
- 1. ArduinoボードとUSBケーブルとパソコン(PC)を準備する。
- 2. Arduino 開発環境をダウンロードする。
- 3. ボードとパソコンをUSB ケーブルで接続する。
- 4. ドライバをインストールする。
- 5. Arduino アプリケーションを起動します。
- ダウンロードして解凍してできたディレクトリの中の arduino.exe をダブルクリックします。
- 6. LED ちかちかプログラム例(blink example) を開きます。
- File > Examples > 1.Basics > Blink のようにメニューを辿ったら、LEDちかちか例題プログラムが書かれたページ(エディタと各種設定とコンパイルとupload )が開きます。
- 7. ボードを選びます。
- Tools > Board で、ボードのメニューが表示されます。今回は、Arduino Mega ADK を選びます。
- 8. シリアルポート(パソコンとボード間で通信を行うときに使う、パソコン側の口)を選びます。
- Tools > Serial Port のメニューを辿って、ポート一覧を表示させ、Arduino ボードが接続されたポートを選びます。どのポートがArduino に接続されているか、調べるには、一度、USBケーブルをはずして、ポート一覧を表示し、USBケーブルを接続して、またポート一覧を表示します。このとき、あらたに加わったポートが、ボードに接続されているポートです。
- 9. プログラムの upload (プログラムのボードへの書き込み)
- 開発環境の Upload ボタンをクリックします。
しばらくすると、ボードのRXとTXボタンが点滅します。Upload が成功したら、"Done uploading."メッセージが表示されます。
Upload が終わって少ししたら、ボード上の、pin 13 (L)に接続されたLED が黄色で点滅します。
- Arduino ではプログラムのことを「スケッチ」と呼びます。
- 参考
Arduino に外部のLED を接続して、LEDをちかちか †
- 1. Arduino ボードとパソコン間のUSBケーブルを、一度、抜きます。
- 2. ブレッドボードを使って、Arduino の 8番端子とGND端子の間にLED と抵抗(620Ωくらい)を直列接続します。8番端子側をLEDのアノード(+側)とします。
- ブレッドボードは、穴の配列の縦方向または横方向だけ、電気が流れるようになっています。接続したいジャンパ線の金属端子や部品を、電気が流れる同じ列の穴に挿すだけで、配線できます。
- 3. パソコン(PC)とArduino ボードをUSB ケーブルで接続します。
- LED ちかちかプログラム例を書き換えます。
- 元のプログラムの pinMode(13...) や digitalWrite(13...) の13 を8 に書き換えて、
以下のように書き換えます。
void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(8, OUTPUT);
}
void loop() {
digitalWrite(8, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(8, LOW); // set the LED off
delay(1000); // wait for a second
}
- upload します。
- 演習: LED に SOS を繰り返し発信(点滅)させるプログラムを作ってみましょう。
- SOS は、ト・ト・ト ツー・ツー・ツー ト・ト・ト
- loop(){ ... } の中の文の列は、繰り返し実行されます。
- delay(長さ)は、長さ(msec)だけ待つことを表します。
アナログ出力(PWM) を使って、LED をふんわり点滅 †
- digitalWrite(端子番号,HIGH 又は LOW) の代わりに
analogWrite(端子番号, 値)
を使って、値の大小で出力の強弱を与えることができます。ここで値は 0から 255 までの整数です。なお、これは0V と 5V の間の電圧が出力されるわけではなく、0Vと5Vの出力間隔を時間的に変える、PWM(Pulse Width Modulation)によって、実現しています。
- 以下のプログラムを作成し、upload し、実行してみてください。
void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(8, OUTPUT);
}
void loop() {
analogWrite(8, 20); // set the LED on
delay(1000); // wait for a second
digitalWrite(8, LOW); // set the LED off
delay(1000); // wait for a second
analogWrite(8, 255); // set the LED on
delay(1000); // wait for a second
digitalWrite(8, LOW); // set the LED off
delay(1000); // wait for a second
}
- Arduino では、c や java と同様の for文を使うことができます。 for文を使って、
LEDをふんわり明るくなったり暗くなったりさせるプログラムを作ってみてください。
- 解答例
int led=8;
int d=8;
void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(led, OUTPUT);
}
void loop() {
for(int i=0;i<256;i++){
analogWrite(led, i); // set the LED on
delay(d); // wait for a second
}
for(int i=0;i<256;i++){
analogWrite(led, 255-i); // set the LED off
delay(d);
}
}
Arduino に外部センサを接続 †
Arduino でLED 点灯自動制御 †
- 演習: 暗くなったら LED が点灯し、明るくなったら LED が消灯する Arduino のスケッチを作成してみてください。
- 解答例
int led=8;
int analogPin = 0; // potentiometer wiper (middle terminal) connected to analog pin 3
// outside leads to ground and +5V
int val = 0; // variable to store the value read
int xval = 20;
void setup()
{
pinMode(led, OUTPUT);
}
void loop()
{
val = analogRead(analogPin); // read the input pin
if(val>xval){
digitalWrite(led,LOW);
}
else{
digitalWrite(led,HIGH);
}
delay(100);
}
質問と解答 †
ボードの仕組みや部品の必要性に関する文献など? †
- Arduino ボードの仕組み:
- ブレッドボードの仕組み:
- 発光ダイオード:
- 照度センサ:
- PIR:
Android のセンサがあるのに、外部のセンサを使う理由? †
- Android のセンサだけでは足らない場合があります。物理的に大きく、沢山のセンサを利用したい場合もあります。
Arduino の入手方法? †
- 通信販売が簡単です。
- 福岡のマルツパーツ館でも販売しています。
Arduino の耐性? †
- Arduino をそのまま販売される商品の部品として使うと、湿度、温度などが厳しい環境では信頼性が保てないかもしれません。同じ種類のCPU を使ってボードを作り直して販売される例はあるようです。
Arduino につながるセンサ? †
- 簡単にセンサを接続するために、シールドと呼ばれる拡張ボードが販売されています。
- 例
Arduino は Android 以外の、Windows などとも連携できる? †
twitter の個人アカウントは必要? †
- 使いますが、当日の講習の中でもアカウント入手の時間を取る予定です。
Arduinoボードの仕様? †
Arduino 以外の組み込み? †
- Android とADK で接続の実績があるマイコンシステムにArduino 意外に以下のようなものがあります。
|