FrontPage

11/24 概要, Arduino

自己紹介

この部分(3週間分)の概要

センサネットワークと Internet of Things (IoT)

  • たとえば
  • 点のデータから面のデータへ
    • いままでも、センサを使った監視はあちこちで行われていた。
    • クラウド、スマートホン、ZigBee? などの技術が利用できることにより、 従来より広い範囲のデータを大量に入手し、より簡単に、我々の生活に役立てることができるようになっている。
  • Big data
  • こんなサービスも使える
  • センサネットワークとは、面に配置されたセンサデータを、無線や有線のネットワークを使って、収集できるようにしたもの。センサを備えた「ノード」があちこちに配置され、ノード間で 情報交換が行われる。
    • ノード間を自動的に接続する手法の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 ケーブルで接続する。
    • 接続すると、ボードの緑のLEDが点灯する。
  • 4. ドライバをインストールする。
    • 必要な場合は、その場で方法を説明します。
  • 5. Arduino アプリケーションを起動します。
    • ダウンロードして解凍してできたディレクトリの中の arduino.exe をダブルクリックします。
  • 6. LED ちかちかプログラム例(blink example) を開きます。
    • File > Examples > 1.Basics > Blink のようにメニューを辿ったら、LEDちかちか例題プログラムが書かれたページ(エディタと各種設定とコンパイルとupload )が開きます。
      • Arduino1Blink.png
  • 7. ボードを選びます。
    • Tools > Board で、ボードのメニューが表示されます。今回は、Arduino Mega ADK を選びます。
      • arduino-select-board.jpg
  • 8. シリアルポート(パソコンとボード間で通信を行うときに使う、パソコン側の口)を選びます。
    • Tools > Serial Port のメニューを辿って、ポート一覧を表示させ、Arduino ボードが接続されたポートを選びます。どのポートがArduino に接続されているか、調べるには、一度、USBケーブルをはずして、ポート一覧を表示し、USBケーブルを接続して、またポート一覧を表示します。このとき、あらたに加わったポートが、ボードに接続されているポートです。
  • 9. プログラムの upload (プログラムのボードへの書き込み)
    • 開発環境の Upload ボタンをクリックします。
      arduino-upload.jpg
      しばらくすると、ボードの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のアノード(+側)とします。
    • arduino-circuit-led-1.jpg
    • ブレッドボードは、穴の配列の縦方向または横方向だけ、電気が流れるようになっています。接続したいジャンパ線の金属端子や部品を、電気が流れる同じ列の穴に挿すだけで、配線できます。
      • arduino-circuit-led-2.jpg
  • 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 の端子にスイッチやセンサを接続することにより、アナログ値やディジタル値を入力することができます。ここでは、照度センサをArduino に接続してみます。ArduinoボードのUSBケーブルをパソコンから切り離した後、以下のような回路を作成してください。
    • 照度センサの出力はアナログ値なので、Arduino のアナログ値入力用端子のA0に、センサの出力を接続しています。
    • arduino-circuit-light-sens-1.jpg
    • arduino-circuit-light-sens-2.jpg
  • 回路作成後、Arduino ボードをUSBケーブルでパソコンに再度接続します。
  • 今回は、Arduino 開発環境の File>New を選び、新しいスケッチを作成します。
  • アナログ値を入力するとき、関数 val = analogRead(analogPin番号); を使います。 ここで得られる値 val は 0から 1023 間での値になります。
  • 以下のプログラムを書き込みます。これは、照度センサの値をパソコン側の、Arduino 開発環境のシリアルモニタ に出力するものです。
    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
    
    void setup()
    {
      Serial.begin(9600);          //  setup serial
    }
    
    void loop()
    {
      val = analogRead(analogPin);    // read the input pin
      Serial.println(val);             // debug value
    }
    • Serial.println(val); は、val をパソコン側のシリアルモニタに送ります。
  • Tools > Serial Monitor を選び、シリアルモニタを開きます。 arduino-serial-1.jpg
    • 通信速度が、スケッチで書いた、Serial.begin(9600) と同じ、9600 bps にしてください。
  • スケッチを ボードにupload します。upload 終了後、シリアルモニタに照度センサのデータが数字で出力されます。照度センサを手で覆って暗くしたり、照明に直接あてたりして、値が変わることを確かめてください。
  • スケッチの保存
    • 書いたスケッチを、File>Save As を辿り、ディスクトップに sensorex という名前をつけて保存してください。

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 以外の組み込み?


添付ファイル: filearduino-serial-1.jpg 390件 [詳細] filearduino-circuit-light-sens-2.jpg 449件 [詳細] filearduino-circuit-light-sens-1.jpg 448件 [詳細] filearduino-upload.jpg 407件 [詳細] filearduino-select-board.jpg 477件 [詳細] fileArduino1Blink.png 410件 [詳細] fileled_1.gif 197件 [詳細] filearduino-circuit-led-2.jpg 387件 [詳細] filearduino-circuit-led-1.jpg 372件 [詳細] fileAdkTwitter-hard.jpg 198件 [詳細]

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-12-10 (月) 23:21:24 (4152d)