もしもカフェ店長がソフトをつくったら Part 3

動く看板を作ってみよう!

カフェ店長が考えたインタラクティブな看板は、Kinectセンサーで人を感知して、プロジェクターを使って床へアニメーションを表示させている。ただそれだけではなく、看板に内蔵したLEDを点滅させたり、旗を振らせたりといった楽しい仕組みが含まれているのが特徴だ。

Kinectセンサーからの情報を解析して、プロジェクターにアニメーションを表示する、ということを PCだけで実現可能なのは Part 2 の動くラテアートでも紹介したとおり。じゃあ、Kinect と連動して旗を振らせたり、LEDを点滅するにはどうしたらいいと思う?

「LEDを点灯させたり、旗を振るためのサーボモーターといったハードウェアを自作してPCに接続すればいいじゃないか」という方法がはじめに頭に浮かぶハズだ。しかし、この方法ではハードウェアや電子工作、PCとハードウェア間のインターフェースを自作するための知識が必要になる。つまり、非常に敷居が高いものになってしまう。

実はもっと簡単に、もっとお手軽に実現できる方法があるんだ。

皆さんは「.NET Micro Framework」って言葉を聞いたことがあるだろうか? .NET Micro Framework とはマイクロコンピュータを制御するためのフレームワークで、C# や Visual Basic などの普段使い慣れた言語を使って、スマホよりももっと小さいマイクロコンピュータを制御するための技術だ。マイクロコンピュータなので、PCに接続せずとも電源さえ供給できればスタンドアロンで動作させられるという特徴も持っている。

でも、そのマイクロコンピュータも自作しなければいけないんじゃない? そう思っている人も多いだろう。そのあたりも非常にカンタンにできる方法がある。それには、GHI Electronics 社 (http://www.ghielectronics.com) が販売している「FEZ」と呼ばれる .NET Micro Framework のコードを実行できるマイクロコンピュータのキットを使うんだ。

FEZ には小型のメインボードだけではなく、照度センサー、加速度センサー、カメラといったセンサー類、イーサネットや Wi-Fi、Bluetooth といったインターフェースなどがモジュールとして提供されている。ちなみにメインボード自体は手のひらの半分くらいの大きさだ。

FEZのメインボードにセンサーやLED、スイッチといったモジュールをケーブルで接続するだけで、あっというまにカスタムハードウェアのできあがり。ハンダ付けの必要もなく、ちょっとしたハードウェアの知識さえあれば、電子ブロック感覚で各種センサー、インターフェース付きのマイクロコンピュータを作れてしまうという優れものなのだ。

今回のインタラクティブな看板でキモになるのが、FEZ Panda II と呼ばれるメインボードと、FEZ Connect Shield と呼ばれるモジュールだ。FEZ Connect Shield にはイーサネットコントローラやインターフェースが搭載されていて、旗を動かすサーボモータや、看板のLED の点滅を制御できる。

FEZ Panda II と FEZ Connect Shield

© 2003-2012 GHI Electronics LLC

実際の仕組みはこんな感じだ。まず、FEZ Connect Shield を繋いだ FEZ Panda II と、Kinect を接続したタブレット PC とを LAN ケーブルで接続しておく。あらかじめ FEZ Panda II では .NET Micro Framework を利用して Web サーバを起動し、HTTP リクエストを受信できるようにしておく。もちろん Web サイトを表示するために起動しているわけじゃない。これは、Kinect を接続した PC が人を検出したら、人を検出したことを知らせる HTTP リクエストを Web Socket を使って FEZ Panda II 側に送信するんだ。FEZ Panda II 側では当該リクエストを受信したら、LED を点灯させたり、サーボモータを動かして旗を振らせたり、なんてことをやっているわけだ。

ところで .NET Micro Framework 関連の技術で、今一番熱いのがマイクロソフトリサーチがオープンソースで提供している .NET Gadgeteer だ。.NET Gadgeteer は .NET Micro Framework をベースにしたテクノロジーで、.NET Micro Framework よりも簡単に……本当に、思わず笑っちゃうほど簡単にハードウェア用のコードを書くことができる。

.NET Gadgeteer を Visual C# 2010 (Express Editionでも可) にインストールすると、プロジェクトテンプレートに「.NET Gadgeteer Application(NETMF 4.1)」が追加される。新規プロジェクトの作成で、このテンプレートを選択すると、新しい .NET Gadgeteer のプロジェクトが作成され、ウィンドウには (Program.gadgeteer) コードではなく FEZ のメインボードが表示されるのだ。さらに、ツールボックスウィンドウから使いたいインターフェースやセンサーなどのモジュールをドロップして、[右クリック]-[Connect All modules] をクリックするだけで、モジュールをメインボードのどのコネクタに接続すればいいのかが表示される。実際にハードウェアを接続するときは、ウィンドウに表示された通りに接続すれば配線ミスは起きないというわけだ。コード自体はハードウェアがなくとも作れるので、Visual C# 2010 をインストールしてぜひとも試して欲しい。

FEZ を動作させるためのコードも .NET
Micro Framework よりもさらにカンタンに作れるようになっている。ツールボックスからモジュールを追加してメインボードに接続すると、そのモジュールを初期化するコードが自動生成される。そのため、センサーなどのモジュールを初期化するためのコードを書く必要がない。面倒な初期化作業からカンペキに解放されるというわけだ。

たとえば、FEZ に Wi-Fi モジュール (WiFi_RS21) を追加して、Wi-Fi のアクセスポイントに接続するコードはたった 5 行で書くことができる。ものの数分もあれば、常時インターネットに接続できるデバイスが完成するのだ。また、リレーモジュールのリレーのオン・オフや、LED
を点灯させるといったコードに至っては「たった1行」追加するだけで OK だ。

こうしたパソコンやスマホよりも小さいインターネットに接続できるハードウェアは、それこそ無限の可能性を秘めていると言っても過言ではないだろう。温度センサーや湿度センサー、電力センサーで計測した値を、インターネット上の別のサーバで管理するセンサークラウドなんかも簡単に実現することができる。また、自作の「ホームオートメーション」作りに挑戦しても面白いかもしれない。たとえば、外出先からスマホでオン・オフできて、部屋の明るさや人がいるかどうかを複合検知して点灯する「ものすごくスマートな照明」や、赤外線発光モジュールを使ってインターネットからさまざまな機器をコントロールする「ものすごくスマートなリモコン」なんてものも作ることができるんだ。

もっと詳しく .NET Micro Framework の開発方法を知りたい人は、Interface 2012年8月号 で特集しているのでそちらも見てほしい。

アナログをデジタルとテクノロジで結んでみると、未来って意外とスグそこまで来てるんじゃないかな?