学習リモコン「GB-REM」

ゲームボーイカラーの赤外線通信ポートを利用をした第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(PLAY)画面 GB-REM(REC)画面 GB-REM(DUMP)画面 GB-REM(ENC)画面学習リモコン「GB-REM」です。

[開発履歴]
1999/06/27:N氏作の本体(GUI)にリモコン送受信ドライバ(rec_remocon、play_remocon)をリンクさせた初版。
1999/07/11:各種のリピート方式に対応させる前準備として、1回目と 2回目のコードの記録エリアを分割。
         (nvm[24][2][127] --> nvm[24][4][85])
1999/08/03:送信時の変調周波数調整機能と送出パターンの自動取得機能の追加。
1999/08/12:送出パターン 1111... と 1212... の判別に対応。
1999/08/28:送信ドライバ play_remocon の調整(送信信号の品質向上)
2000/01/22:エンコード機能を追加。(ENCモードの追加)エンコード/デコード機能も実装。
         ボタン数を減らしデータ採取容量の増加。(nvm[24][2][85] -->nvm[15][4][127])
         DUMPモードの表示を2ページ分切換え表示に変更。(全データの表示)
2000/03/18:採取したリモコンデータのレポートをMINDSTORMSのIRタワーを使ってPCに転送する機能を追加。
         (2400bps/ 8bit/ Odd Parity/ Stopbit 1)
2000/04/01:ビクター製リモコンデータのエンコード方式に対応。
2000/08/05:送信および受信ドライバの時間的な誤差を修正し、2次学習に対応。
2000/10/21:リモコンデータのレポートのPC転送方式をIrDA通信方式に変更。
         GB-fREMe用C言語ソースのPC転送機能を追加。
         レポートフォームのMS-EXCEL化に対応し送信データフォーマットの変更。
         PLAYモードとRECモードのボタンのカーソル移動のループ化。
         RECモードのカーソル移動の自動化。
         DUMPモードのheaderデータを変調周波数と送出パターンの表示に変更。


学習リモコンのしくみ
リモコン送信信号は前述のように信号の有る部分と無い部分の時間の長さで表わされます。リモコン信号の採取(受信)はこの信号の有る部分と無い部分の時間の長さを調べます。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進で表示されます。

[お願い] TeamKNOxではGB-REMで採取した赤外線リモコンデータを収集しています。地球上のすべてのリモコンを1台のGBCでコントロールしたいという大きな夢があります(大きく出たな〜)。レポートフォームはTeamKNOxのWEBサイトをご覧ください。

[ソフトの入手方法]GB-REMの最新版はTeamKNOxのWEBサイトからダウンロード下さい。

※当然のことながら、このソフトを使用したことによって生じた損害は全く保証しません。個人の責任のもとに行って下さい。
INDEXに戻る

Copyright(C) 2000 Kiyoshi Izumi