IoT Kit ハンズオントレーニングをエミュレータで行う

https://aka.ms/IoTKitHoL から公開中のハンズオントレーニング、現在はGHI Electronics社製FEZ Spiderを使った内容になっています。もうすぐGR PEACH+センサーボードを使った場合の内容も追加する予定ですが、ハードウェアが無くてもとりあえずやりたい、という方もいるかなと思うので、Emulatorによる実習方法を解説します。

Emulatorでの開発環境は、Visual Studio 2013 (有償版、Community版どちらでも可)に以下の二つのSDKをインストールします。

  • .NET Micro Framework SDK(https://netmf.codeplex.com/のdownloadからZIPファイルをダウンロードし、MSIとVSIXファイルを実行)
  • .NET Gadgeteer Core SDK(https://gadgeteer.codeplex.comのdownloadからGadgeteer Core SDKをダウンロードし、MSIファイルを実行)

次に、https://aka.ms/IoTKitHoL の”事前準備”ページから公開されているIoT Kit Emulatorのエミュレーターインストーラーをダウンロード&MSIファイルを実行してEmulator本体をインストールします。同じページの”エミュレーター用ライブラリ一式”をダウンロードしてファイルのプロパティでブロックを解除し、解凍しておきます。

これで準備は完了。

次に、IoT Kitハンズオントレーニングを実施するためのプロジェクト作成方法を説明します。

Visual Studio 2013を起動し、メニューの”ファイル”→”新規作成”→”プロジェクト”を選択し、”Visual C#”の”Micro Framework"カテゴリの”Console Application”で、新規にプロジェクトを作成します。

プロジェクト作成時にできた、ソリューションの場所をファイルエクスプローラーで開きます。(ソリューションビューで、ソリューションを右クリックして”エクスプローラーでフォルダーを開く”を選択)
その場所に”Library”という名前でフォルダーを作成し、エミュレータ用ライブラリ一式でダウンロードしたZIPファイルの中身を丸ごとコピーします。

ソリューションビューで、”参照設定”を右クリックし、”参照の追加”を選択します。表示されたダイアログの".NET”タブで、”Gadgeteer”を先ず追加します。次にもう一度参照設定のダイアログを表示させ、”参照”タブを選択して、”Library”フォルダーにコピーした、”EGIoTKit.dll"と”EGIoTKitEmulator.Modules.dll”を選択して、追加します。
これで、Emulatorに実装されている温度センサーや加速度センサーを使えるようになります。

さて、プロジェクトに、”EmulatorInitializer.cs”という名前で、C#ソースファイルを追加します。そして、その中身を、

using System;
using Microsoft.SPOT;

namespace ProjectName
{
    public partial class Program : Gadgeteer.Program
    {
        public static void Main()
        {
            Program.Mainboard = new EGIoTKitEmulator.Modules.EGIoTKiTEmulatorMainboard();

            var program = new Program();
            program.InitializeModules();

            program.ProgramStarted();

            program.Run();
        }

        private void InitializeModules()
        {
            //
        }

        protected new static EGIoTKitEmulator.Modules.EGIoTKiTEmulatorMainboard Mainboard
        {
            get
            {
                return ((EGIoTKitEmulator.Modules.EGIoTKiTEmulatorMainboard)(Gadgeteer.Program.Mainboard));
            }
            set
            {
                Gadgeteer.Program.Mainboard = value;
            }
        }
    }
}

とします。※"ProjectName"は、プロジェクト作成時に指定したプロジェクト名です。

次に、プロジェクトを作成した時に自動的に出来上がるProgram.csファイルのProgramクラスを以下の様に変更します。

    public partial class Program
    {
        public void ProgramStarted()
        {
            var accelerometer = Mainboard.AccelerometerSensor;
            var temperature = Mainboard.TemperatureSensor;
        }
    }

ProgramStartedメソッドの中では、Emulatorの加速度センサーと温度センサーを取り出すコードを書いています。この二つの変数を使えば、IoT KitハンズオントレーニングのStep2~5を実施できます。※Relayは、インテリセンスを駆使して自分で調べてみてください。

後は、ソリューションエクスプローラーで、プロジェクトを右クリックして”プロパティ”を選択し、”.NET Micro Framework”タブをクリックして、”Device:”を”EGIoTKitEmulator”に選択し直します。これで、F5実行で、以下の様なEmulatorが起動します。

右上のTemperatureは、Room Tの値にホワイトノイズが乗った値を供給します。Touchのチェックを入れると、Figure Tの値まで漸近していき、指でセンサーを触った状態をエミュレートします。チェックを外せば、Room Tに漸近していきます。
左下のAccelerometerは、デフォルトでは、Zのマイナス方向に1Gがかかった状態でホワイトノイズが乗った値を供給します。Shakeにチェックを入れるとボードを揺らした状態をエミュレートします。ピンク色の板をマウスで動かすと、ボードの角度が変わり、それに合わせて加速度のX、Y、Zの値が変わります。元の状態(Z軸のマイナス方向に1G)に戻したい場合はResetボタンをクリックします。

Emulator本体やライブラリは、https://github.com/ms-iotkithol-jp/Emulator や、https://github.com/ms-iotkithol-jp/Gadgeteer から公開しているので興味のある方はご参照ください。