GBA赤外線リモコン信号解析ソフト「Ir Hack」

クロッサム用のリモコン波形解析変更ツール「HACK.EXE」のようなソフトを以前から作ってみたかったのですが、ようやくGBAで環境が整いましたので念願のソフトを開発しました。

「J2MEプログラミングガイド 505i (DoJa-3.0) 対応版」((株)IDGジャパン発行)に掲載されている赤外線リモコンiアプリの検証用として「Ir Hack」を使っていただきました。
GBAソフト「機獣の戦士ヒュウ」に同梱されている赤外線通信アダプタに対応しました。


ハードウェア
GBAには赤外線ポートが備わっていないので、GBAで赤外線リモコン信号を受信するためには赤外線受光モジュールを利用します。私の場合、以前に送信のみができる「GBA用赤外線リモコンアダプタ」を製作していたので、そのアダプタに赤外線受光モジュールを組み込んで「赤外線リモコン送信アダプタ」にグレードアップしました。

赤外線受光モジュールは3.3Vで動作するTSOP1838を使用しました。TSOP1838には電源フィルタ(R=330Ω、CC=4.7μF)が必要です。回路図を以下に示します。
回路図

左の写真はテスト時の赤外線送受信アダプタ、右の写真はUGAME製のケースに収め完成した赤外線送受信アダプタです。四角いほうが受信用のTSOP1838、丸いほうが送信用の赤外LEDです。


サイバーガジェット製ケース(左)と任天堂製ケース(右)の「GBA用赤外線リモコンアダプタ」についてもTSOP1838を組み込みました。任天堂製はケースにTSOP1838用の窓を加工する必要があります。


※赤外線リモコンアダプタの自作が難という場合は、GBAソフト「機獣の戦士ヒュウ」に同梱されている赤外線通信アダプタが使えます。

ソフトウェア
●操作説明
以下は、説明用として使用するエミュレータ「VisualBoyAdvance」の画面です。
エミュ画面上の表示データは説明用として作成したデモ用のデータです。
当然のことながら、エミュでは赤外線リモコン信号のサンプリングはできません。
本ソフトを使用するには、オプティマイズのブートケーブルUSBと前項で製作した赤外線リモコンアダプタまたはGBAソフト「機獣の戦士ヒュウ」に同梱されている赤外線通信アダプタが必要です。
 1.ソフトの起動
 (1)GBAとPCをブートケーブルUSBで繋いで、GBAの電源を入れるとGBAがマルチブートします。
 (2)次にboot.batを実行すると、irhack.mb.gbaがGBAに転送され本ソフトが起動します。
  「Ir Hack」のロゴが表示されます。

 (3)ここでGBAからブートケーブルを抜いて下さい。
 (4)サンプリングデータの表示画面になります。
 (5)GBAに赤外線リモコンアダプタを挿して下さい。

 ここでは、まだサンプリングデータがないので、データは何も表示されていません。
 2.サンプリング
 (1)STARTボタンを押すと、GBA画面に"Ready for Receive..."と表示され、赤外線リモコン信号の受信待ち状態となります。
 (2)この状態でGBA赤外線リモコンアダプタに向けて赤外線リモコンのボタンを押すと、サンプリングを開始します。
 (3)リモコン信号の受信がなくなるか(*)、サンプリングデータの保存容量がいっぱいになるとサンプリングは終了します。
 (4)サンプリングが終了すると、結果を表示します。
 -------------------------------------------
 (*)無信号期間が655msを超えるとサンプリングを終了しますが、STARTボタンを押し続けることで655msを超える無信号期間を 含む信号をサンプリング可能です。


画面は4種類あります。各画面への切り換えは、L/Rキーで行ないます。
画面1〜3ではサンプリング及びサンプリングデータの表示、そしてリモコンデータの送信(*)を行います。
(*)Aボタンでサンプリングしたリモコンデータを送信できる。(学習リモコン機能)
画面4ではブートケーブルUSBを使って、リモコンソフトIrRemoCon用のリモコンデータをPCに保存することができます。
以下に各画面について説明します。
3.サンプリングデータの表示(画面1)
 ・サンプリングしたデータを一覧表示します。
 ・サンプリングデータは50μsecのサンプリングレートで、信号のHighの長さとLowの長さをシーケンシャルに採取したものです。
 ・1ページに64バイト分表示され、UP/DOWNキーでページ送りができます。
 ・サンプリングデータの保存容量は1024バイトなので全16ページとなります。
 ・波形表示画面で表示中の信号の先頭位置に対するサンプリングデータを赤い背景色で示します。

4.波形の表示(画面2)
 ・波形の表示は、RIGHT/LEFTキーで1信号分(High/Low)づつ横スクロールできます。
 ・波形の横スクロールとダンプリストは連動し、各部の波形とデータの対比が可能となっています。
 ・UP/DOWNキーで波形の表示スケールを11段階(1, 1/2, 1/4, 1/8, 1/16, 1/32, 1/64,・・・)まで変更でき、各部の詳細な波形と全体の波形が観察できます。
 ・5.の解析結果をもとに、リーダ部とトレーラ部、そしてコード部についてはデータ0とデータ1を各々色分けして表示します。
  (リーダ部:青色、トレーラ部:赤色、データ0:白色、データ1:緑色)

