PinKit ( GR Peach )で.NET Micro Frameworkを動かす

ルネサス製ARM9 CPUが載ったGR-PEACHで、.NET Micro Frameworkを使ってC#やVisual Basicでプログラムする方法を解説します。

ESEC2015で予約販売中のPinKit、勿論、.NET Micro Frameworkが動きます。

セットアップは簡単。

先ず、https://netmf.github.io  からリンクをたどって、.NET Micro Framework SDK 4.3(QFE2-RTM)をダウンロード&インストールします。Visual Studioは2012、2013、2015が利用可能です。
※Visual Studio 2015は、https://www.visualstudio.com/ja-jp から無償版のCommunity 2015をインストール可能です。
ZIPファイルを解凍し、MicroFrameworkSDK.msiを実行します。その後、Visual Studio 2012の場合はnetmfvs2012.vsix、Visual Studio 2013の場合はnetmfvs2013.vsixを、Visual Studio 2015の場合はnetmfvs14.vsixを実行します。
※Visual Studio 2015の場合は、自動的に4.4にアップロードする設定がデフォルトでなされているので、SDKをインストールした後、メニューの”ツール”→”拡張と更新プログラム”で、.NET Micro Framework project systemの”この機能を自動的に更新する”のチェックを外してください。

次に、https://netmf4mbed.codeplex.com/ の右上の”download"タブから最新版のファームウェアをダウンロードし、適当な場所に保存します。ダウンロードしたZIPファイルは、プロパティでブロックを外してから、解凍しておいてください。

GR PEACHの端のUSBポートにマイクロUSBケーブルをつないでPCに接続します。

すると、ファイルエクスプローラーが開きます。そこに、https://netmf4mbed.codeplex.com/ からダウンロードしてきたZIPファイルの解凍後の中身をコピー&ペーストします。

これで完了。Windows 8.1以降のWindows PCならそのまま、GR PEACHの真ん中のUSBポートにつなぎかえれば、Visual Studioを使って、.NET Micro Framework上で動作する、C#、VBのプログラムを動かせます。

Wiindows 8.1より前のOSが入っているPCでは、https://aka.ms/IoTKitHoLPDD からZIPファイルをダウンロードし、ブロックを解除して、ZIPファイルを解凍。中に入っているINSTALL.cmdを実行してから、USBケーブルでPCに接続してください、

アプリケーションは、Visual Studioで作成します。以下、Visual Studio 2015で例を示しますが、操作方法は、2012/2013でも同じです。

先ず、Visual Studio 2015を起動します。起動したら、メニューの”ファイル”→”新規作成”→”プロジェクト”を選択します。

左のパンでVisual C#の下の、Micro Frameworkを選択し、”Window Application”を選択し、”OK”ボタンをクリックします。

ソリューションエクスプローラーで、作成したプロジェクト(”MFWindowApplication1”)を右クリックして、”追加”→”クラス”を選択します。

表示されたダイアログの左のパンで、Visual C#→Micro Frameworkを選択して、”クラス”を選択し、”名前”に”BoardFullColorLED”と入力し、”追加”ボタンをクリックします。

出来上がった、BoardFullColorLED.csを開いて、以下のコードで上書きします。

using System;using Microsoft.SPOT;using Microsoft.SPOT.Hardware; namespace MFWindowApplication1{    class BoardFullColorLED    {        private const Cpu.Pin pinRed = (Cpu.Pin)0x6d;        private const Cpu.Pin pinGreen = (Cpu.Pin)0x6e;        private const Cpu.Pin pinBlue = (Cpu.Pin)0x6f;         private OutputPort portRed;             private OutputPort portGreen;           private OutputPort portBlue;            public BoardFullColorLED()        {            portRed = new OutputPort(pinRed, false);            portGreen = new OutputPort(pinGreen, false);            portBlue = new OutputPort(pinBlue, false);        }         public void SetRgb(bool redOn, bool greenOn, bool blueOn)        {            portRed.Write(redOn);            portGreen.Write(greenOn);            portBlue.Write(blueOn);        }         public void SetColor(Colors color)        {            int redFlag = (int)color & (int)Colors.Red;            int greenFlag = (int)color & (int)Colors.Green;            int blueFlag = (int)color & (int)Colors.Blue;            portRed.Write(redFlag != 0);            portGreen.Write(greenFlag != 0);            portBlue.Write(blueFlag != 0);        }         public enum Colors        {            Black = 0,            Red = 1,            Green = 2,            Yellow = 3,            Blue = 4,            Magenta = 5,            Cyan = 6,            White = 7        }    }}

簡単に説明しておくと、ボード上のLEDの赤、緑、青は、それぞれ、GPIOのピン、0x6d、0x6e、0x6fにマップされていて、trueにすると点灯、falseにすると消灯するようになっていて、今追加したクラスは、アプリケーションからLEDの色を指定して点灯消灯する機能を実装しています。

次に、Program.csを開いて、25行目の

private Window mainWindow;

の直後に、

private BoardFullColorLED led;

という行を追加します。

そして、Button.Focus(mainWindow);という行と、return mainWindow;という行の間に、以下のコードを挿入します。

            led = new BoardFullColorLED();            BoardFullColorLED.Colors[] colors = { BoardFullColorLED.Colors.Red, BoardFullColorLED.Colors.Green,                BoardFullColorLED.Colors.Yellow, BoardFullColorLED.Colors.Blue, BoardFullColorLED.Colors.Magenta,                BoardFullColorLED.Colors.Cyan, BoardFullColorLED.Colors.White };            int turnOnIndex = 0;            bool turnOn = true;            new Thread(() =>            {                while (true)                {                    if (turnOn)                    {                        led.SetColor(colors[turnOnIndex]);                        if (++turnOnIndex >= colors.Length)                        {                            turnOnIndex = 0;                        }                    }                    else                    {                        led.SetColor(BoardFullColorLED.Colors.Black);                    }                    turnOn = !turnOn;                    Thread.Sleep(1000);                }            }).Start();

さらに、7行目に

using System.Threading;

という行を追加します。

これでコードの編集は完了。

ソリューションエクスプローラーで、プロジェクトを右クリックして、コンテキストメニューの”プロパティ”を選択します。

.NET Micro Frameworkタブで、Transportを”USB”に変更すると、”Device”にGR_PEACH_GR_PEACHと表示されます。この設定で、GR-PEACHにプログラムが転送されるようになります。

メニューの”▶開始”をクリックすると、ソースコードのビルド、ボードへの配置、ボード上でのアプリ実行が順次行われます。

一秒おきに点滅し、順次色が変わっていきます。

簡単ですね。色々試してみてくださいね。

GR-PEACHへの.NET Micro Framework移植は、IoTあるじゃんというコミュニティで実践しています。興味のある方は是非、ご参加ください。https://www.facebook.com/groups/ioytjp/

作業が終わったら、https://aka.ms/IoTKitHoL をチャレンジ‼