はじめに
「インテル Galileo 開発ボードでWindows IoTを動かす – 前編」の続きです。後編の今回は開発ツールのインストールと、その開発ツールからアプリケーションをインテル Galileo 開発ボードに転送して動作させてみます。
目次
注意事項
このメモの作業手順は、基本的にWindows 7上で行うことを前提としています。Windows 8あるいはWindows 8.1では手順が異なる個所がありますので、ご了承ください。
前提
前編でファームウェアをバージョンアップしたインテル Galileo 開発ボードやWindows IoTを書き込んだmicroSDメモリーカードなど、すべてそのまま後編で使用することを前提としています。
これらの作業をまだ行っていない場合には、先に前編を参照ください。
開発ツールの準備
通常のインテル Galileo 開発ボードではArduino IDEを開発環境として使用しますが、Windows IoTが動作しているインテル Galileo 開発ボードではMicrosoftの開発ソフトウェア製品であるVisual Studio 2013シリーズを使用します。
今回は、無償で利用できる「Visual Studio Express 2013 for Windows Desktop」を使用することにします。※1
ダウンロードとインストール
- システム要件を参照して、使用する予定のWindows環境でVisual Studio Express 2013 for Windows Desktopを使用可能であることを確認します。
- Visual Studio 2013をダウンロードするためのページからVisual Studio 2013 for Windows Desktopの「今すぐインストール」でファイルをダウンロードします。なお、ダウンロードするにはMicrosoftアカウントとVisual Studio 2013の利用登録が必要です。
- ダウンロードした「
wdexpress_full.exe
」を実行します。 - 「Visual Studio」のスプラッシュが表示されるので表示が変わるまで待ちます。
- 「Express 2013 for Windows Desktop Update 3 を使用」という表示が出ますので、任意のインストール先の指定(通常はデフォルトから変更の必要なし)と「ライセンス条項」および「プライバシー ポリシー」を確認したうえで「ライセンス条項およびプライバシー ポリシーに同意します。」にチェックを入れて同意します。なお、同意できない場合にはソフトウェアを使用することはできません。
- 「Visual Studio の品質、信頼性、パフォーマンスを高めるための…(以下略)」のチェックを任意の状態にします。
- ウィンドウの下部に表示された「インストール(N)」をクリックします。
- Windowsの設定によっては「ユーザー アカウント 制御」が発動しますので、続行あるいは認証の対応をします。
- Visual Studio 2013関連パッケージのダウンロードとインストールが開始されるので終了するまで待ちます。
- 「セットアップが完了しました。」と表示されたらウィンドウの下部に表示された「起動(L)」をクリックしてVisual Studo 2013を起動します。
- 「Visual Studio Express 2013 for Windows Desktop」のスプラッシュが表示されるのでしばらく待ちます。
- 「ようこそ。Visual Studio にサインインしてください。」という表示が出ることがあります。この場合には「後で行う。」をクリックして先へ進みます。またインストール後30日を経過しているとサインインが必要になります。
- 「Visual Studio 初めて使用するための準備をしています」という表示が出るのでしばらく待ちます。
- 「Microsoft Visual Studio Express 2013 for Windows Desktop」が起動して「スタート ページ」が表示されます。メニューから「ツール(T)」をクリックして「NuGet パッケージ マネージャー(N)」という項目があることを確認します。
無い場合に限り以下の操作を行います。
- Visual Studio 2013を終了します。
- Windows Developer Program for IoT – Microsoft Installer (MSI)をダウンロードします。ダウンロードにはMicrosoftアカウントの取得とWindows Developer Program for IoTへの参加が必要です。
- ダウンロードした「
WindowsDeveloperProgramforIOT.msi
」を実行します。 - 「Windows Developer Program for IoT」のライセンス契約が表示されるので、同意するのであれば「I accept the terms in the license Agreement」にチェックを入れて「Install」ボタンをクリックします。同意しない場合にはこのソフトウェアを使用することはできません。
- Windowsの設定によってはUACの確認あるいは認証が行われるので対応をします。
- 「Installing Windows Developer Program for IoT」という表示と伸びていくプログレス・バーが表示されるので、インストールが終了するまで待ちます。
- インストールが完了すると「Completed the Windows Developer Program for IoT Setup Wizard」と表示されるので「Launch Galileo Watcher Application」のチェックは任意の状態にして「Finish」ボタンをクリックします。
なお、ここで「Launch Galileo Watcher Application」にチェックを入れていると、ネットワーク上のWindows IoTの動作したインテル Galileo 開発ボードをサーチしてリスト表示するアプリケーション「Galileo Watcher」が起動します。これが筆者の環境では正常に動作しないことがありました。※2このため、Galileo Watcherの表示に頼らずに作業をすることをお勧めします。
インテル Galileo 開発ボードの準備
- インテル Galileo 開発ボードの電源が切れていることを確認します。
- Windows IoTの入ったmicroSDメモリーカードをインテル Galileo 開発ボードに挿します。
- 発光ダイオードをGPIOの13番がアノード、GNDがカソードになるように挿します。※3
- インテル Galileo 開発ボードにEthernetケーブルを挿しこみます。
- 差し込んだEthernetケーブルのもう片方をUSB接続のEthernetアダプターに差し込みます。
- インテル Galileo 開発ボードに電源を接続します。
- Windows IoTの起動が完了するまで約2分ほど待ちます。この際、microSDメモリーカードへのアクセス状況を示すLEDを目視確認するとわかりやすいかと思います。
- USB接続のEthernetアダプターをパソコンのUSBポートに接続します。※4
なお、パソコンとインテル Galileo 開発ボードをUSBケーブルで接続する必要はありません。
アプリケーションの作成と実行
2014年10月6日一時的な追記:Intel Galileo Gen 2ボード向けのアルファ版では異なる個所があります。詳しくは“MicrosoftがIntel Galileo Gen 2対応Windows IoTのα版を公開”というメモの2014年10月6日追記を参照ください。
2014年10月20日一時的な追記:Intel Galileo Gen 2ボードにおいて、ビルド時にソリューションへインストールする対象が変更になりました。詳しくは“Intel Galileo Gen 2向けMicrosoft IoT C++ SDK 1.0.0-alpha2のリリース”を参照ください。
- 「スタート メニュー」の「すべてのプログラム」→「Visual Studio 2013」→「VS Express 2013 for Desktop」と選択して「Visual Stduio」を起動します。
- 「Visual Studio Express 2013 for Windows Desktop」のスプラッシュが表示されるのでしばらく待ちます。
- 起動したら「スタート ページ」の「開始」項目にある「新しいプロジェクト…」をクリックします。
- 「新しいプロジェクト」ウィンドウが表示されるので、左ペインの中を「インストール済み」→「テンプレート」→「Visual C++」→「Windows for IoT」と選択します。
- 右ペインの中に表示された「Galileo Wiring App」を選択します。
- 「名前(N):」のテキスト・ボックスに任意の名前を入れます。ここでは「
First Galileo App
」としました。 - 「場所(L):」と「ソリューション名(M):」を確認して変更の必要があれば変更します。
- 「OK」ボタンをクリックしてプロジェクトを作成します。
- 少し時間がかかって「Microsoft Visual Studio Express 2013 for Windows Desktop」の「ソリューション エクスプローラー」にプロジェクトの内容が表示されます。
- メニューから「ツール(T)」→「NuGet パッケージ マネージャー(N)」と進み、「ソリューションの NuGet パッケージの管理…」をクリックします。
- 「NuGet パッケージの管理」ウィンドウが表示されるので左ペインから「オンライン」→「nuget.org」と選択します。すると「情報を取得しています」と表示されるのでしばらく待ちます。
- 右上の検索ボックスに「Galileo」と入力します。しばらく待つと中央ペインに「Galileo C++ SDK」が表示されるので「インストール(I)」ボタンをクリックします。
- 「プロジェクトの選択」ウィンドウが開いてインストールする対象のプロジェクトが表示されるので、意図通りであればそのまま「OK」ボタンをクリックします。
- 「インストール中…」ウィンドウが表示されて進行状況がテキストで表示されるので、表示が消えるまでしばらく待ちます。
- 「NuGet パッケージの管理」ウィンドウの「閉じる」ボタンをクリックします。
- プロジェクトに追加された情報をVisual Studioがバックグラウンドで読み取るので、それが終了するまでしばらく待ちます。進行状況はウィンドウ下部に表示されています。全て終わると「準備完了」という表示に変わります。
- 「ソリューション エクスプローラー」に表示されている項目を「First Galileo App」→「Source Files」と選択して「Main.cpp」をダブル・クリックすると左ペインに中身が表示されます。
先ほど、テンプレートを元にプロジェクトを作成したので中身がすでに入っています:
// Main.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "arduino.h" int _tmain(int argc, _TCHAR* argv[]) { return RunArduinoSketch(); } int led = 13; // This is the pin the LED is attached to. void setup() { // TODO: Add your code here pinMode(led, OUTPUT); // Configure the pin for OUTPUT so you can turn on the LED. } // the loop routine runs over and over again forever: void loop() { // TODO: Add your code here digitalWrite(led, LOW); // turn the LED off by making the voltage LOW Log(L"LED OFF\n"); delay(1000); // wait for a second digitalWrite(led, HIGH); // turn the LED on by making the voltage HIGH Log(L"LED ON\n"); delay(1000); // wait for a second }
これはArduinoスタイルに合わせたソースコードで、書き方はかなりArduinoに似ています。関数もかなり似たものが用意されています。カンのいい人ならばこれがどのような動きをするソースコードなのかはすでにお分かりかと思いますが、いわゆる「Blink(LED点滅 / Lチカ)」を行うものです。今回はこのソース・コードをそのまま使用します。
- ウィンドウ上部にある「リモート Windows デバッガー」をクリックします。
- 「このプロジェクトは変更されています(T):」および「ビルドしますか?」と表示されるので「はい(Y)」ボタンをクリックします。
- しばらくビルドが行われます。この時にいくつか警告が出ますが、ここでは無視します。※5
- ビルドが終わると、それをWindows IoTの稼働するインテル Galileo 開発ボードへ「配置」するために認証情報を求めてきます。「Windows セキュリティ」ウィンドウが表示されたら「ユーザー名」および「パスワード」を入力して「OK」ボタンをクリックします。※6
- ウィンドウ下部にデバッグに使用する「ローカル」および「呼び出し履歴」が開かれ、インテル Galileo 開発ボード上で動作するWindows IoTでビルドしたアプリケーションが実行されます。※7
- Windows IoTで動くインテル Galileo 開発ボード上で先ほどのアプリケーションが動作し、インテル Galileo 開発ボードに挿した発光ダイオードが1000ミリ秒(1秒)ごとに点灯・消灯を繰り返すことが確認できます。※8
シャットダウンの勧め
電源を切る前にシャットダウンをしましょう。microSDメモリーカードで起動したWindows IoTは、通常のWindowsと同様にシャットダウンを経て電源を落とすべきです。ちなみに、LinuxであってもmicroSDメモリーカードから起動した場合には同様にシャットダウンを行うべきです。
まとめ
このようにインテル Galileo 開発ボードでWindows IoTを動作させ、Windows用の高機能開発環境であるVisual Studioと連携をした開発が行えることが確認できました。
どの程度のAPIが実装されていて使用できるのかなどは、時間の関係でまだ詳しくは見ることができていませんが、これまでWindowsでの開発をしてきた開発者には良い環境なのではないかと思います。一方で、Arduino互換のハードウェアを扱うことを考えると、ボードの駆動処理をWindows IoT上で動くようにポーティングする作業が発生するということもあり、このあたりを考慮する必要もあるでしょう。
いずれにしても選択肢が増えることは大歓迎です。こちらの環境も学んでいきたいと思います。
あと、できれば近いうちにGen 2でも動作するバージョンを提供していただけると嬉しいなぁ、と思う次第です。→2014年10月6日一時的に追記:Gen 2対応のアルファ版が公開されました。
2014年8月30日追記
- 目次を追加しました。
- それ以外のエディションでもVisual Studio 2013シリーズであれば多少の違いはあっても問題なく使用できるかと思います。
- インテル Galileo 開発ボードを見つけることがなかったり、USB接続のEthernetアダプターを追加した際にクラッシュしたりする症状がありました。
- インテル Galileo 開発ボードのソース/シンク電流量および一般的な発光ダイオード(LED)の耐久性の観点から、5V駆動用の抵抗入り発光ダイオードを使用することをお勧めします。
- 必要に応じてドライバーのインストールなどの対応を行ってください。
- 文字コードの設定関連の問題です。
- 前編でのWindows IoTのmicroSDメモリーカードへの書き込みを同ページの記載通りのコマンドで行っていれば、ユーザー名は「
administrator
」、パスワードは「admin
」です。 - この状態でインテル Galileo 開発ボード上のWindows IoTアプリケーションに対してVisual Studioによるデバッグ作業が行えます。
- うまく動作しない場合はここまでの作業内容を見直してみてください。