5.解析結果の表示(画面3)
 ・解析はPPM方式にのみ対応しています。
 ・サンプリングデータからリーダ部、トレーラ部、そしてコード部の復調(エンコード)用としてデータ0とデータ1を判別し、各々のHigh/Low長さを整理します。
 ・UP/DOWNキーで各フレームの解析結果を切り換えて表示します。
 ・コード部を復調した結果を表示します。結果は8ビット/4ビット表示切換えできます。(8.各種設定画面参照)
6.IrRemoCon用データの作成及びPCへの送信(画面4)
 ・この画面ではGBA赤外線リモコンソフトIrRemoCon用のデータを作成します。
 ・別画面で採取したリモコンデータを任意のGBAの操作ボタンに割り当てます。
 ・割り当てることができるGBAの操作ボタンは、L/Rボタン以外の8個です。
 ・割り当てるGBAの操作ボタンをUP/DOWNキーで選択し、Aボタンで割り当てます。画面に"saved"と表示されます。
 ・Bボタンで選択している操作ボタンの割り当てを解除します。画面の"saved"が消えます。
 ・別画面でデータを採取し、この画面で操作ボタンに割り当てする操作を、割り当てる操作ボタンの数だけ繰り返します。

 (1)操作ボタンへの割り当てが終わると、SELECTボタンで赤外線リモコンアダプタとブートケーブルを差し換える手順に進みます。
 (2)GBAから赤外線リモコンアダプタを抜いて下さい。
 (3)次にGBAにブートケーブルを挿すと、割り当てたリモコンデータはUSB経由でPCに送信されます。
 PCのirhack******フォルダに、IRD.txtというテキストファイルが作成されます。サンプル--->IRD.txt
 (4)続けてリモコンデータを採取するには、再度、GBAからブートケーブルを抜いて、赤外線リモコンアダプタを挿して下さい。(1)の画面に戻ります。
7.コード編集及び送信画面・・・開発予定
 ・非公開コードの調査用として、コード部のデータを編集して編集したコードを送信できます。
 ・UP/DOWNキー及びRIGHT/LEFTキーでデータ編集、
 ・Aボタンで、編集したリモコンデータを送信できます。
8.各種設定画面
 ・任意の画面でSELECTキーを押すと、各パラメータ設定用の小さなパネルが開きます。
 ・RIGHT/LEFTキーで設定項目パネルの選択、UP/DOWNキーで内容選択後、Aボタンを押すと設定用パネルが閉じます。

 これは、解析処理におけるリーダ部判定方法の選択パネルです。
 これは、解析処理におけるトレーラ部判定方法の選択パネルです。
 これは、解析処理におけるコード部復調方法の選択パネルです。
 これは、解析結果におけるコード部の8ビット/4ビット表示切換え選択パネルです。
 これは、リモコン送信時に使用する変調周波数の選択パネルです。
 変調周波数は、30kHz〜50kHzの範囲で設定できます。

●「Ir Hack」ソフト
[ダウンロード] IrHack040626.zip(53KB)  プログラムソースIrHack040626(source).zip(50KB)

●今後の予定(未定)
・コード編集機能の実装(非公開コードの検索)

オプティマイズさんへの謝辞
IrRemoCon用データのPC転送機能は、オプティマイズさんが開発されたブートケーブルUSBとそのコントロールソフトbtcons_usb.exe等が持っているホストインターフェイス機能を利用しています。しかし、このホストインターフェイス機能はブートケーブルを抜き差しすると使えないことが分かりました。そこでオプティマイズさんに、ブートケーブルを抜き差ししてもホストインターフェイスが使えるようしたPC側コントロールソフトbtcons_usb.exeとGBA側Cソースの関数discon()をご提供して頂きました。この場を借りてお礼申し上げます。尚、このページでダウンロードできるCソースの内、オプティマイズさんのhio.c及びhio.hについては、私の環境に合うように少し改変しています。

更新履歴
2003/06/13:ページの公開
2003/06/21:サイバーガジェット製と任天堂製ケースの「赤外線リモコン送受信アダプタ」の写真を追加
2003/07/12:ソフトの初版を公開し、操作説明を追加
2003/07/23:サンプリングタイミングを修正
2003/09/20:コード部復調方法の選択機能及びトレーラ部判定方法の選択機能追加
2003/09/21:解析結果に1ブロックのトータル長さを追加
2003/09/27:解析結果に繰り返しタイプを追加
2003/10/30:IrRemoCon用データ生成及びPC転送機能を追加
2003/11/09:GBAソフト「機獣の戦士ヒュウ」に同梱されている赤外線通信アダプタに対応
2004/06/26:サンプリングデータ容量を2倍に変更(512byte-->1024byte)
2004/06/26:655msを超える無信号期間に対応
2004/06/26:波形表示スケールを11段階に増加
2004/06/26:解析結果最大データ長を2倍に変更(16byte-->32bit)
2004/06/26:解析対象フレーム数を拡大(2frame-->all frame)
2004/06/26:ブートケーブル抜き差しの安定化(btcons_usb_v3541.exe by オプティマイズ)
INDEXに戻る

Copyright(C) 2003-2004 Kiyoshi Izumi