Micro Scoutコントローラ(リモコン)の作成
はじめに
我が家の息子達はレゴブロックで遊ぶのが大好きで、いつの間にかかなりの量のブロックが集まってしまいました。スーパーなどで見かけるレゴ付きお菓子(いわゆる食玩)シリーズも結構揃ってしまったようです。
そして今回のクリスマス、サンタさんは何とプレゼントにレゴのマインドストームDroid Developer Kit(DDK)を贈ってくれました。
出来ればRobotics Invention System(RIS)が良かったのですが(サンタさん、予算オーバー?)、入門編のDDKなら難しいこともないでしょうし、子供も気に入ってくれたようです。
部品点数がかなり多いのですが、子供はあっという間にL3GOやR2-D2を組み立ててしまいます。普段から沢山のブロックで遊んでいるので「楽勝」なのだそうです。。。このDDKの心臓部がMicro Scout(マイクロスカウト)で、光センサーとモーターを内蔵したブロックに予め組み込まれている7種類のプログラムを動作させることができます。MicroScoutのモーター出力は1軸しかありませんが、説明書にあるロボット(ドロイドと呼ぶそうです)はなかなかよく出来ていて、結構面白い動きを見せてくれました。
Micro Scoutには7種類のプリセットプログラムのほかに「コントロール」(Pモード)という機能があるようなのですが、「今後のシリーズで動作させる予定」としか説明がなく、LEGOのWebページにも解説は見あたりませんでした。
そうなるとどうしても「コントロール」をコントロールしたい!という欲求に駆られ、Webの検索エンジンで調べたところ、色々な方法でコントロールを実践されている方々のホームページに出会い、これによるとMicro ScoutはVLLという方式で光による命令やプログラミングの出来ることがわかりました。VLLのフォーマットやコードがある程度わかったので、以前作った赤外線リモコンの基板を改造して、Micro Scoutコントローラを作成してみました。
★作成にあたっては、「MindStormsの洞窟」ホームページが大変に参考となりました。ページ作者のmacさんにこの場を借りて御礼いたします。
Micro Scout
VLLについて
Micro ScoutのPモードでは、以下の方式でVLLをエンコードした光線を光センサーに送ることでMicro Scoutをコントロールできます。
TVなどの赤外線リモコンでは数十kHzのキャリアで送信しますが、Micro Scoutの場合は上記の点滅のみでも大丈夫なようです。データ生成や送信方法は下記のソースを参考に願います。
MicroScoutで動作可能なVLLコードとコマンドの対応は次のようになっています。
トラック VLL code 種別 コマンド 1 0 D: Motor Forward 2 1 D: Motor Reverse 3 4 D: Beep 1 4 5 D: Beep 2 5 6 D: Beep 3 6 7 D: Beep 4 7 8 D: Beep 5 8 10 D: Motor Stop 9 16 S: Motor Forward 0.5 0 17 S: Motor Forward 1.0 11 18 S: Motor Forward 2.0 12 19 S: Motor Forward 5.0 13 20 S: Motor Reverse 0.5 14 21 S: Motor Reverse 1.0 15 22 S: Motor Reverse 2.0 16 23 S: Motor Reverse 5.0 17 24 S: Beep 1 18 25 S: Beep 2 19 26 S: Beep 3 20 27 S: Beep 4 21 28 S: Beep 5 22 29 S: Wait for Light 23 30 S: Seek Light 24 31 S: Code 25 32 S: Keep Alive 26 33 D: Run 27 34 D: Delete Script 28 70 D: Next 29 71 D: Reset
種別のD: はダイレクトコマンド(送信で即時実行)、S: はスクリプトコマンド(必要なだけ(15ステップ以内で)送ってからRunで実行)です。
Motor Stopコマンドはモータードライバ(Hブリッジ)でモーター両極を短絡するもので、外部からの軸回転に対してブレーキがかかります。
回路図
Micro Scout VLLリモコン回路図(1000*750 GIF 12KB)
PIC16F84を使った回路になります。今回は赤外線ではなく、赤色の高輝度LEDを使用したのでLEDのドライブはPICの出力をそのまま使いました。
送信するコマンドの種別と名称は16文字×2行のLCDに表示します。通常(高輝度)LEDと赤外線LEDの2つを、モードに応じて切り替え送信できるように修正しました。赤外線LEDのドライブ用にトランジスタを1つ追加しました。(2001.1.12)
プログラム
- 何かスパゲティのようなプログラムになって汚いです(いつものことですが)。
LCDに表示するメッセージが多くなってしまい、テーブルからの文字取得にちょっと苦労しました。
- MODEキーでダイレクトコマンドとスクリプトコマンドが切替わります。PREV.とNEXTキーで選択するコマンドを選び、SENDキーで現在表示されているコマンドを送信します。
- よくわからなかった「Reset」と「Next」コマンドを省いたかわりに、ダイレクトコマンドの項目に「Emit Light」を追加しました。これはコマンドではないのですが、SENDキーを押している間LEDが点きっぱなしになるだけの機能です。(Seek Lightとかで遊ぶ時の懐中電灯代わりです(^^; )
- 下記のリピータ用に、赤外線LEDを使って送信するモードを追加してみました。(2000.12.30)
MODEキーを押したまま電源を入れると画面上に'R'が表示され、この状態で選択したコマンドは赤外線LEDによって38kHzのキャリアで送信されます。
リモコン写真
![]() |
![]() |
基板とLCD | こんな感じに表示されます |
念願の「Pモード」でL3GOをコントロールするの図 ・やっとケース(透明)に入れました。(2001.1.10)
・子供の希望により、メッセージは英語から"カナ"に変更しました。
リピータ(VLL中継器)の作成
Micro Scoutの光センサーは懐中電灯でも赤外線リモコンでも反応しますが、指向性が強いため正面ナナメ上からでないと光を認識しないようになっています。最初は赤外線LEDで実験していたのですが光が見えず、ちょっと離れた所からではちゃんと当たっているのかどうか、てんでさっぱりなので、部品箱にあった超高輝度の赤色LED(型番不明)に交換しました。これはスポット的な集光なのでわかりやすく、If=20mA程度でもかなり明るいため、1mくらい離れても送信が可能でした。
それでも動き回るドロイドに合わせて、自分がリモコンを持って追っかけるのも楽じゃないので、今度は赤外線で遠くから送信したコードを中継するVLLリピータを作ってMicroScoutに取り付けました。
リピータ配線状況(内部) 電池はCR2025×2個です むき出しだった配線面をゴム板で被い、センサとLEDはコネクタで延長出来るようにしてみました。(2001.1.10)
R2D2に取り付けて遠隔操作(^^)♪ なるべく小さくしたいので電池はボタン電池を使いましたが、目的にあわせ適当な大きさにまとめて、リピータのLEDがMicroScoutのセンサーの上にくるように取り付けます。
リピータを取り付けたMicroScoutを「Pモード」にして、VLLリモコンを赤外線モードで起動するとかなり遠くからでもコントロールできるようになります。