2015年2月7日土曜日

Raspberry Pi 2 が届きました。 & Galileo で Windows for IoT 。

 今回のガラクタは、先日発表された Raspberry Pi 2 Type B です。お値段据え置きでパフォーマンス6倍らしいです。


 外観、IOのレイアウトは Raspberry Pi B+ を踏襲しています。

 パフォーマンスが6倍になっているかはわかりませんが、体感速度はかなり向上しています。従来モデルでは、Chromiusを立ち上げるとしばらくCPUが100%に張り付いて戻ってこなかったのが、Chromiusと同時に複数アプリを起動しても以前よりレスポンスがいいです。


 これは、やはり、CPUの4コア化とメモリの倍増が効いていますね。
 Raspberry Pi の公式サイトに 他プラットフォーム との比較表が掲載されていました。


 色々と使い道が広がりそう、特にOpenCVなんかは、色抽出とか顔検出とか、今まで処理的にきつかったのが、今後は期待できるんじゃないでしょうか。そのうち、試してみたいところです。ちなみに OpenCVのソースからのビルドを行ったところ、3時間くらいで終わりました。B、B+では半日(寝る前にmakeして、朝まで放置させて6~8時間かかっていたんじゃないでしょうか?)

 また、Raspberry Pi 2 に対しては、Microsoft が Windows 10 (Windows IoT)  for Raspberry Pi 2 の対応を発表しています。Windows for IoT は、通常の Windows のようなGUIベースのデスクトップOSではなく、コマンドラインベースの組み込み向けOSです。今回(今年後半予定)のRaspberry Pi 2用のWindows for IoT がどのようなもの(GUI付き?)になるかわかりませんが、現状、Galileo に提供されている Windows for IoT を考えると、Visual Studio で組み込み開発ができるOSというイメージではないかという想像でいます。

 と、いうわけで、Raspberry Pi 2 → Windows for IoT という話の流れで、以前に入手して、使い道がなく 活用できずに、ホコリをかぶっていた Galileo を引っ張り出してきて、Windows for IoT のお試しをしてみることにしました。

 Galileo 用の Windows for IoT のセットアップに関しては、 こちら(KEI SAKAKI'S PAGE) を参考にさせていただきました。Windows Developer Program for IoTへの登録とツールやイメージのダウンロード、Visual Studio 2013 (Express や Communities でもOKなはず) の開発環境が必要になります。
 各種準備やセットアップに関しては公式サイトにもありますが、先のこちら(KEI SAKAKI's PAGE さん) が日本語かつ画面入りの丁寧な説明を掲載されているので、こちら を参考にする方が良いです。感謝です。
 また、色々試してみた後に見つけたものですが、Microsoftの中の人っぽい方が説明資料を公開してくれています。

 上記の2つの日本語サイトの情報を見てもわかるのですが、基本的にはArduinoベースのプログラミングがC++でできます。だったら、Arduinoでいいじゃん・・・っていう話ですが、(Galileoを使うにしたって、元のGalileoのままでArduino IDE使えるし)、しかし、なんと、Visual Studioで開発ができます・・・って、どうでもいいですか?Visual Studio大好きっ子(子じゃねぇし、ジジィだし・・・)の自分としては、結構うれしいし、ただ、Visual Studioでコードが入力出来るだけではありません。通常のVisual Studioで行うWindowsプログラミング(コンソールプログラミングかな?どちらかというと)同様にブレークポイントを設定して、ステップ実行&デバッグができます。これは、嬉しい!Arduino IDEも嫌いじゃないですが、やっぱり、Visual Studioが好き。Raspberry Pi のプログラミングもわざわざお金払ってVisualGDBっていうVisual StudioからRaspberry PiのGDBにリモートデバッグできる有償プラグイン買ったりして、Visual Studio使ってるし。

 で、まずは、Windows for IoT をセットアップした Galileo に試しに Telnet 接続してみます。SSHじゃないところが気になりますが、もともとWindowsなのでtelnetサービス(しか)が標準で装備されている(通常のOS利用ではサービスが停めてあるはずですが)ので、Telnet ということなんでしょう。ユーザ:administrator、パスワードはイメージ作成時に指定したパスワードで接続すると、見慣れたコマンドプロンプトが C:\Windows\Sytem32\ みたいに表示されるので、ああ、Windowsなんだなって思います。



 実際にはtelnet接続は何かの設定を行う以外は、プログラムを動かす上ではあまり関係なく、開発を行うには、Visual Studio で C++→Windows for IoTプロジェクトを作成して、デバッグの構成で、デバッグ対象のGalileoをネットワーク名かまたはIPアドレスで指定して、Visual Studioから接続できるようにしておきます。
 今回は、公式サイトにあったLCDへの表示のプロジェクトを参考に、スイッチサイエンスさんでずっと前に入手したPrototyping Labという書籍に出てくるLCD Shieldの配線に合わせてコードを少し変えたものを作成してみました。


 上の写真は「Hello,WinIoT!」を表示した後、1行毎に2行目の数字をカウントアップするスケッチを動かして、途中でブレークポイントを設定して、一時停止させたところです。メインのソースは以下の様な感じ。プロジェクトはこちらにあります。