Arduinoプロジェクト

Arduino プロジェクト は Atmega社 の小型組み込み用コンピュータを用いる、OpenSource (無料)の統合型開発環境(IDE)で、組み込みコンピュータを利用したシステムの構築が可能です。開発環境(IDE)はWindows、MacOS、Linux で実行可能です。

  1. 組み込み用小型コンピュータチップ

     組み込み用コンピュータとは、内部のフラッシュメモリー書き込まれたプログラムによって動作する小型(1チップ)のコンピュータで、マイクロプロッセッサ(MPU:Micro-Processing Unit)とも呼ばれます。内部には、加減算などの演算回路、入出力回路、通信回路、アナログ変換回路、などが組み込まれており、外部に接続されたセンサーや機器を制御します。現在、多くの機器は組み込みコンピュータにより制御されています。

         組み込みコンピュータ(MPU)の構造

  2. Arduino UNOボード

     Arduinoプロジェクトでは MPUとして Atmel社の開発した ATMEGA 328 を用いたArduino UNO (イタリア語)と呼ばれるボードがよく利用されます。これ以外にも、Mega、Nano、Mini、Lilypad などのボードがあり、回路が公開されています。
     PCとの接続には左上のUSB端子を利用します。USBを利用して、PCからのプログラム転送や、実行時のデータの送受信を行います。上下の黒いコネクタは、外部回路との接続用で、アナログポート6本、ディジタルポート13本から構成されます。
     右下の黒い長方形の部品がプログラムメモリー 32kB の 8bit の MPU(組み込み用コンピュータ)です。乗算回路、10bit のAD変換(アナログ-ディジタル変換)、ディジタル入出力、タイマー、各種通信、機能などを内蔵しています。このボードに外部回路を接続して、PC(パソコン)では不得意なさまざまな機能を実行することができます。

        UNO ボード

     上側 0-13 がデジタル出力端子で、このうち " ~ " の記号がある 3,5,6,10,11 はアナログ(PWM)出力としても利用できます。右下側の A0-A5 はアナログ入力端子で、ディジタル端子としても利用できます。左下の端子はリセット・電源端子です。通常MPUの電源は USB の電源を借用します。最大電流は 500mA ですから、大型表示やモーターなどを制御する場合、別電源が必要です。過大電流が流れた場合、「リセッタブルフーズ」で電流が遮断されます。左下の AC アダプターから 9VのACアダプターを接続すると、内部の定電圧電源を利用して、合計で 1000mA まで流すことができます。

  3. Arduino pro mini ボード

     実際に利用するシステムを組むには UNO は大きすぎます。実機に組み込むには Arduino pro mini の系統が便利です。これは、小型のボードに MPU とクロック用発振器、スイッチなど実行に必要な機能のみ搭載されており、5V用と3.3V用があります(3.3Vではクロックが8MHzになります)。PCと接続するには、別の USB シリアルボードを利用し、これをコネクタで接続して利用します。ある程度ハードウエアになれている人は、Arduino mini で実験を始めてください。初めての方は、最初 UNO で実験をはじめ、慣れたところで mini に移行してください。
     

      promini ボード         USB シリアルボード

  4. Arduino開発環境(IDE)の組み込み

     UNO のボードを利用するには、Arduino の開発環境が必要です。
     http://www.arduino.cc/en/Main/Software
    から arduino-xxxx-win.zip (xxxxは版数)をダウンロードし解凍します。展開された arduino.exe をダブルクリックしてIDEを起動します。

     IDEでは、プログラムの編集、実機へのプログラムの送り込み、実行状況のモニターなどが可能です。

  5. IDEのメニュー

     IDEを起動すると、以下のウインドウが開きます。Arduino では、プログラムをスケッチと呼びます。ファイルメニューの 「スケッチの例」から、sketchbook > Examples > Digital > Blink で LED の点滅プログラムを開くことができます。これは、1秒間隔で、UNOボード(後述)に内蔵のLEDを点滅するプログラムです。
     「編集」メニューではプログラムの編集ができます。「スケッチ」メニューで、スケッチの検証、コンパイル(Arduinoで実行できるようプログラムを変換)や、ライブラリの追加などができます。
     「ツール」メニューでは、プログラム(スケッチ)の「自動整形」、ボードや、シリアルの選択を行います。「自動整形」ではプログラムの整形、ボードは 「Arduino UNO」、シリアルポートはドライバの組み込み(後述)で接続したポートを選択します。
     「ヘルプ」では、初心用のガイダンスや、プログラムの「レファレンス(書き方の説明)」を見ることができます。
     


  6. 点滅プログラムの実行

     外部に回路を接続しなくても実行できるサンプルプログラムがあります。「ファイルメニュー」の 「スケッチの例」から、 Basic> Digital> Blink で LED の点滅プログラムを開くことができます。これは、1秒間隔で、UNOボードに内蔵のLED(発光する素子)を点滅するプログラムです。
     
       13端子のLED

    //LED点滅プログラム
    int ledPin = 13;                // LED がD13に接続されています
    
    void setup()                    // 最初に一度実行
    {
      pinMode(ledPin, OUTPUT);      // D13端子を出力にする
    }
    
    void loop()                     // 繰り返し実行します
    {
      digitalWrite(ledPin, HIGH);   // D13を High(5V)にして、LEDを点灯
      delay(1000);                  // 1000mS待ちます
      digitalWrite(ledPin, LOW);    // D13を Low(0V)にして、LEDを消灯
      delay(1000);                  // 1000mS待ちます
    }

  7. PCとの接続(ドライバーの設定):Windowsの場合

     USB ケーブルで UNO のUSB端子 と PC を接続します。最初の接続の場合、Arduino 用のドライバー(接続用ソフト)の組み込みが必要です。接続用のドライバーは ダウンロードした Arduino のフォルダ内部の driver フォルダにあります。Windows XPの場合、UNO のボードをUSBで接続するとドライバの組み込みダイアログが出ます。Arduino を組み込んだフォルダに driver フォルダがあるのでこれを指示すると、「ポート」の項目に Arduino UNO R3 がドライバとして組み込まれます。
     Windows7、8 の場合予め用意していないと失敗します。スタートメニューをクリックし、表示される「コンピュータ」を右クリックして「プロパティ」を選択します。
     
      プロパティ                  デバイスマネージャ

     「コントロールパネルホーム」の「ハードウエア」で「デバイスマネージャ」をクリックし、ドライバ一覧を表示します。 !マークのデバイスを右クリックして「ドライバー更新」をクリックし、ドライバの検索を指示し、先に組み込んだ「Arduino\driver」 のフォルダを選択します。
     ドライバの接続が終わると、システムのプロパティ>ハードウエア>デバイスマネージャ のポートの一覧に Arduino UNO が表示されます(USBーシリアルボードのときは USB Serial Port(COMxx))。このとき最後の COMxx のラベル xx を覚えておくと便利です。

  8. プログラムの実行方法

     IDE の ツールメニューにある 「シリアルポート」 でUSB接続された「ポート(COMxx)」を選択します。また、ツールメニューの ボード を選択し、接続するボード(UNO)を確認します。ツールバーの「右矢印(プログラムをアップロード)」をクリックすると PC から UNO ボードにプログラムが送られ、実行を開始します。

     ツールバーからの実行(左から2番目)

    UNOボードの上部 Arduinoのロゴの左の LED が 1秒間隔で点滅すれば成功です。

  9. 点滅プログラムの説明

     Arduinoでは、setup() { }に初期設定用のプログラムを、loop(){ } に繰り返し用プログラムを記述します。Arduino の多くの機能は、pinMode() や digitalWrite() のような 「命令」 により実行することができます。「命令」では名前のあとに ( )の中にある 「引数」 に「値」を指定します。コンピュータは、「命令」を指定された順に実行していきます。//の後は「注釈」でプログラムの説明をしています。
    //「命令の例」
     int led = 13; //ledを13番の端子とする
      pinMode(led, OUTPUT);  //led端子を出力モードに設定する。
     digitalWrite(led, HIGH); //led端子をHレベル(電源電圧)にする。
     最初の led = 13 は 利用する端子の番号を指定しています。ここでは、led を UNOボードの D13 の端子とすることを意味しています。setup() の { } の中では  pinMode(led, OUTPUT);  で led 端子を「出力(OUTPUT)端子」とすることを指示しています。
    //点滅プログラム
    int led = 13;
    
    // ここから開始
    void setup() {                
      // ledを出力モードに
      pinMode(led, OUTPUT);     
    }
    
    // ここを繰り返す
    void loop() {
      digitalWrite(led, HIGH);   // led 端子を HIGH にする
      delay(1000);               // 1秒待つ
      digitalWrite(led, LOW);    // led 端子を LOW にする
      delay(1000);               // 1秒待つ
    }
     
      loop() の{ } の中では繰り返し処理を設定します。digitalWrite(led, HIGH); で led 端子を HIGH 状態にします。led の端子は HIGH になると LEDを点灯します。次に delay(1000); で1000mS=1秒 「お休み」してから、digitalWrite(led, LOW); で led を消灯し、delay(1000); でまた1秒休みます。これを繰り返します。

  10. 発展

     UNO 単体では 小さな LED を点滅させることしかできません。コネクタを通して各種のデバイス(センサーや機器)を接続することで、目的のシステムを構築できるようになります。