2010/08/26(木)Netduinoにお触りしてみた

2010/08/29 06:09 netduinoimportnucho
Netduinoとは.Net Micro Frameworkが組み込まれており、VisualC#上で開発ができるちょっとびっくりなマイコンボードです。
これによってオプジェクト指向プログラミング、デバッグ、マルチスレッド処理などができることが特徴かと思います。
またArduinoとピン互換でArduino用のシールドが使える(かもしれない)上に、3500円程度と安価
これは買うしかないということで、ひとつ購入してみました。

見た目

100829-051835.jpg

セット内容は以下のようになってます。
  • Netduino本体
  • microUSBケーブル
  • ゴム足
  • Microsoft Tag
NetduinoはmicorUSBという今のところまだ流行っていないコネクタが使用されていますが、ケーブルまで付属しているので安心ですね。
MicrosoftTagは Microsoftが考えたQRコードのような2次元バーコードらしいです。読み込むとNetduinoのサイトに飛ばされます。

セットアップ

netduinoのサイトのdownloadのところのdevelopment environmentに従って、
  1. Microsoft Visual C# Express 2010
  2. .NET Micro Framework SDK v4.1
  3. Netduino SDK v4.1.0 (32-bit) or Netduino SDK v4.1.0 (64-bit)
の順番にインストールしましょう。

セットアップやプロジェクトの作り方などの説明はやまねこのマイコン実験室というサイト様がわかりやすくまとめられていて、とても助かりました。

大人の科学マガジン付属のPOVを動かしてみた

とりあえず試してみようということで、大人の科学マガジン Vol27について来ていたPOVをnetduinoで動かしてみました。

100827-211632.jpg

using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;

namespace japanino_pov
{
    public class Program
    {
        public static void Main()
        {
            // ビットマップ(画像)を定義
            byte[] bitmap = 
                new byte[] {0x00, 0x41, 0x7f, 0x41, 0x00, 0x00, 0x0e, 0x1f, 0x3f, 0x7e, 0x3f, 0x1f, 0x0e, 0x00, 0x00, 0x3f, 0x40, 0x40, 0x3f, 0x80};

            OutputPort[] led = new OutputPort[7];
            led[0] = new OutputPort(Pins.GPIO_PIN_D7, false);
            led[1] = new OutputPort(Pins.GPIO_PIN_D8, false);
            led[2] = new OutputPort(Pins.GPIO_PIN_D9, false);
            led[3] = new OutputPort(Pins.GPIO_PIN_D10, false);
            led[4] = new OutputPort(Pins.GPIO_PIN_D11, false);
            led[5] = new OutputPort(Pins.GPIO_PIN_D12, false);
            led[6] = new OutputPort(Pins.GPIO_PIN_D13, false);

            InputPort sw = new InputPort(Pins.GPIO_PIN_D6,false,Port.ResistorMode.PullUp);

            int pos = 0; //現在のビットマップ中の位置
            int i=0;
            while (true)
            {

                if (sw.Read() == false)//スイッチがオンならば一回描画
                {
                    Thread.Sleep(6);// すぐ始めると詰まって見えるのでちょっと待つ
                    pos = 0;

                    while (bitmap[++pos] != 0x80)
                    {
                        for (i = 0; i < 7; i++)
                        {
                            led[6 - i].Write(((bitmap[pos] >> i) & 0x01) == 1);
                        }
                        Thread.Sleep(1);//LEDが光っている時間
                    }
                    
                }

                for (i = 0; i < 7; i++)
                {  // 全ドット、消灯
                    led[i].Write(false);
                }
            }
        }
    }
}
芸のないことに「I♥U」と表示するスケッチをそのまま移植しただけです。
ArduinoよりもI/Oに最大流せる電流が大分少ないらしいですが、LED7つくらいなら余裕ですね。


感想

Visual Stdioでの開発に関してですが、ArduinoIDEよりもさらにPC上の開発がそのまま外部へ出てきてる感じで非常にやりやすいです。(ちょっと変な表現ですが^^;)

開発環境に関して文句はないんですが、ただ個人的にはピン数がちょっと少ないかなぁと。
Arduinoのシールドと互換性を持たせたかったのはわかるんですけれど、ピンを二列ピンヘッダにしてみるとかある程度互換性を犠牲にしてもIOを増やして欲しかったですねえ。
でもそうするとちょっとお高めになるのかな?

以上、少しお触りしてみた雑感でした。
積まずにここから何か発展させてみたいところです…。

Microsoft Tagを読んでみた

おまけでnetduinoに同梱されているMicrosoft Tagをハイブリさんで読んでみました。
タグのリーダーに関してはここからWindowsPhone用のものをインストールして使いました。

インストールしてアプリを実行したところです。
20100829053845.jpg

オートフォーカスが使えないため常にブレっぱなしです。これでは読めっこないですね。
また、機種依存でしょうが表示されているカメラ画像が反時計回りに90度ずれていて、左に動かすと画面が下に、下に動かすと画面が右にというように動きます。
慣れない動きでかなりの脳トレになりそうですが、使う上では単なるストレスですので何とかして欲しいところですね…。

と、何だかんだ文句を言いましたが「Menu→Setting→Use Snap Mode」にチェックを入れることで、普段使っているカメラアプリで写真を取り込むことが出来ます。これを使えばOKです。

Tagを中心に合わせて読み込んだら無事以下のように飛ばされました。
20100829054259.jpg


うーん、MicrosoftTagは流行るんでしょうかねえ。
それでも他の環境のアプリはもう少し使い安いのかな…。