VLLで遊ぼう


VLLとは

DDK (Droid Development Kit)に使われているMicroScoutは、Selectボタンで、LCDに"P"が表示されるようにすると、光の特殊な点滅を、コードとして解釈し動作します。この動作モードをPower Modeといいます。そして、この信号を送受する仕組みをVLL (Visible Light Link)といいます。

RDS (Robotics Discovery System)に使われるScoutには、VLL出力があり、これをファイバーで、MicroScoutのセンサー部につなぎ、レゴ社提供のLASMでプログラムすれば、この機能を使えます。

また、純正リモコンによってScoutを制御し、同時にVLLでつながったMicroScoutを制御する事もできます。

LASMは、多少プログラム経験がないと、むづかしいかもしれませんが、今後もっと使いやすい純正プログラミング環境が提供される見込みです。

ここで紹介する話は、これとは、また別のものです。

このページはRIS2.0が発売された2000年12月の前、2000年2月に作りました。RIS2.0が入手できる今では、これ以外にもUSB LEGO TOWERよりVLLを発生する事が出来ます。私はこの機能を使いやすくした、WinVLLというプログラムを作りました。このプログラムは、ここで紹介している専用ハードVLLプローブv1/v2を使えば、RIS2.0を持っていなくても使用できます。このページと合わせて参照してください。

WinVLLのページ


動機

MinsStorms情報局でおなじみの高塚さんが、独自にVLL信号を解析し、NQCでプログラムすれば、RIS (Robotics Invention System)のRCXでも、VLLを発射できることを発表しました。

私は、これを発展させ、汎用的にRCXでVLLを利用できるNQC Libraryを作りました。

ここからdownloadできますし、MindStorms情報局には、JinSatoさんが作ってくださった、英語ページもあります。

でも、まだちょっと物足りない。

NQCでは、まだ本物の子供が遊ぶには難しいのではないかと思うわけです。

別のアプローチとして、「音」として情報を記録し、これを光に変えて出力したら、コンピューター無しに、DDKをプログラムして遊べるのではないかと思ったわけです。

しかし、そうして速報版を公開した時点で私自身、ほかの方が実際にこのようなもので遊んでいただけるか、かなり懐疑的でした。しかし、MindStorms MLにこのページに関するご質問があり、さらに、鈍兵衛さんのページでご紹介されるにいたって、大いに驚き、そして幸せに思います。その後、このページは、大幅に加筆されました。上記ページに、今ここに書いてあることがわからず、ご苦労が見られるのは、当時は書いてなかったからです。


何ができるの

MDプレイヤー、CDプレイヤー、MP3プレイヤーでDDKをプログラムして遊べます。

必要なのは、上記を再生できる器具とLED、抵抗、ダイオードブリッジ、イヤホーンプラグとコードで作った簡単なアダプターです。


どうやるの

まず、ここからMP3 fileをdownloadします。
CDにするには、WAV fileの方がよいです。
すごく人工的な波形なので、WAVのアーカイブのが小さいですね。

LHAで圧縮したので、解凍ツールで開いてください。

数字.mp3/数字.wavと言うファイルがたくさんできます。数字はVLL codeと一致してます。
本家よりScoutSDK.pdfをdownloadし、一番後ろの方にあるVLL code表を見れば詳細がわかります。
これを希望のメディアに録音するか、コンピューターで再生します。

このファイルは、プログラムで作ったたいへん大きな音が入っています。
いつも使っているボリューム位置で再生すると、耳をいためたり、機器が故障する危険があります。
聞いてみてもかまいませんが、十分注意してボリュームを絞ってからにしてください。

基本的に「音」ですので、アナログでもデジタルでも、音を再生できる機器ならたいてい使えます。
ただ、ヘッドホン専用に設計されたものの中には、出力が小さいものがありうまく動作しないことがあります。おもちのコンピューターが、ノートPCで出力が小さくても、また自分専用に使えるパソコンを持っていなくても大丈夫です。

CD-Rを焼ける環境をおもちか、もっている人に依頼できるのならwavをオーディオトラックとして焼き、ラジカセやステレオで再生してみてください。
デジタル出力にこだわらず、アナログモードでPCの出力をステレオコンポにつなぎ、MDに録音して、オーディオ機器で再生する方法もあります。オーディオ機器のプログラム再生モードも結構それなりに使えます。MDトラックにコマンド名を名前としてつけておくと、ちゃんと表示するので笑えます。

後は専用ハードをつなぎ該当する音を鳴らせば(光らせれば)MicroScoutに送れます。

専用ハードといっても、たいへん簡単です。下図をご覧下さい。発光ダイオードはなるべく明るい物を2個用意します。VFが高いと光りませんので、赤色が良いです。同じところを照らすよう2個のLEDは密着させてください。発光ダイオードを向かい合わせにしたので極性はありません、また、ステレオプラグの左右どっちのチャンネルでもかまいません。抵抗は10Ω〜33Ωぐらいが適当でしょう。

VLLプローブv1

これをイヤホンジャックにさし、再生しながら徐々にボリュームを上げると最初は全然点灯せず、あるレベルを超えたところで突然点滅するようになります。余裕を見てちょっと大きめに設定すれば完了です。

