読者です 読者をやめる 読者になる 読者になる

冥冥乃志

ソフトウェア開発会社でチームマネージャをしているエンジニアの雑記。アウトプットは少なめです。

follow us in feedly

Intel Galileoで遊んでみる(Lチカ編)

買っちゃいました。だって安かったんだもん(2,000円也)。

「何に使うの?」なんて聴いちゃいけません。それは買ってから考えるんです。

ちなみにIntel GalileoIntelが発売したシングルボードコンピュータです。Raspberry Piを思い浮かべてもらえば良いかと思います。

www.intel.co.jp

なお、ボード本体と一緒に以下の本を購入できたので、接続諸々などはこの本を参考にしながら勧めています。

Intel Galileoをはじめよう (Make: PROJECTS)

Intel Galileoをはじめよう (Make: PROJECTS)

環境を作る

まずはボードを制御するプログラムを書くための開発環境準備です。プログラム自体はPCで書きます。

Intel Arduino IDEのダウンロード

利用するIDEGalileo用にカスタマイズされた?Arduino IDEです。GalileoもGen2が発売されたり、Edisonが発売されたりと製品構成が多少変わっているので、サポートページの構成も変わっているらしく、ボードと一緒に買った本に載っていたURLとはちょっと異なる物となっています。2015年5月現在は以下のURLとなります。

www.intel.co.jp

ここの「ダウンロード&ドキュメント」->「Intel Galileo Software」から種々のツールダウンロードページに行きましょう。IDEやその他ツール類の一覧が表示されます。

IDEのソフトウェア名も本に記載してあるのと微妙に表記が変わっているので迷わないようにしましょう。「Intel Arduino IDE」のリンクになってるのは前バージョンで、カレントバージョンは「Arduino Software 1.6.0 - Intel 1.0.4」表記になっています。普通にダウンロードしてインストールするだけなので詳細は割愛します。

ついでにダウンロードしておくもの

今後やりたいことにも関係するので、ついでにファームウェアアップデータとSDカード用のLinuxイメージも落としておきます。今回は使いませんが。

サンプルでLチカする

さあ、動作確認も兼ねて、シングルボードコンピュータにおける「Hello world」ことLチカをやってみたいと思います。

GalileoMacをつなぐ

GalileoMacはUSBケーブルで接続します。Galileo側のポート形状はmicro USBです。「Client USB」と書いてあるポートとMacをつないでください。

なお、接続に当たって、必ず電源を先に接続してMacとつなぐという手順を厳守しないとボードが壊れてしまうそうで注意が必要です。ボードの電源を落とすときは逆の手順で。ちょっとした時につい忘れてしまいそうになるので気をつけたいと思います。

ケーブルでつないだ後、Arduino IDEを立ち上げてボードとの接続を行います。まだ選択の基準がよくわかっていないので、今回は本の内容に単純に従うことにしました。

サンプルプログラムをGalileoにアップデートする

Arduino IDEにはいくつかのサンプルがあり、その中にLチカのためのプログラム「Blink」があります。このプログラムはボード上のLEDを使うらしいので接続確認がてら使ってみます。

「Blink」を読み出して、ボードに送ってみます。。。Lチカしない。

コンソールを確認してみましたが、コンパイルとボードへのアップロードは特にエラーなくされている模様です。ひとしきり悩んだ結果、IDEのバージョンも本に書かれたところからバージョンが上がっていることですし、ファームウェアを最新にあわせてみることにしました。その結果無事Lチカに成功。ちなみに、以下がそのサンプルプログラムです。

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}

1秒ごとにLEDの電圧をアゲサゲして点滅させてるんですね。

プログラムを変えてみる

これで終わるのももったいないので、Lチカを少し変更してみたいと思います。

LチカでSOS(モールス信号)

「トン」と「ツー」で表現するアレですね。このモールス信号で構成された程度意味のあるシンプルな電文をLチカの点滅で表現したいと思います。

http://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%BC%E3%83%AB%E3%82%B9%E7%AC%A6%E5%8F%B7

「トン」と「ツー」をどのくらいの長さにするかは目視でバランスの良いところを見てみます。で、変更してみたプログラムが以下です。

int led = 13;


// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(led, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  // blink SOS sign
  signS();
  signO();
  signS();
  delay(300);
}

// defining morse code blink
void ton() {
  digitalWrite(led, HIGH);
  delay(300);
  digitalWrite(led, LOW);
  delay(300);
}

void tsuh() {
  digitalWrite(led, HIGH);
  delay(900);
  digitalWrite(led, LOW);
  delay(300);
}

// defining morse code alphabete
void signS() {
  ton();
  ton();
  ton();
}

void signO(){
  tsuh();
  tsuh();
  tsuh();
}

無事、SOS電文をLチカさせることができました。これでいつ遭難しても大丈夫ですね。今日のところは初めてなので、これで満足しました。

これからどう遊ぶか

GalileoはベースでLinuxが動いていますし、microSDカードにインストールしたLinuxをブートもできるそうです。ちょっとした検証などに使うサーバを構築しようか、と思っています。なので、次回はLinuxのブートを試してみようかと。

それからボードむき出しのままだと何なので、ケースが欲しくなっています。100均で探すのがデフォみたいなのですが(まあ安上がりですし)、3Dプリンタを使う口実にしてしまおうかと思います。