2010年8月25日水曜日

☆ボードオレンジ:「活用事例3:wiiヌンチャクを使ってチョロQを運転しよう!」

先日の活用事例2では赤外線受信機能を設計実装して、赤外線リモコンでmbedを制御するというものでした。

今回の活用事例3では赤外線送信機能を追加し、デモアプリケーションとしてチョロQハイブリッドを制御するプログラムを御紹介します。

http://mbed.org/users/shintamainjp/notebook/starboard_example3_ja/


今回設計した赤外線送受信ライブラリを使えば、受信した信号と同じものを送信することができるようになります。家庭にある赤外線リモコンを片っ端に調べてみると面白いことがわかるかもしれません。


ちなみにチョロQハイブリッドはタカラトミーが作ったものですが、赤外線リモコンのフォーマットはソニーのもの。両者の関係がこんなところにも見えるのは面白いものです。

今回はwiiヌンチャクを使ってチョロQを運転できるようにしました。
mbedを寝かせっぱなしの方がいましたら、是非お試し下さい。

2010年8月22日日曜日

Netduinoを始めよう(プログラミング初めの一歩編)

開発環境を起動します。
起動時に「評価目的に限ります」と表示されますが、これは登録することで表示されなくなります。
ここでは気にする必要はありません。
まずはNetduino用のプロジェクトを作成しましょう。
「ファイル」から「新しいプロジェクト」を選択します。
Visual C#のMicro Frameworkを選択し、「Netduino Application」をクリックして次に進みます。
プロジェクトが作成されると画面左下に以下のようなメッセージが表示されます。
プロジェクトにあるProgram.csを開いてみてください。
以下のようなスケルトンが生成されていると思います。
スケルトンの// write your code hereの下に以下のようなコードを挿入します。
            // write your code here
            OutputPort led = new OutputPort(Pins.ONBOARD_LED, false);
            while (true)
            {
                led.Write(true); // turn on the LED
                Thread.Sleep(250); // sleep for 250ms
                led.Write(false); // turn off the LED
                Thread.Sleep(250); // sleep for 250ms
            }
コードを記述したらビルドしてみましょう。
ここで慌てて実行しないように。
以下のようなエミュレータが起動しますが、今回これは使いません。
エミュレータは終了して下さい。
Netduinoにアプリケーションを配置して(Microsoft流に言うとこうなるのか・・・)実行するにはいかの設定を施します。
プロジェクトからアプリケーションのプロパティを選択します。
次に「.NET Micro Framework」を選択し、「Transport:」を「USB」に設定します。
この時点で「Device:」には「Netduino_Netduino」が挿入されていると思います。
これでOKです。
それでは改めてアプリケーションを実行しましょう。
「デバッグ」から「デバッグ開始」を選択します。

NetduinoにあるLEDが点滅を開始したと思います。

「本当にこのプログラムが動いているのかな?」と感じた場合には・・・。
試しにアプリケーションに対してブレークポイントを設定してみましょう。
今回の例では二箇所のled.Write()に対して設定しました。
「デバッグ」から「続行」を選択するとブレークポイントで停止します。
Netduino本体のLEDの状態がブレークポイント停止個所によって変化していることが見えると思います。

このようにNetduinoでは.NET Micro Frameworkを使ってハードウェアを簡単に制御する可能になっています。今回はプログラミング初めの一歩編として簡単な紹介をしました。

ちなみに今回の内容は本家Netduinoページのdownloadsにあるgetting start guideをベースにしています。http://www.netduino.com/downloads/gettingstarted.pdf

Netduinoを始めよう(環境構築編)

最近はフィジカルコンピューティング?の分野が激しい新製品ラッシュです。
この中で最も新しく知ったNetduinoをスイッチサイエンスさんから購入しました。
事始めということでどうやって始めるのかを書いてみましょう。

表面
裏面

