Sim's blog

電子工作はじめてみました

8月30日(月)のつぶやき

2010-08-31 01:10:15 | Twitter
06:29 from web
四則演算だけでは無理かな。8! / 7! + 1 + 1
Sim0000への問題。1 8 1 7を組み合わせて10を作れ。 http://shindanmaker.com/27613
06:30 from web
(√(2 * 5 + 0 * 1)) ^ 6 Sim0000への問題。 6 1 0 2 5を組み合わせて1000を作れ。 http://shindanmaker.com/28550
10:54 from web
Sim0000君。『ずくめ』を使って短文を作りなさい。 http://shindanmaker.com/28216 #tanbun このミミズク、目がでかい
11:05 from Echofon
うはっ RT: @arms22: @Sim0000 18-1-7=10 できた!
13:32 from web
秋月に3.3V用クリスタルSG-8002DCが大量(発振周波数が19種類)入荷。http://bit.ly/b5bX0j 仕様はPC(3.3V 1pinはOE) #akiduki
by Sim0000 on Twitter

8月29日(日)のつぶやき

2010-08-30 01:03:51 | Twitter
15:51 from web
9 + 5 - 3 - 1 Sim0000への問題。5 3 9 1を組み合わせて10を作れ。 http://shindanmaker.com/27613
15:52 from web
(8 + 2 + 5 - 5) ^ √9 Sim0000への問題。 5 2 8 5 9を組み合わせて1000を作れ。 http://shindanmaker.com/28550
15:55 from web
Sim0000君。『~らしい』を使って短文を作りなさい。 http://shindanmaker.com/28216 #tanbun 荷物にハブラシ入れた
16:02 from Echofon
RT: @handazukecafe: そろそろ上級編の始まりです。 (#hndcafe @ssci_official live at http://ustre.am/dc1v )
by Sim0000 on Twitter

8月28日(土)のつぶやき

2010-08-29 01:04:03 | Twitter
01:24 from Echofon
RT: @ssci: Netduino、31日火曜日に入荷する見込みです。早ければ今週入荷と思いましたが、うまく行きませんでした。
01:28 from Echofon
1ドル85.13円 1ユーロ108.668445円 http://quote.yahoo.co.jp/m3
01:42 from Echofon
@tokoyaさーん、こんなんでてまっせ~ RT: @ssci: ってわけで、Netduinoをご予約いただけるようにしました。8月31日までにご注文の場合は割引価格です。 http://ow.ly/2vOOx
03:27 from Echofon
おお RT: @ssci: Netduinoをアマゾンに掲載しました。よかったらどうぞ。今月中の割引も同等です。 http://www.amazon.co.jp/dp/B003XT25TY RE @hitoriblog
03:29 from web
ブログ書きました。「NetduinoでキャラクタLCD」http://bit.ly/arnYFz #netduino
03:39 from Echofon
この気軽さはたまりません RT: @ssci: Netduinoは、普通にステップ実行っていうか、デバッガが使えるのがいいね。
03:49 from web
リンク先まちがえたので再ツイート。ブログ書きました。「NetduinoでキャラクタLCD」http://bit.ly/b7xufX #netduino
04:20 from Echofon
いいっすね。デバッグ中に変数のところにカーソルを持っていくと値を表示してくれたり、ピンで留めれて、コメントまで書けるなんてあたりも^^ RT: @hitoriblog: Netduinoで使えるデバッガの便利さがよく分かる動画 http://bit.ly/c6QNkE
05:33 from web
もう外は明るい
13:05 from Echofon
お、がんばれー RT: @maris_HY: 今日は秋葉原で電子工作教室の講師。さてさて、上手くいきますかどうか。
15:01 from Echofon
おお、関東圏におられるんですね。 RT: @oguram: 秋月なう
15:31 from Echofon
おぐらむさんは、はんだづけカフェに侵攻中に違いない
16:03 from Echofon
楽しんできてください。あ、CoCoNetに寄るのもお忘れなく RT: @oguram: @Sim0000 そうなのです
16:33 from Echofon
あはは、混んでますねー RT: @fuyuton: 今、はんだづけカフェがあつい!(室温的な意味で) #hndcafe
17:39 from web
9 + 9 - 2 * 4 Sim0000への問題。9 2 4 9を組み合わせて10を作れ。 http://shindanmaker.com/27613
17:41 from web
(8 + 9 - 7) ^ (8 - 5) Sim0000への問題。 8 8 5 9 7を組み合わせて1000を作れ。 http://shindanmaker.com/28550
17:45 from web
頭、ごんとぶつけた Sim0000君。『たまご』を使って短文を作りなさい。 http://shindanmaker.com/28216 #tanbun
17:50 from Echofon
Interopですか。NETMF PKが必要そうですね。 RT: @lynxeyed_atsu: .NetMF のポーティング資料を印刷してi英辞郎片手にひたすら和訳するなどの簡単なお仕事。 http://yfrog.com/mq7q2j
17:55 from Twitpic
mouserから送られてきた分厚い本。


17:56 from Echofon
おっ、2つも使っている。やりますね。 RT: @hajimes: 頭、ごんとぶつけ泣いた孫 RT @Sim0000 頭、ごんとぶつけた Sim0000君。『たまご』を使って短文を作りなさい。 http://shindanmaker.com/28216 #tanbun
18:01 from API
#mycomj http://j.mp/9xSWje 採用者には抽選で種子島での打ち上げ見学にご招待 - JAXAがHTVの愛称を募集
18:08 from web
"Using Interop in the .NET Micro Framework V3.0" http://bit.ly/bAGvmA #netduino
20:52 from web
ソリトンウェーブの夏のOlimex製品在庫製品処分セール http://bit.ly/cdVXur これっていつまでなのかな
21:28 from Echofon
たしかflash512k ram64kでしたっけ。余裕で載りそうですね。 RT: @lynxeyed_atsu: ふーん。これってインターフェース付録ARMで.NetMFできるじゃん。
by Sim0000 on Twitter

NetduinoでキャラクタLCD

2010-08-28 03:26:31 | Netduino
Netduinoでマルチスレッドの続きになります。

Lチカの次というと、やはりキャラクタLCD出力です。小林茂さん(@kotobuki)に頂いたLCD Shieldを使ってみました。元々はArduino用のシールドですが、Netduinoでも使えるか試してみたかったのが動機です。

NetduinoのI/Oピンは入力は5Vトレラントで、出力は3.3Vです。秋月のSD1602HUOB(通販コード P-01797)はVIHのmin(LCDが入力電圧をHとみなす最小の電圧)が2.2Vなので3.3Vでも動作します。



せっかくなのでArduinoのLiquidCrystalクラスとなるべく似せてみました(Arduino 日本語リファレンス)。手抜きなので全機能は含まれていません。
書いたソースです。
using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;

namespace NetduinoLCD1
{
    public class Program
    {
        public static void Main()
        {
            // write your code here
            Debug.Print("Hello, netduino");

            CLCD lcd = new CLCD(Pins.GPIO_PIN_D12, Pins.GPIO_PIN_D11, Pins.GPIO_PIN_D5, Pins.GPIO_PIN_D4, Pins.GPIO_PIN_D3, Pins.GPIO_PIN_D2);

            lcd.puts("Hello, Netduino!");

            OutputPort LED = new OutputPort(Pins.GPIO_PIN_D13, false);
            int count = 0;

            while(true)
            {
                lcd.setCursor(0, 1);
                lcd.puts(count++.ToString());
                LED.Write(!LED.Read());

                Thread.Sleep(200);  // wait 200ms
            }
        }
    }

    // Character LCD Arduino like API by Sim
    public class CLCD
    {
        OutputPort rs, e, d4, d5, d6, d7;

        public CLCD(Cpu.Pin rs, Cpu.Pin e, Cpu.Pin d4, Cpu.Pin d5, Cpu.Pin d6, Cpu.Pin d7)
        {
            this.rs = new OutputPort(rs, false);
            this.e  = new OutputPort(e,  false);
            this.d4 = new OutputPort(d4, false);
            this.d5 = new OutputPort(d5, false);
            this.d6 = new OutputPort(d6, false);
            this.d7 = new OutputPort(d7, false);

            begin(16, 2);
        }

        public void begin(uint cols, uint lines){
            Thread.Sleep(50);   // 15ms
            rs.Write(false);
            e.Write(false);
            write4bit(0x03);
            Thread.Sleep(4);    // 4.1ms
            write4bit(0x03);
            Thread.Sleep(4);    // 4.1ms
            write4bit(0x03);
            Thread.Sleep(1);    // 0.15ms
            write4bit(0x02);

            // function set
            //    +----- DL 1:8bit 0: 4bit
            //    |+---- N  1:2line 0:1line
            //    ||+--- F  1:5x11 0:5x8
            // 00101000
            command(0x28);      // 39us

            // display control
            //
            //      +--- D 1:display on 0:display off
            //      |+-- C 1:cursor on 0:cursor off
            //      ||+- B 1:blink on 0:blink off
            // 00001100
            command(0x0c);      // 39us

            clear();

            // entry mode
            //
            //       +-- I/D 1:increment 0:decrement
            //       |+- S   1:shift on 0:shift off
            // 00000110
            command(0x06);      // 39us
        }

        public void clear()
        {
            command(0x01);
            Thread.Sleep(2);     // 1.53ms
        }

        public void home()
        {
            command(0x02);
            Thread.Sleep(2);    // 1.53ms
        }

        public void setCursor(uint x, uint y)
        {
            if(y != 0) y = 0x40;
            x &= 0x3f;
            command(0x80 | y + x);  // 39us
        }

        public void write(uint x)
        {
            rs.Write(true);     // RS = 1
            write4bit(x >> 4);
            write4bit(x);
        }

        public void puts(string s)
        {
            foreach(uint c in s) write(c);
        }

        private void command(uint x)
        {
            rs.Write(false);    // RS = 0
            write4bit(x >> 4);
            write4bit(x);
        }

        private void write4bit(uint x)
        {
            d7.Write((x & 8) != 0);
            d6.Write((x & 4) != 0);
            d5.Write((x & 2) != 0);
            d4.Write((x & 1) != 0);
            e.Write(true);
            Thread.Sleep(1);    // 450ns
            e.Write(false);
            Thread.Sleep(1);    // 37us
        }
    }
}

困ったことは、あまり細かい時間の単位で待てないというのがあります。Thread.Sleep()は1ミリ秒単位の指定しかできません。一応、ミリ秒単位に繰り上げてます。とりあえず動いているのでよしとします。

最初、write4bitやcommandのパラメータはbyteにしてたんですが、(byte)にcastしろというwarningが出ます。command(x + 1);みたいなことをすると、xがbyte型の変数でもx + 1の結果はintになってしまって、command((byte)(x + 1));のように書けというwarningになるというお話です。結局面倒になってbyteはやめてunsignedにしてしまいました。

puts()のところのforeachはかっこいいです。さすがC#って感じです。

classライブラリとかはどうやって作ればいいのか、まだ分かっていません。たぶんnamespaceとかが関係してそうです。

さて、次は何をしようかな。

8月27日(金)のつぶやき

2010-08-28 01:29:04 | Twitter
07:50 from web
6 + 6 - 4 / 2
Sim0000への問題。2 4 6 6を組み合わせて10を作れ。 http://shindanmaker.com/27613
07:52 from web
(√(8 / 2 + 6 + 0)) ^ 6 Sim0000への問題。 6 2 6 8 0を組み合わせて1000を作れ。 http://shindanmaker.com/28550
07:53 from web
10と3を作って10^3とするか、√10と6を作って(√10)^6とするあたりが定石みたいだ。
08:25 from Echofon
めもめも RT: @morecat_lab: Arduinoを使ったAVR用デバックツールavrsh。リモートでAVRのレジスタを叩いて動作をいろいろ試せる。シミュレータでは試しきれない動作の確認用に便利かも http://bit.ly/aU0b2a
10:53 from Echofon
バリウム飲んだ~
12:21 from web
バリウムを飲んで思ったこと。つくづく観測は対象に影響を与えるなあ。
13:21 from web
SHA-3 Conferenceおもしろかったみたい。http://bit.ly/c6GKT0 日本勢で唯一生き残っている日立のLuffaにはがんばってもらいたいものだ。
13:35 from web
NETMFのstring (System.String)にはなぜかFormatがない。http://bit.ly/cJaoyJ #netduino
14:18 from Echofon
RT: @hitoriblog: Netduino始めました - ひとりぶろぐ http://bit.ly/cbBDfz
14:33 from Echofon
ToString("フォーマット")で、変換文字にxが使えない。どうやって16進文字列に変換するのだろう? #netduino
15:48 from Echofon
だいじょぶっすか? RT: @yoshichika: はんだづけカフェはエアコンが動かないままです。
15:49 from Echofon
Oh, thanks RT: @skobalczyk: @Sim0000 Here is the code to convert number to hex string on netduino http://bit.ly/dvBIrx
15:53 from Echofon
コモドール64型PC、ホリデーシーズンに発売 http://japanese.engadget.com/2010/08/27/c64/
16:33 from Echofon
英語の140字と日本語の140字って、かなり分量が違う
16:43 from Echofon
const int x = 0; とか。 RT: @OuchOuchOuch: "#define X 0"はダメですか、そうですか。
by Sim0000 on Twitter

8月26日(木)のつぶやき

2010-08-27 01:12:12 | Twitter
07:52 from web
9 + 1 + 7 - 7 Sim0000への問題。9 7 1 7を組み合わせて10を作れ。 http://shindanmaker.com/27613
07:52 from web
(1 + 4 + 5) ^ (1 + 2) Sim0000への問題。 2 4 1 1 5を組み合わせて1000を作れ。 http://shindanmaker.com/28550
09:56 from API
#mycomj http://j.mp/ar0Aw8 Microchip、28pinパッケージに128KB Flashを搭載した8bit MCUを発表
10:28 from Echofon
秋月でマイクロインダクタが各種入荷してる。昇圧とかに使うタイプじゃないけど。http://bit.ly/b5bX0j #akiduki
13:22 from web
赤く塗ったら3倍にならないかな。
Sim0000の所持金は100円です。その3倍はほしいね。 http://shindanmaker.com/42787
13:25 from web
50円! RGBフルカラーLED(5mm) http://www.aitendo.co.jp/product/2515
16:03 from Echofon
Verilog HDL&VHDLテストベンチ記述の初歩 http://shop.cqpub.co.jp/hanbai/books/MDD/MDDZ201010.html
22:50 from Twitpic
Netduinoで@kotobukiさんのLCD Shieldに出力してみた。#netduino


by Sim0000 on Twitter

8月25日(水)のつぶやき

2010-08-26 01:40:29 | Twitter
00:12 from web
NETMFProjects http://www.microframeworkprojects.com/ Many samples are available. 色々なサンプルがある。 #netduino
00:13 from web
.NET Micro Framework Wiki http://wiki.microframework.nl/ Many samples are available. 色々なサンプルがある。 #netduino
00:17 from web
おっF#の本が出るのか。http://www.oreilly.co.jp/books/9784873114668/
01:19 from web
ブログ書きました。「Netduinoでマルチスレッド」http://bit.ly/arnYFz
01:23 from web
Thunderbirdの新しいヤツ、ついついメールの右上のばってんを押したくなる。認めたくないものだな、windowsユーザーゆえの過ちというものを・・・
01:26 from Echofon
あはは、チャック袋充ですね。帯電防止のはよさげ RT: @sonson1919: 秋月に発注完了。チャック袋買いまくってたら合計10K超えたんですが・・・
02:54 from Echofon
R8Cマイコンボード本。 RT: @CQ_connect: 【CQ新刊】 シリコン・ディスカバリ シリーズ すぐに使える! 実験・試作用マイコン・モジュール(近日発売) http://bit.ly/d1IwQ4
08:10 from web
3 * 3 + 8 - 7 Sim0000への問題。8 7 3 3を組み合わせて10を作れ。 http://shindanmaker.com/27613
08:11 from web
(5 + 5 + 0) ^ (7 - 2!) Sim0000への問題。 7 0 5 2 5を組み合わせて1000を作れ。 http://shindanmaker.com/28550
08:29 from Echofon
個人情報保護法を盾に、やばい外郭団体(= 天下り役人)の数値が出てこなくなったからでしょ。 RT: @yukatan: お、これかー 文系より理系が年収高い> http://bit.ly/daO1dx
10:03 from Echofon
Gigazineに出てるみたいです。 RT: @tokoya: 今敏さんの話はまだニュースとして出てきてないなぁ。誤報なら良いんだけど。
13:36 from Echofon
Arduinoケース 1260円 http://strawberry-linux.com/catalog/items?code=35010
13:58 from web
@tokoya PIC18F66J60ボードだと他にも同じものを売っているところがあります。http://bit.ly/aQL21D とか http://bit.ly/cwxo9s
15:52 from Echofon
よく分からないですけど、ダウンロードページはこちらみたいです。 http://bit.ly/bjEzDb RT: @keytan: @Sim0000 F#…気になるけどExpress Edisionでは使えないよね?
17:19 from Echofon
J.P.ホーガンの巨人シリーズって5冊目があったんだ。日本だと未翻訳。http://www.jamesphogan.com/books/book.php?titleID=36
23:41 from Echofon
あ、いけねっ。Interface買うの忘れてた
23:43 from Echofon
うがっ、エレキジャックBASICも今日だったかw
by Sim0000 on Twitter

8月24日(火)のつぶやき

2010-08-25 01:42:45 | Twitter
08:56 from Echofon
うぎゃっ RT: @Lcs_JP: 気がつくとEURが107円台
09:15 from web
(8 / 4 * (8 - 3)) ^ 3 Sim0000への問題。 4 3 8 8 3を組み合わせて1000を作れ。 http://shindanmaker.com/28550
09:16 from web
8 + 3 + 0 - 1 Sim0000への問題。0 8 3 1を組み合わせて10を作れ。 http://shindanmaker.com/27613
15:17 from Echofon
復活おめでとうございます。ファームが壊れるのは極悪ですね。 RT: @lynxeyed_atsu: .@netduino My netduino woke up! Thank you very much!
15:18 from Echofon
めもめも RT: @lynxeyed_atsu: もしそうなったらMFDeployを起動→SW1押したままUSB接続→pingが返ってきたらSW1を離してDeploy ダメならSW1押したままUSB挿抜からやり直し #netduinojp
15:31 from Echofon
H8搭載学習用CPUボードVS-WRC003LV http://akizukidenshi.com/catalog/g/gK-04104/
15:34 from Echofon
コネクタは2.54mmピッチ。薄膜キーパット(4x4) http://www.aitendo.co.jp/product/2512
21:17 from Echofon
1ドル84.24円 1ユーロ106.218216円 日本の輸出企業は壊滅だあ
by Sim0000 on Twitter

Netduinoでマルチスレッド

2010-08-25 01:15:20 | Netduino
Netduinoがきましたの続きになります。

マルチスレッドで遊んでみました。マルチスレッドがあると並列実行(実際はCPUは一つなので時分割で交互に動作)を簡単に記述できます。
以下の例題では、2つのLEDを、LED1はスレッドで250ミリ秒毎、LED2はメインスレッドで150ミリ秒毎に反転します。
using System;
using System.Threading; // Thread
using Microsoft.SPOT;   // Debug
using Microsoft.SPOT.Hardware; // OutputPort
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino; // Pins

namespace ThreadTest1
{
    public class Program
    {
        static OutputPort LED1 = new OutputPort(Pins.ONBOARD_LED, false);
        static OutputPort LED2 = new OutputPort(Pins.GPIO_PIN_D13, false);

        public static void Main()
        {
            // write your code here
            Debug.Print("Hello, Multi-Threading");
            
            Thread thread = new Thread(flash);  // 新しいスレッドの作成
            thread.Start();                     // スレッドの実行開始(ここで実行が並列になる)

            // 本スレッド側でもLED2をチカチカ
            // 無限ループ
            while (true)
            {
                LED2.Write(!LED2.Read());       // LED2反転
                Thread.Sleep(150);              // 150ミリ秒待つ
            }
        }

        // スレッド本体
        static void flash()
        {
            // 無限ループ
            while (true)
            {
                LED1.Write(!LED1.Read());       // LED1反転
                Thread.Sleep(250);              // 250ミリ秒待つ
            }
        }
    }
}

スレッドを使うには、まず準備として「using System.Threading;」をすることでThreadクラスを使えるようにします。
次に「Thread thread = new Thread(flash);」とすることでスレッドを実行するメソッド(flash)を指定します。スレッドを実行するメソッドはvoid f()という形でないといけません。この段階ではスレッド自体はスタートしていません。
最後に「thread.Start();」とすることでスレッドが実行開始されます。この段階で処理は2つに分かれて並列実行(CPUは一つなので時分割で交互に実行)されます。
すごく簡単です。

今回はスレッドの優先順位を変えたりとか、スレッドの終了待ちとかをしないので、「new Thread(flash).Start();」のように書いても動きます。1行で済んじゃいます。

残念ながら、RTOSのかわりに使えるほどではありません。RTOS(リアルタイムOS)は時間制約に関する最悪値が保証されていますが、.Net Microframeworkでは保証されていません。RTOS的な機能が必要なときは、RTOS上に.Net Microframeworkを実装することになるみたいです。例えば日立超LSIでT-Kernel上に.Net Microframeworkを載せるというソリューションを提供しています(ニュースリリース)。

通常の.Net Frameworkではdelegateを作ってBeginInvokeをする方法でもマルチスレッドを実現できるそうですが、.Net Micro Frameworkで動かそうとするとサポートしていないというエラーが出て実行できませんでした。


参考にしたのは以下の3つの記事です。
@ITの連載「.NETマルチスレッド・プログラミング入門
PS3とLinux、電子工作もさんのブログ「FEZ Dominoでマルチスレッドを動かす
TinyCLRの「Beginners Guide to C# and .NET Micro Framework」(pdf)のThreadingの章

8月23日(月)のつぶやき

2010-08-24 02:31:40 | Twitter
04:02 from web
ブログ書きました。「Netduinoがきました」http://bit.ly/buTKeh
13:54 from Echofon
SPOTはSmart Personal Objects Technologyの略
23:19 from Echofon
delegateを作って、BeginInvokeしようとしたけど、サポートしてないって怒られた。 #netduino
23:21 from web
new Thread( )に渡すのはThreadStartのはずなんだけど、なぜかスレッド処理を直接書いても動く。不思議 #netduino
by Sim0000 on Twitter

Netduinoがきました

2010-08-23 03:35:39 | Netduino
スイッチサイエンスさんで話題のnetduinoの取り扱いが始まりました。
スイッチサイエンスさんはArduinoやSparkFun製品の通販をしている会社で、秋葉原で無料の「はんだづけカフェ」をされていることでも有名です(はんだづけカフェのTwitter)。はんだづけカフェについては中の人が書かれているブログが詳しいです。

発売記念ということで、数名のモニターを募集していました。当選したのでブログでレポートします。


netduinoの特徴

- Arduinoとピン配置が同じ。全てではありませんが転用できるArduino用シールドもあります。出力は3.3Vで入力は5Vトレラントです。
- Microsoftの.Net Micro Framework環境が実装されているのでC#を使った開発が可能。
- 開発環境は全て無料。特にnetduinoではファームウェアもオープンソースとして公開しています(ダウンロードページ)。
- 本体価格が安い。3495円と、Arduino Duemilanoveとほとんど同じ値段です。

同じ特徴をもつ製品としてはFEZ Dominoがあります。こちらも同じスイッチサイエンスさんで取り扱っています(商品ページ)。


パッケージは黒です。USBケーブルが付属しています。


パッケージを開けました。中にはゴム足と謎の紙が同梱されています。

Arduinoそっくりですね。

というわけで並べてみました。

左から、Arduino DuemilanoveJapaninonetduinoFEZ Dominoです。


開発環境のインストール

CDはないので、開発ソフトやドライバーは全てネット経由でnetduinoのホームページ(netduino.com)
からダウンロードします。

netduinoをPCにつなぐ前にソフトウェアのインストールを完了しておかないといけません。インストールするものは3つで、インストールする順番も決まっています。間違えないようにしないといけません。

(1) Microsoft Visual C# Express 2010
(2) .NET Micro Framework SDK v4.1
(3) Netduino SDK v4.1.0 (32bit版64bit版)

簡単に言うとnetduinoのダウンロードページを上から順にインストールします。ちなみにOSはwindows XP, Windows Vista, Windows 7の32bit/64bit環境です。


マイクロUSB

netduinoのUSBケーブルはマイクロUSBです。

海外では携帯用によくあるらしいのですが、日本ではあまり見かけません。マイクロUSBのケーブルは秋月で入手可能です(通販コード C-02429)。マイクロUSBについてはhamayanさんと熾火研究所さんにtwitterで教えていただきました。ありがとうございます。


MFDeproy.exe

.NET Micro Framework SDKをインストールするとMFDeproy.exeというツールがPCにインストールされます。Pingという接続テストをしたり、ターゲットの情報を取得したりできます。ファームウェアの消去みたいな怖いコマンドもあるので使うときには注意が必要です。

MFDeproyを起動したところです。

DeviceをUSBにして、Targetメニュー→Device Capabilitiesを実行した画面です。ファームウェアのバージョンが確認できます。SolutionReleaseInfo.solutionVendorInfoを見ると4.1.0.1になっています(写真はスクロールして見えなくなっています)。netduinoの最新のファームウェアは4.1.0.2なので一つ古いファームウェアです。
最新のファームウェアはnetduino.comのCommunityのこちらの記事からダウンロードできます(ダウンロードにはCommunityへの参加が必要です)。


FEZ Dominoとの共存

せっかく両方とも持っているので、試してみました。電源付きのハブで2つも問題なく動いています。

ソフト開発も、新しいプロジェクトの作成時に「FEZ Domino Application」と「Netduino Application」を選択するだけです。Microsoftが作った部分は共通ですが、ボードメーカーが拡張した部分のクラスライブラリは勝手に作っているので微妙に仕様が違ったりします。


情報源

開発環境のインストールや初めてのプログラム作成(Lチカ)を解説した、ネットからダウンロードできる資料が既にいくつかあります。まだ日本に上陸してから数日なのに日本語情報も色々出始めています。

- 本家netduinoの「getting start guide」(pdf) 英語です。
- Microsoftの.NET Micro Frameworkのページ。.NET Micro FrameworkのAPIリファレンス。日本語の開発者向け情報
- FEZ Dominoの開発元のTINYCLRのチュートリアルも役に立ちます(ダウンロードページ)。You Tubeのビデオもあります(ただし英語)。特にBeginners E-Book(pdf)にはC#の解説があります(英語)。
- TINYCLRの輸入販売代理店株式会社デバイスドライバーズにはFEZ Dominoの日本語情報ページTINYCLR.jpがあります。

- NETMFProjects。色々なサンプルがいっぱいあります。
- .NET Micro Framework Wiki。色々なサンプルがいっぱいあります。

- MAKE:Japanの記事「Maker Shedの新製品 Netduino - .NETベースのオープンソースエレクトロニクスプラットフォーム
- PS3とLinux、電子工作もさんのブログ、「Netduino Get」、他にもFEZ Domino関連の有用な情報があります。
- CuBeatSystemsさんのブログ「Netduinoを始めよう(環境構築編)」「Netduinoを始めよう(プログラミング初めの一歩編)
- Lynx-EyEDの電音鍵盤さんのブログ「netduinoでOLED制御してみた」。最近各所で人気のaitendoOLEDをさっそく使っています。
- 同じくモニターに当たった「冬斗のつぶやき」さんも日記風にnetduino情報を公開されています。
- Java Enthusiastさん「Netduinoを触ってみる (1)
- 同じくモニターに当たったひとりぶろぐさん、「Netduino始めました」「NetduinoをMacで使いたい!
- いつもお世話になっている、いしかわきょ-すけさんや森秀樹さんもさっそく試されたようです。

- やまねこのマイコン実験室さんのwiki。とても丁寧な解説があります。

- EDK。他の.NET Micro Framework対応マイコンボード。これも$50と安い。ただしArduino互換ではありません。

- Interface 2009年12月号の記事「.NET Micro Frameworkによるネットワーク端末の製作」

- Twitter 中の人 @netduino タグ #netduino

- C# によるプログラミング入門
- 改訂版 C#入門


雑感

なんといってもC#を使えるのがいいです。マルチスレッドとかstringクラスとか使えちゃいます。なんとカベージコレクタまでいます。もっともガベージコレクタが動くとやたら時間がかかります。netduinoにも含まれているかどうか分かりませんが、.NET Micro Framework自体はグラフィックスやTCP/IPのプロトコルスタックもサポートしているらしいです。

.NET Frameworkは、色々な言語を中間言語(IL)にコンパイルして、ILを実行します。ILを直接動かせるCPUはないのでJITでネイティブコードに落として実行したり、インタプリタで実行したりします。PCの場合はJITなので速度的に不利な点はあまりないのですが、.NET Micro Frameworkだとインタプリタ方式なので、かなり遅くなります。
また、.NET Micro Frameworkでは開発言語としてC#のみをサポートしているようです(要確認)。VBとかC++とかでも開発できるようになってほしいところです。後はネイティブコンパイラかな。

Arduinoと較べると、デバッグができるのが一番うれしいです。エミュレータもあります。複雑なロジックなんかはPC上でC#で作っちゃうなんてこともできます。

プロトタイピングということだと、netduinoで試作品を作ったものを他の環境(製品とか)に持っていこうとすると、.NET Micro Frameworkそのものの移植も作業に含まれるので結構たいへんそうです。Arduinoの場合だと、スケッチを書き込んだATMega328を抜いて他の環境に挿してしまえば、それで終わりです。もっともこれだけ安いと他の環境にもっていかずにそのまま組み込んで使ってもいいくらいです。

Arduinoと違う点で注意しないといけないのは、I/Oの電圧と最大流せる電流です。netduinoはかなり少ないみたいです(後で調べる、netduino固有な点)。

.NET Micro Framework自体の移植もporting kitを使うことで行えます。STBeeだとぎりぎり載せれます。

スイッチサイエンスさんで、発売記念価格で限定40セット売り出したところ、次の日には売り切れてました。ちょこっと試してみるにはお手ごろな感じです。

とにかく、これからが楽しみなデバイスです。
特に1社ではなく複数の会社からボードが出てきているあたりは期待が持てます。

モニターということで、このような楽しいデバイスで遊ぶ機会をくださったスイッチサイエンスさんに感謝いたします。

8/25 追記 NETMFProjectsと.NET Micro Framework Wikiを追加。C#入門関連を追加。
8/28 追記 ひとりぶろぐさんを追加

8月22日(日)のつぶやき

2010-08-23 01:16:44 | Twitter
12:48 from web
「怖いわ、許して」
Sim0000君。『いわゆる』を使って短文を作りなさい。 http://shindanmaker.com/28216 #tanbun
12:49 from web
暑くて寝てられない。エアコン全開だあ
12:55 from web
(8 + 7 + 5) / 2 Sim0000への問題。8 5 2 7を組み合わせて10を作れ。 http://shindanmaker.com/27613
12:57 from web
(4 + 7 - 0!) ^ (8 - 5) Sim0000への問題。 4 8 5 7 0を組み合わせて1000を作れ。 http://shindanmaker.com/28550
13:04 from web
C#じゃなかったー Sim0000へのお勧めのコンピュータ言語は『C/C++』です。 http://shindanmaker.com/12547
by Sim0000 on Twitter

8月21日(土)のつぶやき

2010-08-22 01:19:06 | Twitter
10:19 from Echofon
String.Formatで代用とか? RT: @lynxeyed_atsu: ぬがっ。C#はSprintfないじゃんw
10:52 from web
Sim0000君。『れんらく』を使って短文を作りなさい。 http://shindanmaker.com/28216 #tanbun 「この訓練、楽すぎ」
10:56 from web
4 / 2 * 5 * 1 Sim0000への問題。2 5 4 1を組み合わせて10を作れ。 http://shindanmaker.com/27613
11:07 from web
リレーでコンピュータ作る話。すげー http://web.cecs.pdx.edu/~harry/Relay/RelayPaper.htm
11:12 from web
(√(√9 + 7)) ^ (7 - 2 / 2) Sim0000への問題。 9 7 2 2 7を組み合わせて1000を作れ。 http://shindanmaker.com/28550
12:48 from Echofon
客が来るので外出できない・・・。今日はハムフェアの日だっけ
13:35 from web
川崎あたりの花火大会。多摩川 http://bit.ly/3u4ExB 鶴見川 http://bit.ly/afESBd
14:26 from web
6回裏11-0って、
14:26 from web
と思ったら2点追加で13-0か、一方的だな。沖縄強すぎ
20:30 from Echofon
うちも届いてました。なんだったっけなあw RT: @oguram: エレキジャックの基板が当たった。日にちが経ちすぎているので、何の基板なのか調べる作業開始。 *P3
20:32 from Echofon
不思議と最近よく聞きます。KOZOS本とかFEZ Dominoとか。 RT: @OuchOuchOuch: XMODEMだって?何年ぶりに聞く言葉。
20:36 from web
C8051F500評価ボード[EB-C8051F500] http://www.aitendo.co.jp/product/2498 日本だとあまり見かけない?
21:05 from Echofon
ワニ口なアリエッティ
by Sim0000 on Twitter

8月20日(金)のつぶやき

2010-08-21 02:24:31 | Twitter
11:19 from web
Sim0000君。『あまたの』を使って短文を作りなさい。 http://shindanmaker.com/28216 #tanbun 「このアマ」「頼むからぶたないで」
11:56 from web
@jh3kxm さんのブログ(http://bit.ly/90YYKA)経由、「世界の山ちゃん 幻の手羽先しっとりせんべい」http://bit.ly/5aRtgP
12:01 from Echofon
ありがとうございます。せっかく教えていただいてたのに気づいてませんでしたm(_ _)m RT: @OkibiWorksLabo: それ秋月で売ってますね。C-02429 1本持ってました。
14:35 from web
世界の山ちゃん、川崎にも2軒ある。都内にはなんと15軒。http://www.yamachan.co.jp/shop/shop.html 秋葉にもある。
14:44 from web
共立エレショップにcoolrunner-IIが入荷してる。http://eleshop.jp/shop/
16:45 from Echofon
横浜にないのが意外ですね。 RT: @jh3kxm: アキバにもあるとは。関西にはテイクアウト店が1つしかないのに。」RT @Sim0000: 世界の山ちゃん、川崎にも2軒ある。都内にはなんと15軒 http://bit.ly/6uNeil 秋葉にもある。
by Sim0000 on Twitter

8月19日(木)のつぶやき

2010-08-20 02:03:47 | Twitter
13:52 from web
Sim0000を一言で表すと『オムライス』です。 http://shindanmaker.com/40692 #twitshindan
13:57 from web
Sim0000君。『かわきりに』を使って短文を作りなさい。 http://shindanmaker.com/28216 #tanbun 喉が渇き、離乳食を食べた。
13:58 from web
若者の.lzhばなれ
19:19 from Echofon
ありゃま、セキュリティのためなんですね。 RT: @jujurou: @Sim0000 こういう理由からですね。 http://www2.nsknet.or.jp/~micco/notes/ann.htm
19:20 from Echofon
ジェネレーションギャップを感じるw RT: @u_akihiro: 若者は、見たことないだけだって^^/ RT @Sim0000: 若者の.lzhばなれ
19:21 from Echofon
おうちにもNetduinoが届いてました。さっそくいじろう。
19:24 from web
また、ネットワークの調子が悪くなった。しかたないのでUSB LANアダプタで接続中。
20:16 from Echofon (Re: @keytan
@keytan USBケーブルが見たことがないタイプなので、驚きました。ファームウェアは最新の4.1.0.2ではなく4.1.0.1でした>Netduino
22:06 from Echofon
とりあえずNetduinoでLチカ完了
22:07 from Echofon
Fez Dominoも試してみようとしたら、ファームウェアのバージョンがあってなくて、アップグレードに手間取った。XMODEMを1kモードにしないと転送できない・・・
22:11 from Echofon
VS2010付属のILDASMというツールで一応逆アセンブルできたりします。RT: @hmori: ブレークして逆アセンブルをしようとしたら「利用できる逆アセンブルがありません」どうやらそういう事はできないらしい
22:13 from Echofon
たしか西川は日曜はやってなかったような気がします。 RT: @yuna_digick: @air_variable 西川って長いの置いてますか?あれば切断するのですが…。 [家]
22:32 from Twitpic
FEZ DominoとNetduino。並べてLチカ


22:43 from Twitpic
Netduinoの謎なUSBコネクタ用ケーブル


22:58 from Echofon (Re: @Fantom_JAC
@Fantom_JAC @lynxeyed_atsu ありがとうございます。これがマイクロUSBというやつなのですね。初めて見ました。日本だとあまり見かけないかも。
23:20 from Echofon
なんと!秋月で買えるんですね。RT: @chobichan: @Sim0000" target=_blank rel="nofollow">http://bit.ly/9ovsh@Sim0000 Netduinoの謎なUSBコネクタ用ケーブル
by Sim0000 on Twitter