「Intel Galileo Development Board」でLEDの発光を制御

はじめに

前回の“「Intel Galileo Development Board」を起動して動作確認”で基本的なテストを終えた「Intel Galileo Development Board」を使用して、プログラミング言語の入門で多くのケースで演習として行う「Hello World」を表示するサンプルと同様に、マイクロ・コンピューター・ボードを使用する場合には必ずといっていいほど行う「発光ダイオード(LED)の発光制御(通称Lチカ)」を行ってみます。

関連ページ

試用している「Intel Galileo Development Board」などについて

  • 本記事で試用している「Intel Galileo Development Board」は、インテル株式会社より“さかきけい”個人に貸し出されたものです。このため私の勤務先等とは一切関係がありません。
  • 本記事は“さかきけい”が完全に自由意思で書いているもので、インテル株式会社からは何らの要請、制限等は受けていません(あるのは返却期限のみです)。
  • ボードのリビジョンは「量産前」のもので、Maker Faire RomeでIntel CEOのBrian M. Krzanichさんが発表した際に同会場で配布されたものと同等とのことです。
  • 海外仕様そのままなので「インテル Galileo 開発ボード」ではなく、あえて「Intel Galileo Development Board」と記述しています。
  • 日本で発売される「量産品」と仕様あるいは内容物が同等であるかは不明とのことです。

免責の宣言

本記事は“さかきけい”の作業内容を共有するためのものであり、何ら保証はありません。自己責任でのみ使用することができます。

必要なもの

前回使用したものに加えて以下のものを必要とします(購入先の秋月電子のリンクを脚注につけてあります。資料も出ていて参考になりますので、必要に応じてご参照ください※1):

  • 発光ダイオード … 1本※2
  • 1キロオームの抵抗 … 1本※3
  • 適当な大きさのブレッド・ボード … 1枚※4
  • ブレッド・ボード・ジャンパー・ワイヤ … 2本※5

ブレッド・ボード・ジャンパー・ワイヤは赤色と白色を使うこととして説明をしますが、接続先を見分けるためのものであって、当然色そのものは接続に無関係です。1色で済ませる場合には接続先を間違えないようにしつつ、適宜読み替えてください。

ブレッド・ボードへの電子部品とワイヤの組み込み

  1. 発光ダイオード(LED)の足の長さが大幅に異なる場合にはブレッド・ボードに差し込むことができませんので、長さの判断が付きながらもそれほど差がないようにニッパーでカットします。くれぐれもどちらが長いのかわからないようにはしないでください。
  2. ブレッド・ボードの「a」列の「1」行に赤色のブレッド・ボード・ジャンパー・ワイヤの片側を差し込みます。
  3. ブレッド・ボードの「b」列の「1」行と同「b」列の「2」行の間に1キロオームの抵抗を差し込みます。極性はありませんので、好きな方を好きな穴に差し込んでください。※6
  4. 発光ダイオード(LED)の足の長いほうをブレッド・ボードの「d」列の「2」行に、同じく短いほうを「d」列の「3」行に差し込みます。これは極性があるので必ずこの通りにしてください。
  5. ブレッド・ボードの「e」列の「3」行に白色のブレッド・ボード・ジャンパー・ワイヤの片側を差し込みます。

以上のようにブレッド・ボードへ電子部品とワイヤを組み込むと以下のようになります:

ブレッド・ボードへ電子部品とワイヤを取り付けた状態

なお、くれぐれも足を長いまま不安定に挿してぐらぐらっとさせてショートさせないようにご注意ください。

Intel Galileo Development Boardへの接続

続いて組み込みを終えたブレッド・ボードをIntel Galileo Development Boardに接続します。なお、ここでのボードの上下はIntel Galileo Development Boardをロゴの印刷通りに上下としていることを想定しています:

  1. Intel Galileo Development BoardのIOREFが5V設定になっていることを確認します。※7ジャンパーは、Intel Quark SoC X1000の右下方面にあります。シルク印刷の内容をジャンパーの設定を比較して確認してください。※8
  2. ブレッド・ボードに片側が接続されている赤色のブレッド・ボード・ジャンパー・ワイヤのもう片側をボードの右上の方にある「2」とシルク印刷のある穴に差し込みます(右から3番目です)。
  3. ブレッド・ボードに片側が接続されている白色のブレッド・ボード・ジャンパー・ワイヤのもう片側をIntel Quark SoC X1000の右下にある「GND」とシルク印刷のある2つの穴のどちらかに差し込みます。

接続を終えると以下のようになります:

ブレッド・ボードとIntel Galileo Development Boardとの接続

Arduinoとしての発光ダイオード(LED)の制御

