2014年12月25日木曜日

Intel Edison を触ってみました。

 本日のがらくたは Intel Edison です。いまさらなところはありますが、以前に Intel Galileo を入手して使えなかった使いこなせなかったので、Intel のこの手のものはスルーしておこうと思い、Galileo2は無視しましたが、今回は自分で自分へのクリスマスプレゼントということで、入手してイジってみることにしました。まあ、おそらくは、少しだけイジって、飽きたらポイッってなるんですが・・・。

 Edison ですが、 Intelが作った組み込み向けモジュールでSDカードサイズ(には収まりきらなくて、一回り大きくなった)に Atom 500MHz のデュアルコアCPUと無線LAN、Bluetoothを搭載しています。



 Edisonのモジュール単体だけだと表面実装の特殊な高密度コネクタが出ているだけなので、電子工作を趣味でやっているような自分のような人には全く使い物になりません。そのため、Intel もIOをそのまま2.54ピッチに引き出すための Breakout board と Arduino 互換ボード の二種類の外付けボードを提供しています。Arduino 互換ボードは普通のArduino Uno の2~3倍の大きさがあるとGalileoでいい思い出がないので、今回は 単純にIOを引き出している Breakout board とEdisonモジュールのセットを購入しましたが、合わせて、スイッチサイエンスさんのEagletボードも購入しました。と、いうのも、この Edison はIOが1.8Vでこれまた、電子工作を趣味でやっているような自分のような人には大変使いにくくなっているのですが、スイッチサイエンスさんのEagletボードでは、とりあえず、I2CとUARTを3.3Vに変換してくれる回路が載っているためです。



 しかし、消費電力や小型化ということはあると思いますが、IOが1.8Vで結局外側にレベル変換ICを用意したり、USBで周辺機器をつなぐにしても外付けで色々用意しなければならなくて、結局、Arduino互換ボードみたいに大きくなってしまうなら、Raspberry Pi や BeagleBoneでいいじゃんとも思うのですが、x86アーキテクチャということで、デスクトップ版のLinuxのプログラムとのバイナリ互換性や処理能力をどのように生かせるか?というところなんでしょうが、自分的には、なんか、使う前から、Raspberry Pi + Arduino のが自分に合ってるなって感想なんですが・・・。

 さて、気を取り直して、まずは準備としてヘピンヘッダ等をハンダ付け。


  Edisonモジュールは Breakout Board から外して、スイッチサイエンスのEagletに装着。


 まずは、スイッチサイエンスさんのページを参考に初期設定をして無線LANで接続して、SSHログイン出来る状態にしました。初期設定がすんだら、まずは、Lチカをしないといけないので、開発環境を準備します。このサイトの情報を参考にして、開発環境を準備します。と、いっても、このあたりからダウンロードして解凍すれば、EclipseでのC/C++環境がそのまま解凍されて出来上がり。

 ダウンロード&解凍した開発環境にはLチカも含めて、いくつかのサンプルプロジェクトがはじめから存在しますので、このなかの 4_cpp_onboard_LED_blink を使って、Eaglet のLEDを点滅させようと思います。
 まず、パースペクティブを「Remote System Explorer」にして、Remote Systemペインに表示されている Local と Galileo の Galileo を選択して、プロパティの Host Name に Edison のIPアドレスを Name を edison 等に設定します。


 次に、パースペクティブを「C/C++」に戻して、Project Explorer から 「4_cpp_onboard_LED_blink」プロジェクトを選択して、ソース「4_cpp_onboard_LED_blink.cpp」を開きます。57行目あたりの Galileo じゃなかったら 「iopin = 13;」 の記述を 「iopin = 37;」に変更します。これは、EagletのLEDのピン番号です。


 Debag Configuration の画面で 「4_cpp_onboard_LED_blink.cpp」 の Connection を Local から Edison (先に適当にGalileoから変更した名前)をプルダウンで選択して、「Debug」実行します。


 これで、自分の環境ではLチカしました。ブレークをかけてステップ実行も出来るみたいです。