インストールする。
Netduinoのアプリケーションを書くにはフリーのツールを3つインストールすることになります。
以下の順番でインストールします。
  1. Microsoft Visual C# Express 2010
  2. Microsoft .NET Micro Framework v4.1 SDK
  3. Netduino SDK v4.1
      以上でアプリケーション構築の準備は完了です。

      mbedを赤外線で操作しよう

      mbedのページに実用ライブラリシリーズ:赤外線送受信ライブラリを記載しました。
      これは赤外線の送受信に対応したライブラリです。
      以下のようなAPIで簡単に操作することができるようにしました。
      ☆ボードオレンジでも使用可能:☆ボードオレンジ:「活用事例2:赤外線リモコンで楽々操作しよう!」

      2010年8月17日火曜日

      Revision 24のmbedライブラリにおけるTickerとTimeoutのバグ

      Revision 24のmbedライブラリにおいて、TickerとTimeoutにバグがありそうです。
      いずれもattachとdetachの動作に問題がありそうで、他のTickerの動作を壊したりします。

      現在ARM社のmbedチームの方とやり取りをしています。
      http://mbed.org/forum/bugs-suggestions/topic/990/

      当初こちらで作成していた赤外線受信クラスのバグかと思っていました。
      腑に落ちない点があり簡単な動作テストプログラムを記述したところmbedライブラリのバグが発覚。

      これは皆さんも遭遇しそうなバグなので積極的にバグフィックスのためのサポートをしたいと思います。

      2010年8月14日土曜日

      ユニバーサル基板の穴位置 (サンハヤト株式会社 小型ユニバーサル基板 ICB-293G)

      サンハヤト株式会社 小型ユニバーサル基板 ICB-293Gの穴位置について調べてみました。

      実は、私の手元にあるもの(15年位前に購入)と現在流通しているもので穴位置が異なるのです。
      ☆ボードの拡張性を示すノートブック、☆ボード「拡張性を見てみましょう!」を記載していたのですが、私が試したものと同じ型名の基板で「使えるはず」との御指摘を頂きました。

      私の手元にある293Gと書かれた基板を☆ボードにあてると、確かに穴は外側にずれています。
      これを根拠に記事を書いたのですが、何かが違うようです。


      http://www.sunhayato.co.jp/products/details.php?u=177&id=07001 にある図面を見ると基板の端から5mmの位置に穴があいていることがわかります。


      ノギスで測ってみた所、手元にある293Gと名乗る基板は明らかに穴位置が図面と異なります。
      あらら。なんで?


      そこで秋葉原へ向かい現在流通しているものを入手して調べてみることにしました。
      購入した基板は確かに293Gです。

      下の写真の基板は穴位置が合わなかった古い物。
      文字の感じをよく見てください。


      そして、下の写真は今回購入した物です。
      なんだか文字の雰囲気が異なりますね。
      穴位置も中央に寄っている事が見てとれます。


      ノギスで測ってみると(ずいぶんいい加減に測りますが・・・)図面に近い形になっています。


      両者を並べると違いは歴然としています。
      左側は昔の物、右側は現在の物。(穴位置が全然違う!)


      今回購入した物であれば☆ボードの穴位置にもきっちりあいました。


      今回の件を整理すると・・・
      • Sunhayato 293Gという基板は世の中に少なくとも2種類ある。
      • 穴位置変更の経緯は不明。
      といった感じでしょうか。

      結果的に間違った情報を提供する事態を招いてしまっただけに、なんだか釈然としない気分です。
      できれば型名を変えてほしかったなぁというのが正直な気持ちです。

      (2010/08/20追記)
      メーカの方に確認をしたところ「ICB-293シリーズは、姉妹品のICB-93シリーズとの共通化の為、2002年に取り付け穴位置の変更を行いました。」とのことです。確かに姉妹品の中で穴位置が異なってもあまり嬉しくありませんから妥当な対応でしょう。

      2010年8月13日金曜日

      ☆ボードオレンジ「活用事例2:赤外線リモコンで楽々操作しよう!」

      http://mbed.org/users/shintamainjp/notebook/starboard_example2_ja/に記事を記載しました。

      ☆ボードはmbedを活用する上で最高に便利な基板ですが、スイッチがありません。
      スイッチを取りつける事を考えてみましたが、せっかく☆ボードがコンパクトにまとまっているので、あまり積極的になれません。


      どこに付けよう・・・。


      そこで、今回はスイッチを取りつける代わりに赤外線受光モジュールを取りつけ、外部からリモートコントロールできるようにしてみました。こうすれば、以下のようなモジュールを1つ付けるだけで沢山のスイッチ入力に対応することが可能になります。


      こんな風に・・・。


      詳しくはリンク先をご覧ください。