けじめ (irMagicianのリリース)

ここ4年来の懸案が一つ片づいた。直接のきっかけは2つで以下のとおり

  1. 大学院での赤外線ビーコンとしての利用
  2. irKitの発売

 最初はiPhone用のリモコンが作りたかった。L5remoteなんかを見て、そう思った。ただ、iPhoneのコネクタを使う為には、アップルとの契約が必要だ。ちょっと難しい。そこで音声信号を利用するタイプを考えた。リモコンデータはサーバからダウンロードするタイプだ。その為にはリモコンデータを集める必要がある。その為の治具の製作に挑戦し始めたのが、2010年頃だった。最初は手慣れたEZ-USBを使っていたが、ソフトのサンプリングではUSBの割込が入ると信号を取りこぼしてしまった。そこで、CDC-ACMベースでPCと接続でき、シェルで動作を設定できるUBWを使うことにした。タイマを駆使し、変調周波数の38KHzからサンプリングやPCとのやりとりまで全て、ワンチップで処理できた。ただ、現実解になるかと言うとそうではなかった。その時の結論は、「内蔵RAMの容量が少ないので、全てのリモコンの信号を学習できない。そのため、これを解決するには大容量のRAMを搭載したマイコンにポートする必要がある。」だった。ソフトはブートローダであるUBWとその上で動作するファームウェア。UBWはアメリカ人が開発していて、コンタクトを取り、容量の大きいマイコンの評価ボードを送ってポートをしてもらうことにしたが、ポートは出来たが、うまく焼き込めなかったらしい。そうこうしているうちに、このプロジェクトはお蔵入りになった。

 やがて、大学院に入学してロボットの研究を始めることになった。ロボットの位置決めに赤外線ビーコンを使うこととした。これに上記の赤外線リモコンを使うことにした。問題なく動作し、それなりの評価ももらうことが出来た。また、いじり始めて「あぁ、もう少し改良したいな…。」と思ったが、サラリーマン大学院生にその改良時間を捻出することは出来なかった。

 インターネット家電が流行り出しているが、結局はスマホで外出先からエアコンのOn/Offが出来るくらいしか今はない。その方向性からirKitは発売された。非常に良い着眼点だと思った。自分でも考えたが、「エアコンのリモコンはどうにもならんよなぁー」と思った。大学院も修了し少し時間が出来たので、自分自身での新マイコンのUBWへのポートも視野に入れて、もう一度コードを見直すことにした。また、現在では他の人たちはどのような実装をしているのかを調べることにした。

 赤外線リモコンには様々なフォーマットが存在する。それらに合わせて学習リモコンのソフトをインプリしている例も数多い。ただ、その場合だとそれらのフォーマットにロックインされ汎用性が少なくなる。irMagicianでは当初から、信号をまるごと記憶する方法を採用していたので、この問題はなかったのだ。ただ、絶対的に容量が少なかったのだ。そこで、そのあたりを中心として改良を試みた。まずはデータ長を2バイトから1バイトにすることだった。マイコンのタイマにはプリスケーラと呼ばれる分周器がある。これの最大値に設定してもリモコンの波形は2バイトになってしまう。そこでその結果のダイナミックレンジを1バイト内で収まる除数の最大値を設定した。ポストスケールさせて、結果を1バイトに収めた。これで容量は2倍になったが、絶対的に容量が足りない。いよいよメモリマップの見直しに着手した。USBスタックでの利用、変数やサブルーチンコールでのスタックやグローバル変数の利用などを精査した。メモリアロケーションとアクセス方法を実験し最大で640バイトが確保できた。これは最初に作ったタイプの4倍以上の利用効率である。これでエアコンのリモコンの学習も出来るようになった。

 開発が中断していた4年間での変化した環境はラズパイやBBB、ガリレオなどのボードコンピュータの台頭である。irMagicianはCDC-ACMなのでこれらにも問題なく使える。ただ、現状のMacではドライバの関係でそのままでは動作しないが、知人のデベロッパが Work around で動作するドライバを現行OS用にリビルドしてくれた。これでPCの三大プラットフォームである Win, OSx, Linuxに対応できた。Linuxに対応できることは、現在の様々なボードコンピュータでも活用できることを意味する。プラグアンドプレイで利用できるネットワーク対応リモコンが自由に構築できるのだ。

 赤外線リモコン自身はTeamKNOxがゲームボーイカラーをやっていたことに遡る。当時の仲間にこの技術に詳しい人がいて、彼がゲームボーイカラー用の赤外線リモコンを実装してくれた。我々の仲間内では「赤外線の魔術師」と呼んでいた。そんな彼に敬意を表して、このシステムを「irMagician」と呼ぶことにした。魔法のように解決したいの願いも込めて。その彼におよそ5年ぶりにコンタクトが取れた。出来上がった基板を送った。残念なことに既にこれらへの興味を失ってしまっていたようだったが、完成には喜んでくれた。

 俺自身はまったく成長していないな…