|
既に、FM77AVの赤外線キーボード信号の送信には、IRToyを使って成功、Arduinoを使って成功、そして、FPGAを使って成功した。しかし、まだ解明できていない謎があった。それは、どの信号が正しいのかという問題だった。
ですくまさんのBlogによると40ビットの信号が1ビットあたり100usで送信される、とある。が、この信号をよく見ると、4n+3ビット目と4n+4ビット目が必ず一している。なので30ビットの信号を、100us, 100us, 200usの繰り返しで送信していると見ることもできる。
一方、クラシックPC研究会の小林さんからいただいた情報によると、30ビットを100us, 125us, 175usの繰り返しで送信しているということだった。
IRToyを使ってFM77AVに信号を送ることに成功したときは、両方試して両方成功した。そのときはどちらでも良いのかと思った。ところがArduinoを使ったときは、100us, 125us, 175usは成功するものの、100us, 100us, 200usでは頻繁にキーコードの取りこぼしが発生した。
どちらが正しいのか。その謎は残ったままだった。
FM77AV、AV20、AV40は同じ赤外線信号を使うことができるはずなので、この3種類の機種の動態保存のために、これを解明しておきたくてあの手この手を試したのだが、今回ついに成功した。
ここに、解析のために使った回路、Arduinoのソースコードをアップロードした。副産物としてコマンドプロンプトからテレビのリモコンを制御できるようになった。
波形の解析のために最適なキーはCAPSだった。CAPSのキーコードは101010101010101010101010101001。最後の3ビット以外、1と0が交互に現れる都合のいい波形だったので、これを使った。
結果、FM77AV40純正キーボードからサンプルしたCAPSの波形がこれ。
クリックで拡大すると、1ビット目は波が4回、3ビット目は波が7回、5ビット目は波が5回出ている。この手の赤外線信号は38KHz 50% Duty CycleのPWM (Pulse Width Modulation)というややこしいことをしていて、1のビットを38KHz周期で半分の間点灯、残りの半分消灯の繰り返しで送信する。38KHzだと大体ひとつのサイクルが26us。13us点灯、13us消灯の繰り返しとなる。100usの間にはほぼ4回の点灯・消灯サイクルが入る。100usからはみ出る部分は消灯サイクルなので無視してかまわない。
1ビット目の100usには予想通り4回の点灯・消灯が入っている。次に3ビット目は7回の点灯・消灯が入っている。ということは、26us*7=182us。ただし、これを175usではみ出た7usが単に消灯時間であると考えることもできる。
次に、5ビット目。ここには5回の点灯・消灯が入っている。合計26us*5=130usだが、これも125usで単にはみ出た5usは消灯期間であると解釈することができる。どうやら純正キーボードは小林さんの言うように100us, 125us, 175usの繰り返しで信号を送信しているのが正しい。
同様に、自作Arduinoベースの赤外線キーボード信号送信アダプタから出るパルスを計測したところ、こうなった。(クリックで拡大)。純正キーボードとほぼ同じ信号が送信されている。
では、なぜIRToyは100us, 100us, 200usでも安定して信号を送ることができたのか?これは、どうやらまったくの偶然だったらしい。IRToyから送信したCAPSの波形をサンプルしたところ、こういう波形が取れた。なんと、100usのパルスに3回しか点灯・消灯サイクルが無い。175us送信しているはずのビットも6回、125us送信しているはずのビットも4回の点灯・消灯サイクルしか出ていない。
おそらく、IRToyは100usのパルスを送信するようにコマンドを送ったとき、100usを整数演算で26usで割って、点灯・消灯の回数を決めているのだろう。整数演算では小数点以下を切り捨てるので100us/26usは3として扱われる。これによって、100us, 100us, 200usの繰り返しを送信したときもたまたまFM77AVが認識できるパターンにはまってしまっていたらしい。
次のリンクからFM77AV40用純正キーボードからすべてのキーをサンプルした結果のデータをダウンロードできるようにした。これは、トランシーバーGUIから開くことができる形式。ただのテキストファイルなので開いて見ることもできる。各サンプルの数値の意味は、点灯・消灯時間をマイクロセカンドで記録しているだけ。なお、それぞれのサンプルの末尾のデータはキーリリースコード。
まだ動作するFM77AVがあるなら捨てないで!ときどき電源を入れてあげよう。キーボードが無いなら、作ればいい。ディスクドライブが死んでるならHxCを使うとか、RS232Cから流し込めばまだ使える。
Comments are welcome. Send E-Mail to: |