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


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

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

セットアップは簡単。

先ず、http://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の”この機能を自動的に更新する”のチェックを外してください。

次に、http://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 をチャレンジ‼

 

Comments (3)

  1. lxm702 より:

    記載通りに実施し、最後の「開始」を実行すると、LEDが赤色に点灯し、以降、USBからGR-PEACHを認識しなくなります。
    Visual Studio 2015からGR-PEACHを認識しないため、どのような状況かわからない状況です。
    GR-PEACHを再起動しても変わりません。
    対処方法はないでしょうか?

    1. Hiroshi Ota MS より:

      時間がたってからの返答で申し訳ないです。
      既にhttp://aka.ms/IoTKitHoLV3On のコンテンツは更新されているので、最新版のページで書いていきます。
      Page29に記載のDevice Managerで、GR-PEACHは正しく表示されていますでしょうか?
      ユニバーサルシリアルバスデバイスとして認識されていないようでしたら、USBのポートを差し替えてみるなど試してみてください。
      他にWindows 8.1以降のPCがありましたら、そちらにつないで、Device Managerで表示されるかも確認してみてください。
      正しく表示されないよいうなら、P23~24に従ってファームウェアを更新してみてください。
      ファームウェアは、https://1drv.ms/u/s!Aihe6QsTtyqcsv5XAXnp9LlJoIlLyg です。
      ファームウェア更新後、P30を参考に、MACアドレスの設定とSSLのSEEDを更新してください。

      1. lxm702 より:

        ご回答ありがとうございます。確認が遅くなり申し訳ありません。
        Device Managerでは正しく表示されていましたが、ファームウェアを更新したら「MFDeploy.exe」で、GR_PEACH_GR_PEACHが表示されるようになりました。
        ありがとうございました!!。

Skip to main content