前回展開した「Arduino IDE」をそのまま使用します。前回、Intel Galileo Development Boardが接続されている、正しいCOMポートを選択済みであることを前提としています。異なる場合には前回の記事を元に先に選択しなおしてください:

  1. C:\arduino-1.5.3」フォルダーの「arduino.exe」をダブルクリックして「Arduino IDE」を起動します。
  2. 表示されたコードを入力するテキスト・ボックスに以下のコードを入力(コピー&ペースト)します:
    int ledPin = 2;
    
    void setup() {
      // put your setup code here, to run once:
      pinMode(ledPin, OUTPUT);   // 出力に設定
    }
    
    void loop() {
      // put your main code here, to run repeatedly: 
      digitalWrite(ledPin, HIGH);   // LEDをオン
      delay(1000);                  // 1秒待つ
      digitalWrite(ledPin, LOW);    // LEDをオフ
      delay(1000);
    }

    このコードはTakumi Funadaさんが翻訳・追記した「Arduino 日本語リファレンス」のサンプルを参照しつつ、制御するデジタル・ピンの番号を変更し、またIDEが初期に用意しているコメントを残したものとしています。

  3. 入力したソース・コードが正しいかどうかを確かめるために左上のチェック・マークの「検証」アイコンをクリックします:

    Arduino IDEでソース・コードの検証

    エラーが出る場合はソース・コードを修正します。

  4. 問題がないことが確認されたソース・コードをコンパイルしてIntel Galileo Development Boardへ転送して実行するためにチェック・マークの隣の「マイコンボードへの書き込み」アイコンをクリックします:

    Arduino IDEでSketchのIntel Galileo Development Boardへの転送

    検証済みであればエラーが表示されることなく転送されて実行されるはずです。

  5. ブレッド・ボードの発光ダイオード(LED)が1秒ごとに発光・消灯を繰り返すはずです。

    ブレッド・ボードの発光ダイオード(LED)が発行した瞬間

    うまくこの動作が行われない場合はブレッド・ボードへの電子部品とワイヤの組み込みから順番に見直してください。

以上でArduino互換のマイクロ・コンピューター・ボードとして動作することが確認できました。

実際に動作することが確認されているShieldは「Intel® Galileo Shields List」に掲載されています。2013年12月25日現在では、今後増えていくことが期待される程度の分量です。もちろん、ここに掲載されていないものでも動作するものはあるでしょう。ただ、同様に動作しない可能性もありますので、その点は常に考慮が必要でしょう。

なお、これらのArduino IDEとの連携動作については順次ログがRS-232に出力されています。Tera Termなどで該当するポートに接続していると各種動作ログを確認することができます。

Linuxから発光ダイオード(LED)の制御

前述のArduinoとしてのIntel Galileo Development Boardの実行直後では各種リソースが確保されていて個別に開放するのは手間がかかるため、いったん再起動を行ってから以下の作業を行ってください:

  1. RS-232接続をしたTera TermからLinuxにログイン※9します。
  2. 使用するピン番号2に相当する、Linux上の管理番号32のリソースを確保します:
    root@clanton:~# echo -n "32" > /sys/class/gpio/export
  3. ピン番号2番(Linux上は32番)のピンを出力モードに設定します:
    root@clanton:~# echo -n "out" > /sys/class/gpio/gpio32/direction
  4. ピン番号2番(Linux上は32番)のピンにHIGHレベルの出力をするように設定します:
    root@clanton:~# echo -n "1" > /sys/class/gpio/gpio32/value

    これによって該当する2番ピンに電流が流れ、ブレッド・ボード上の発光ダイオード(LED)が発光します。

  5. ピン番号2番(Linux上は32番)のピンにLOWレベルの出力をするように設定します:
    root@clanton:~# echo -n "0" > /sys/class/gpio/gpio32/value

    これによって該当する2番ピンの電流が停止し、ブレッド・ボード上の発光ダイオード(LED)が消灯します。

  6. 使用したピン番号2に相当する、Linux上の管理番号32のリソースを解放します:
    root@clanton:~# echo -n "32" > /sys/class/gpio/unexport

以上でLinux上からIntel Galileo Development BoardのGPIOの制御ができることを確認しました。

Intel Galileo Development BoardのI/OポートとLinuxでの番号の対応は「Intel® Galileo IO Mapping」というページからダウンロードできるPDFファイルに記載があります。

今回はシェルから直接制御しましたが、これと同じ方法で各種コンピューター言語で制御が行えます。Arduino互換として制御するよりも細かいことができるかと思います。工夫次第でいろいろと活用できるでしょう。

まとめ

Intel Galileo Development Boardは、基本的なSketchを実行するという点においてArduino Uno R3互換ボードであるといえますが、Shiledという資産の継承にはやや問題を抱えています。一方で、Arduino Uno R3互換としてだけではなく、Linuxが動作するマイクロ・コンピューター・ボードとしての一面を持っており、こちら側でもShield用の制御ポートにアクセスが可能であることを見ることができました。

次回はこのボードについてどのような感想を抱いたのかを書いてみたいと思います(予定が変更になったらすみません)。


このエントリーをはてなブックマークに追加