MicroScoutをP modeにして、2つのLEDから同じぐらい光が入るようセンサー部に接触させます。

私は、スタンレーBR5351Kという2x5の角型のLEDを2個、紙やすりで整形して、下の写真のようにブロックの中に押しこんでエポキシ接着剤でで固めました。抵抗は、ステレオプラグに入れてあります。見栄えよくまとめるには、電気的というよりは、機械工作が要りますが、LEDがつけば動くので、部品剥き出しでもかまいません。

上記回路を作ってしばらくして、ステレオの左右の信号を逆位相にし、左右の電圧差で駆動すれば、倍の電圧になることを思いつき改良したのが次の回路です。ステレオプラグの接続が異なるので、注意してください。また、以前公開していたwav/mp3 fileはモノラルなのでこの回路は、動作しません。新規にdown loadしてください。

VLLプローブv2

ブリッジ整流器が要りますが、LED 1個で済むので、取り付けが容易で動作も確実になります。でも、モノラルの再生機では動作しません。これも、プラグに新電元S1YB10ブリッジ整流器を押しこみ、見栄えよく加工しました。繰り返しになりますが、このように工作しなくても、手でLEDをもち、MicroScoutのセンサーにかざしても、ちゃんと動きます。むしろ最初はそうやって試験すべきです。こういう風に、工作するのも私の趣味なんです(^^)

こうしてブロックにしてしまえば、MicroScoutのセンサー窓に、直接はめることが出来ます。


あそびかた

VLLコードには、D:で始まるダイレクトコマンドと、S:で始まるスクリプトコマンドがあります。
ダイレクトコマンドは、コマンドを受けると直ちに実行されます。
スクリプトコマンドは、いったんメモリーに蓄えられ、D:RUNが送られるか、RUNボタンが押されると入力された順に実行されます。
ですから、D:Delete Scriptを送ってから、実行させたいスクリプトコマンドを順に送り、専用ハードを外してから、RUNボタンを押せば、MicroScout単独でシーケンシャル動作させられます。

下表に、ScoutSDK.pdfよりMicroScout用のコマンドリストを抜粋しました。「トラック」は、wav/mp3をCD/MDにそのまま焼いたときのトラック番号です。

トラック 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
10 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

サンプル

こんな単純な機能じゃ、遊べないのではと危惧している方に例を示します。おもちゃは基本的に「機能」で遊ぶものではありません。機能不足だと、思ったときは、同時に、こちら側の想像力不足だと自重しましょう(^^;
枯れ枝を「伝家の宝刀」や、ライフル銃に変える位の「魔法」なら、昔誰でも使ったことがあるはずです。LEGOを手にしているあなたなら、大丈夫。呪文はきっと思い出せます。

R2D2の胸にカゴをつけお菓子を載せられるようにしました。おなじみ「茶坊主」のパクリです。

27 34 D: Delete Script
11 18 S: Motor Forward 2.0
17 24 S: Beep 1
22 29 S: Wait for Light
14 21 S: Motor Reverse 1.0
13 20 S: Motor Reverse 0.5
11 18 S: Motor Forward 2.0
21 28 S: Beep 5

表の順にVLLコマンドを送りお菓子を載せてRUNします。2秒前進し、止まって音を出します。
お菓子を取ると胸のセンサーに入光し、"Wait for Light"が解けてUターンして戻ります。


どうやって作ったの

元ファイルはProgramで、矩形波を発生しました。これを、SOXというソフトで.wavに変換し、さらにこれをgogoでMP3エンコードしました。自分でやりたい方、アーカイブしなかったコードもほしい方は、ソースをお持ち下さい。

本当は、回路をしっかり作れば、もっと安定度が良く、レベル調整もほとんど不要なものは作れます。でも、それでは、電源が必要になり、部品も多くなり、組み立てられる人が限られてしまいます。小学生でも作れるよう、思い切って簡略化した回路にしました。


ほかには?

VLLで遊ぶのは、ここに書いた方法がすべてではありません。最初に書いた、RDS+LASMを使う方法や、LEGOから正規に供給させるであろうDDK用の環境はもちろんですし、RCXにNQC, legOSでプログラムして、VLLを発生する方法もあります。

そしてもうひとつ、いつもチョー高度でdeepなWorkをなさっている、いしかわきょーすけさんが、PocketStation(ポケステ)で、DDKをプログラムする環境を公開されました。ポケステにプログラムを書きこむのは、専用ハードが要りますが、誰か書ける人に頼むか、装置を用意して書きこんでしまえば、使うのは本当に容易です。裏で支える難しい技術が、人にやさしいインターフェースを提供する例としても必見です。

まだ、ありますよ。「あなた自身が作る」最後はやっぱりこれでしょう。産業的に役に立つ、実用品を作るのは、もちろん必要なことですが、ぜんぜんそっちの方向ではなく、あなた自身が楽しむために何かを作るのは「無駄なこと」ではないと思います。LEGOで遊ぶというのは、広い意味でそういうことだと思います。


 

MindStormsの洞窟へ戻る

Copyright ">

最終更新日;2002年10月12日

Google