ゲームボーイカラーの赤外線通信ポートを利用をした第1弾ソフトとして、「学習リモコン」を作ることにしました。まずは受信ドライバと送信ドライバをRGBDevSysを使ってアセンブラ言語でコーディングしました。この時は恥ずかしながらC言語を知らなかったので、デバック用として作った受信データのダンプ表示部分もアセンブラで書きました。この時、既に現在のGB-REMの「PLAY:送信」「REC:学習」「DUMP:表示」モードの原型ができていたわけです。これを学習リモコンのテストバージョンとしてTeamKNOxのWEBサイトで公開しました。テストバージョンということで、学習データは一種類しか記録できませんでした。UIも大変お粗末でBボタンで学習、Aボタンで送信、そしてその状態により画面の色が変化するという大変シンプル(不親切)な仕様でした。
このあと、GB-REMの本体(GUI)のベースをチームのトップコーダーであるN氏がC言語で作ってくれました。24個のリモコンデータがバックアップRAMに記録できるようになっており、DUMP表示もC言語でコーディングされていました。(このN氏のC言語ソースが私のC言語入門のお手本となりました)私は作成済みの送受信ドライバをRGBDevSysからGBDKのアセンブラソースに移植しました。それを本体とリンクさせGB-REMが完成しました。そして1999年6月、GB-REMをTeamKNOxのWEBサイトで一般公開することができました。
2000年になり、「エンコード機能」「レポートのPC転送機能」を追加しました。「エンコード機能」はすべてのリモコンデータフォーマットには対応していませんが、今後フォーマットの解析結果を反映していきたいと思います。「レポートのPC転送機能」はMINDSTORMのIRタワーを利用して採取したリモコンデータをPCに転送する機能ですが、MINDSTORMユーザは採取したリモコンデータのレポート作成が楽になりました。
そして2000年10月、開発したIrDA通信ドライバをGB-REMに組み込みました。採取したリモコンデータをIrDA(9600bps)を使ってPCの通信ソフトに送ることができるようになりました。送信するデータはMS-EXCELのレポートフォームで管理できるよう送信データのフォーマットの見直しも行ないました。またGB-REMで学習したリモコンデータを姉妹ソフトGB-fREMeで利用できるようにC言語のソース形式でPCに送れるようになりました。IrDAが使えるようになったので利用できる方々が大幅に増えるのではないかと思います。またビルド時にソースコードのドライバ指定部分を変更するだけで以前のMINDSTORMのIRタワー用ドライバも使えます。
学習リモコン「GB-REM」です。|
学習リモコンのしくみ リモコン送信信号は前述のように信号の有る部分と無い部分の時間の長さで表わされます。リモコン信号の採取(受信)はこの信号の有る部分と無い部分の時間の長さを調べます。GB-REMでは0.1ms毎に信号の有無を調べ、信号の有る部分および無い部分の長さを各々カウントし順次RAMに記録していきます。たとえば信号の長さが0.8msならカウントは8となります。次にRAMに記録されたデータを送信する場合はRAMから順次データを読み出し、読み出したデータのカウントの時間の長さだけ送信ポートをHigh/Lowすることにより実現しています。さらにHighの部分は38KHz(デフォルト)の周波数で変調していますので、約0.01ms毎に細かくHigh/Lowを繰り返しています。 |
|
エンコードのしくみ リモコン送信信号は一般にPPM方式で符号化されています。PPM方式はデータ0とデータ1を信号の有る部分と無い部分の時間の長さで表現します。エンコードすると、メーカ、機種、ボタンの生コードが分かります。またエンコードすることによりデータ容量が約1/8になります。GB-REMのエンコード内容ははリーダ部とトレーラ部を取り除き、コード部の採取データ(High/Lowのカウント値)をPPM方式で符号化されたデータとみなして2進数8ビット単位(1バイト)に変換します。GB画面の「ENC」モードで "Code=" と表示される部分にエンコードされたデータが16進で表示されます。 |