MZ Platformとフィジカルコンピューティング

MZ PlatformとGainer miniの接続

ここでは、MZ PlatformとGainer miniを接続する方法と、その利用例について説明します。

Gainer miniの説明については、 販売元のサイトをご覧ください。 安価で購入できる市販のI/Oモジュールで、USB経由でPCと接続してシリアル通信で情報をやり取りします。 各種センサからの情報取得や、LEDやサーボモータなどの制御ができるので、 MZでフィジカルコンピューティングに手を出すにはとても良い製品です。

Gainer miniはGainerの互換機の一種です。 それぞれのサイトに利用例の紹介がありますので、参考にすることができます。 また、参考文献として下記の書籍を挙げておきます。

書籍: +GAINER, GainerBook Labo + くるくる研究室 著, オーム社, 2008年.

Gainer miniでできること

単純な電圧レベルで扱えるデジタル・アナログ入出力と、サーボモータの制御ができます。 いくつか挙げると、下記のような部品が使えます。

  • アナログ入力
    • ジョイスティックの位置検出
    • 光センサによる明るさ検出
    • 赤外線測距センサによる距離検出
    • 感圧センサによる圧力検出
    • 加速度センサによる姿勢検出
  • デジタル入力
    • 押しボタンスイッチのON/OFF検出
  • アナログ出力
    • LEDの明るさ階調制御
  • デジタル出力
    • LEDのON/OFF制御
    • リレーのON/OFF制御
  • サーボモータ制御
    • (RCサーボと呼ばれるものだと問題ないと思いますが、どれでも確実に動くかどうかは未確認です)
市販されている各種センサモジュールには、 I2CやSPIなどの方式でマイコンとデータのやりとりをするものがありますが、 それらは利用できません。

接続用コンポーネントの開発

Gainer miniをPCと初めて接続する際には、 販売元のサイトからドライバをダウンロードおよびインストールする必要があります。 ドライバが正常にインストールされたら、PC側ではGainer mini用のCOMポートが認識されるようになります。 あとはPC側のソフトウェアからCOMポートに対してシリアル通信でデータのやりとりを行います。

本家のサイトや販売元のサイトでは、各種ソフトウェア開発環境で利用可能なライブラリを公開していますので、 それらを利用することも可能です。特に、MZと同様にJavaからシリアル通信でGainer miniと接続する場合には、 販売元のサイトで公開されているProcessing用のライブラリを用いることができます。

一方、Gainer miniはシリアル通信でやり取りするデータの仕様が公開されているので、 それに基づいて実装すれば接続用のソフトウェアを独自に作成することが可能です。 MZ Platformにはシリアル通信コンポーネントが含まれているので、 これをベースにデータのやりとりを実装すれば、専用の通信コンポーネントが作成できます。 (まだ作成中なので、詳細は今後公開予定とします)

MZでGainer miniと通信するコンポーネントを提供することで、 MZのユーザは一般的なアプリケーションと同じ方法でフィジカルコンピューティングを試してみることができます。

初心者のつまづき

電子工作についてよくわからずに始めた初心者がつまづきそうなことをメモしておきます。 自分がそうだったということですが。

最初にはまったのは、「プルダウン抵抗」です。 参考文献として挙げたGainerの本にも書いてあったのですが、 あまり理解せずに簡単な回路を試して動かないなあと、しばらく悩みました。 たまたま近くに電子工作経験者がいたので、「それプルダウンしてますか?」と聞かれて意味がわからず、 教えてもらってやっと理解できました。

「プルダウン」に慣れたと思ったら、次に「プルアップ」が必要になりました。 下記の利用例もその一つです。 Gainer miniでは電圧が0Vのときにオフという感じに使えますが、 一般の電子回路ではスイッチが押されたときに0Vにするという感じに使うことがあるようです。

利用例

光センサ(CdSセル):アナログ入力×1

CdSセルをアナログ入力に接続した例を示します。 CdSセルは明るさで抵抗が変化するので、アナログ入力で計測される電圧レベルが変化します。

下図は作成したMZアプリの表示画面で、モード1でGainer miniと接続し、 アナログ入力の電圧レベルを棒グラフで表示します。 モード1ではアナログ入力が4つあります。

室内の通常の明るさのときとCdSセルを指で覆ったときとで、 明るさが変化して計測される電圧レベルが変化する様子を下図で示します。

この動作を応用して、計測された電圧レベルに対して閾値を設定すれば、 明るさの変化に応じて動作するMZアプリケーションを作成することが可能です。 詳細は MZ Platformとフィジカルコンピューティングの関係のページの利用例で説明しています。

ジョイスティックモジュール:アナログ入力×2+デジタル入力×1

市販のジョイスティックモジュールと変換基盤のセットをGainer miniに接続した例です。 このモジュールは縦横の2方向のレバー位置がアナログ入力として取得でき、 さらにレバーを下に押し込むとタクトスイッチの役割もあるためデジタル入力も取得できます。 ちなみに、このジョイスティックは某ゲーム機のコントローラに使われているものと同じらしいです。

下の写真の例では、同じモジュールを2つ使用しているので、 アナログ入力が4つ、デジタル入力が2つとなっています。 レバー位置は直接Gainer miniの入力ピンに接続すればよいですが、 タクトスイッチの方は押すと電圧レベルが0になるような配線なので、 デジタル入力の方はネットワーク抵抗を介して5Vに接続してプルアップしています。

下図は、これに対して作成したMZアプリの表示画面です。モード1でGainer miniと接続し、 アナログ入力の電圧レベルを棒グラフで表示し、 デジタル入力のオン/オフを「ボタン」と書かれたラベルの背景色の赤/白で表示します。 モード1ではアナログ入力とデジタル入力が4つずつとなります。 デジタル入力は上記の通りプルアップしているので、 何もしていないときにオンの状態になっています(下図左)。 また、このジョイスティックモジュールは何もしていないときに電圧レベルが中程度で表示されます。 下図右は、一方のジョイスティックを左下方向に傾け、もう一方のジョイスティックを押し込んだときの様子です。 アナログ入力の0と1が前者のジョイスティックの左右方向と上下方向を示しているので、 左方向は電圧レベルの減少を、下方向は電圧レベルの増加に対応していることがわかります。 また、デジタル入力の2つ目が後者のジョイスティックのタクトスイッチに対応していて、 スイッチの押し下げでデジタル入力がオフ状態を検知していることがわかります。

この動作を応用すれば、MZアプリに独自の入力デバイスを追加して、 一般的なマウスやキーボードによらないシンプルな操作インタフェースを作成することも可能です。

作成日 2013-04-02

最終更新日 2013-04-18