Intel Galileoの概要
昨年2013/10/3に発表され、日本では今年になって発売されたArduino互換の開発ボード「Intel Galileo」の紹介です。
簡単に説明すると、Linuxも動かせるハードウェア制御向けマイコンボードです。
Arduinoとは広義的にはArduino言語および開発環境と対応したマイコンとGPIOを備えたボードの事で、基本的にはハードウェアの制御に利用されます。
Arduino互換とは言っても完全互換ではなく、本家ArduinoはARMベースのRISCに対しGalileoはx86ベースのCISCというアーキテクチャの違いがあることと、GalileoはLinux上でAruduinoをエミュレートしているためか何かと制約があります。
またLinux上でエミュレートしているため、Linuxマシンとして扱うことが出来ますがグラフィック機能が搭載されていないため、これ単体でPC的な利用方法は難しいと思われます。
この様に本家Arduinoと若干異なりRaspberry Piにも似た性質を持っており、新たな分野のマイコンとして扱ってみるには非常に面白いアイテムではあります。
ボード本体ですが、缶コーヒーと比較したサイズがこちら
幅は缶コーヒーの高さと殆ど一緒で、奥行きは缶コーヒー幅の1.5倍
実寸は105×70×25(mm)となっています。
機能面は下記のとおり。
1.プロセッサ:Quark X1000,32bit,400MHz,SRAM512K, L1cache 16KByte
2.SRAM 256MB
3.DRAM 8MB
4.MicroSDコネクタ 32GBまで対応
5.Mini-PCIe
6.GPIO 14ポート
7.JTAG(10pin)
8.RS-232 UART (3.5mmjack)
9.USB2.0 HOSTPort
10.USB2.0 ClientPort
11.10/100 Mb Ethernet RJ45 port
上記は開発ボードで付加された機能も含まれますが、マイコン本体でGPIOの他にMini-PCIeとDDR3をサポートしており、この辺りIntelらしい特徴ではないかと思います。
裏面にはMini-PCIeソケットが付いています。
ここにはインテル® Centrino® Advanced-N 6235などが利用できます。
WiFiやBluetoothを用いた通信が可能です。
付属品について
ユニバーサルプラグのACアダプタと
本体のみ
開発に最低限必要なUSBケーブルはなぜか付属していない。
入手先については、大きなPCショップに行けば普通に置いてあったりします。
知らない人がNCUと間違えて買わないかと心配になるくらい、さりげに置いてあります。
ネットでは当然ですが当たり前のようにamazonでも買えます。
下準備
Galileoでマイコン開発をするにあたり、最低限の下準備をします。
USBケーブルがなぜか付属していないので自前で用意します。
androidスマフォでお馴染みのUSB(A)⇔microUSB(B)でOK
これはPCからスケッチを書き込んだり、マイコンの内部データをシリアルモニタで入出力する場合に必要な必須アイテムです。
※スケッチとはArduinoにおけるプログラムのことです。
ソフトウェアパッケージ(開発環境とドライバ)
Galileo専用のものがIntelから提供されています(ソフトは無料)。
開発環境はLinuxとMacOSとWindows7or8に対応
下記から環境に合わせダウンロードします。
※以降の説明はWin7 64bitでの開発について説明します。
ダウンロードしたソフトウェアパッケージを解凍します。
ここで注意したいのが、解凍後のパスが長すぎるようで
「c:\program files」等の下に解凍した場合に動作しません。
私の場合「C:\Galileo」というフォルダを作成しそこに解凍しましたが上手くいきました。
7文字程度のフォルダなら大丈夫なようです。
GalileoボードをACアダプタと接続します。
重要なのがACアダプタでボードの電源を入れてからUSBを繋ぐ事
この順番を間違えると壊れる可能性があるため要注意です。
PCとGalileoボードを接続
接続するとドライバのインストールが始まりますので
先程のソフトウェアパッケージを解凍した中の
「hardware\arduino\x86\tools」フォルダを指定します。
ドライバのインストールが完了するとGalileoとCOMポート番号が表示されます。
このポート番号(COM?)はあとで必要になるので覚えておきます。
ボードには足を付けましょう。
付けなくても動作はしますが、机上にそのまま置くよりも安全ですし作業もしやすいです。
また開発物に搭載する時は必須ですので用意しましょう、1本50円程度です。
【動作確認】
実際にスケッチを組んで、簡単に動かしてみます。
マイコンでの開発の基本中の基本とも言えるLEDの点灯は、ネット上で結構紹介されていますので、そちらに譲るとして、ここではもう少しだけ捻ったことをしてみます。
プログラムを組む訳ですが、私はArduino言語は初めて。
C言語の全ての構造とC++のいくつかの機能をサポートしているとのこと。
幸いCとC++は経験があるので、Arduino独自I/Fだけ覚えましょう。
有志の方々によって作成された日本語リファレンスが下記サイトにあります。
まずは開発環境を起動しましょう。
先程解凍したフォルダ直下に「arduino.exe」があるので実行します。
デスクトップにショートカットやスタートに登録しておけば楽です。
起動後の画面を簡単に説明しますと
一番左の「レ」がビルド
次の「⇒」がビルドおよびマイコンに書き込み
残りの3つが新規ファイル作成と開くと保存です。
まずはポートの設定から
「ツール」→「シリアルポート」を選択
ドライバインストールした時に覚えていたCOMポートを選択します。
このCOMポートはGalileoを接続しなおしたりPCを再起動すると変わる事がありますので
毎回確認するクセをつけておきましょう。
私の作ろうとしている物は、センサを利用してモーター駆動させますので
まずは第一段階としてマイコンからの出力側、モーターを駆動させてみます。
用意するもの
①モータードライバ
②モーター
③モーター駆動用電源
とりあえずPMW制御とCW、CCWができるスケッチを作成。
クリックで拡大できます。
サーボも一緒に動かそうとしていたので無駄なコードがいくつかありますが
とりあえず問題はないので動かしてみます。
モーターは、一般的に動かしたいものに合わせた出力値から選定しますので、マイコンのGPIOの仕様と一致することはまずありません、そもそもモーターは電流値が高いので直結するには無理があるためモータードライバを経由して別電源での駆動になります。
次に第二段階としてマイコンへの入力側、センサを接続します。
用意するもの
①超音波センサ
センサからの入力を目に見えるようにシリアル出力するスケッチを作成。
動かしてみま・・・・・
コンパイルが通りませんでした、何度見てもコーディングのミスは見つからない。
色々調べた結果下記コミュニティーで情報を発見、GalileoではpulseIn()が実装されていないようです。
こんなところでIntel Galileoのクセに所々で出くわすとは思いもよらず、完成までになかなか苦戦を強いられそうです。
Arduinoと全く同じやり方は通用せずソースコードの流用も厳しいと考えておかないと。
気を取り直して、他の実現方法を考えてみる。
無い物は作ってしまえとpulseIn()の情報を収集してみる、関数そのまま検索するだけであっさりと発見、下記サイトにヒントどころかソースコードがそのまんま公開されている。
やっぱりそのままは駄目だったので適当に直して書いてみる。
あとクロックの係数とかは算出が面倒だったので、動かしながら調整することにして適当に値を設定しています。
コンパイルが通ったのでGalileoに書き込んで動かしてみます。
見た目は動いているが、センサーが正しく反応しない。
センサと障害物までの距離を変えてみても出力は常に0。
オシロで確認してみるととりあえず何か出ているっぽい。
距離を変えてみるとパルス幅も変わるので、計測は出来ているみたい。
やっぱり適当な数値を入れたクロックの係数が悪さをして正しく検知できていないと思われるので、後日調整するとして次へ。
アナログの入力を使ってLEDをON/OFFさせてみます。
用意するもの
①可変抵抗
②LED
③普通の抵抗
スケッチを作成。
動かしてみます。
ここまでやってみた感想(メリットデメリット)
先述のように開発環境はAruduinoが基本となりますが、アーキテクチャの違いとIntel初の試みということも影響しているのか、一癖ありまして本家Arduinoでガリガリ開発していた方が使うと少しばかり苦戦するとか思われます。
開発中は、完全互換ではないじれったさに出くわすが、それでもArduinoがベースである強みがり、調べれば多少なりともヒントが出てきますので、どん底に叩き落とされる手前で救いの手が伸びるのはいいところ。
もともとArduinoはマイコン開発の敷居の高さを下げるため、簡単なコード記述でだいたいの事が出来る構造となっています。
そういった意図を考慮しArduino自体は初心者~中級者向けと捉えた場合、Intel Galileoはそこから少し敷居が高くなり、中級者向けだと考えます。
なぜならArduinoのつもりで作っていると必ず壁に当たります。
ここでは原因を追求する能力が試され、複数の視点から調査が必要になります。
互換性の低さは完全なデメリットではありますが、側面として調査能力が養われるのではないかと考えています。
このことから学校や職場での教育シーンでの利用が非常に適しているのではないかと思います。
また趣味で開発をされている方はMな変態さん冒険好きな人に向いているのではないでしょうか。
今回はここまで、私自身が初Galileoであるため勉強会のようなレビューになってしまいましたが
次回からはとあるブツの完成に向けて報告していきます。
ZIGSOWにログインするとコメントやこのアイテムを持っているユーザー全員に質問できます。