RCX Ping


はじめに

RCX Pingは、LEGO USB TOWERとRCXの通信のもっとも低レベルな試験プログラムです。

RIS2.0には、USB接続のIR Tower "LEGO USB TOWER"が含まれます。

USBが、きちんと動く環境下では、従来のCOM Portに繋ぐSerial IR Towerに比べトラブルは少ないようですが、それでも初めてRIS2.0を買ってきて、早速動かそうとしたのに、ファームウエアーさえダウンロードできない状態のときは、精神的にも大きなダメージを受けてしまいます。

などを調べるために、他の実験で作ったプログラムに手を加えて公開することにしました。


その後

WindowsのCUIでは、躊躇する方も多いだろうし、いささか時代遅れですので、GUIで同様な操作をするBricxPingを制作しました。

御好みで御使いください。


Download

単機能、単純なプログラムですので、ここからDownloadして適当な場所に置いてください。

特別なインストールする必要はありません。レジストリもさわらないので、要らなくなったら消すだけです。よそのマシンで使うときは、FD / USB Flash に入れておくと良いか見知れません。

また、RIS2.0がインストールされていなくても、LEGO USB TOWERのデバイスドライバがInstallされていれば動くので、「SDK 2.5で遊ぼう」を参照してください。


使い方

まず、コントロールタワーのLEGO USB Towerを「赤外線モード」にして、強度を選択します。どの強度が通信しやすい状態にあるかは、状況によるので、最初は適当に選んでください。

RCX/SCOUTの電源を入れ、LEGO USB Towerと対面させます。

この状態でダウンロードしたrcxping.exeをダウンロードしたダブルクリックすると、DOS窓がポップアップし通信状態をリアルタイムに表示します。

プログラムを終了させるには、Ctrl-C (コントロールキーを押しながらCを押す)です。

この試験は、RCXにファームウエアが入っていない状態でも、入っている状態でも行えます。

ただし、ファームウエアが入っていないときは、RCXのLCDに「受信マーク」は表示されません。


表示例

エラー表示 エラー回数/送信回数 エラー発生率 受信したパケット
0/8 (  0.000%) : 55 ff 00 00 ff 00 ff
0/9 (  0.000%) : 55 ff 00 00 ff 00 ff
0/10 (  0.000%) : 55 ff 00 00 ff 00 ff
0/11 (  0.000%) : 55 ff 00 00 ff 00 ff
0/12 (  0.000%) : 55 ff 00 00 ff 00 ff
0/13 (  0.000%) : 55 ff 00 00 ff 00 ff
0/14 (  0.000%) : 55 ff 00 00 ff 00 ff
0/15 (  0.000%) : 55 ff 00 00 ff 00 ff
0/16 (  0.000%) : 55 ff 00 00 ff 00 ff
0/17 (  0.000%) : 55 ff 00 00 ff 00 ff
0/18 (  0.000%) : 55 ff 00 00 ff 00 ff
0/19 (  0.000%) : 55 ff 00 00 ff 00 ff
* 1/20 (  5.000%) : 55 ff ff 00 ff
* 2/21 (  9.524%) : ff
* 3/22 ( 13.636%) : ff
* 4/23 ( 17.391%) : ff
* 5/24 ( 20.833%) : ff
* 6/25 ( 24.000%) : #no reply
* 7/26 ( 26.923%) : ff
* 8/27 ( 29.630%) : ff
* 9/28 ( 32.143%) : #no reply
* 10/29 ( 34.483%) : #no reply
* 11/30 ( 36.667%) : #no reply
* 12/31 ( 38.710%) : ff

トラブルシューティング

止めない限り測定がつつきますので、エラーが発生しないように位置や強度を調節してください。

どうやっても#no replyしかでなければ、LEGO USB TOWER、RCXのどちらかに問題があります。

まず、次の手順でRCXを完全にResetして再度試験してください。

  1. RCX1.0でACアダプタを使っていれば、プラグを抜きます。
  2. 電池動作なら、裏ブタを開け、少なくとも電池を1本外します。
  3. この状態で、RCXのパネル面にある赤いボタン [On-Off] を押します。
  4. 電池を入れなおし、 [On-Off] を押して「ピーピー」と音が出ることを確認します。

RCXは、電源を切った状態でも、プログラムを保持できるよう、RAM部分には電源を供給しています。上記の手順は、RAMにバックアップされているファームウエアを消去し、ROMのプログラムを走らせるための「おまじない」です。この状態で再度試験して動作すれば、Firmwareを再度Downloadして、再試験します。

もし、完全にResetした状態では動き、Firmwareを入れなおすと動作しなくなる、もしくはFirmwareのDownloadがうまくいかない場合は、Firmwareが壊れているか、RAMまたは、CPUのRAM周辺回路の故障です。

とりあえず、MindStorms SDK 2.5をDownloadしてInstallし、

C:\Program files\LEGO Software\LEGO Mindstorms SDK\Bin\VPBrick1\RCX2\firm0328.lgo

にはいっているファームウエアと交換してみましょう。

さて、完全にResetした状態でも、RCX Pingで応答しない時は、故障の可能性が高くなります。RCX / Towerのどちらに異常があるか、追求してみましょう。

デジカメや、ビデオカメラで見ると赤外線を見ることができます。

LEGO USB TOWERの緑のLEDのほかに紫色に見える3個の点、RCXの前面に見える2個の点が、赤外線LEDです。

部屋を暗くして露光時間が長くなるようにすると見やすくなります。

しかし、一部高級品のカメラは、赤外線カットフィルタがはいっているので見えないこともあります。 9731 Vision Command, 1349 LEGO Studiosに付属のLEGO CAMは、大変良く赤外線が見えます :)

LEGO USB TOWER、RCXの送信窓をプログラム動作中に見て、異常な箇所を診断します。

  1. LEGO USB TOWERが光っていない場合はLEGO USB TOWERの送信部異常が疑われます。
  2. RCX側が光ってない場合、RCXの受信部、送信部の異常が推定されます。
  3. 両者とも光っているのに、通信できなければLEGO USB TOWERの受信部の異常が考えられます。

もし、RCXやLEGO USB Towerを誰かから借りられるのなら、この推論から故障が疑われる純に交換して試してみましょう。

ここまで来ると、LEGOのサービスに連絡して、交換修理する必要がある場合がほとんどですが、故障箇所を判定してレポートするのと、「ともかく、なんだか分からないけど、ダウンロードできない!」と言うのでは、サービスする側にとっても、受ける側にとっても、無駄な時間が多くかかります。

そういった、連絡をスムーズに行うためでしたら、このページをプリントアウトして、どこまでうまくいったか書き込み、Faxなどで送信していただければ、幸いです。


Source Code

ソースコードはここにおきます。VC++6とcygwin gccでの動作を確認しています。GPL2にしたがって、使用、改造、再配布してください。


MindStormsの洞窟に戻る


Copyright 2003

Google