ちょっとTea Time !? 赤外線リモコンの憂鬱 2021.9.25

全部リモコン化したい
 音楽を聞くのは、ほとんどがPCを置いている書斎のサブシステム。というのも、書斎で過ごす時間が長いということもあるが
すべての操作が手の届く範囲にあるから、機器の操作が苦にならない。それに対して、ゴロゴロしたりするリスニングルーム
のメインのオーディオ機材にはあまり電源が入らないない。理由は簡単で、つい操作が面倒になっちゃいます。
リスニングポイントから機材までは3mと離れていないけれど、手を伸ばしても届きません。そのため電源を入れるのがまず面倒
になってきます。そして、その後のボリューム操作等も触りにいかなければなりません。
 現在、リモコンで操作できるようにしているのはスピーカ切替と、メインスピーカ(3WAYマルチ)のボリュームだけです。
スピーカを2WAYに切り替えた場合、駆動するアンプは別になっていてリモコン化されていません。このすこし体を動かすのが
面倒ということで、つい機材に電源がはいりません。ほんとに無精者です。
 すくなくとも、体を動かさなくても音楽がきける状態にはしたいものです。そうすれば、ゴロゴロしながらでも音楽が聞けます。

まずリモコン化すべきは
 1)2WAYスピーカのコントロールアンプのボリューム
 2)機器の電源ON/OFF
です。市販の機器なら当然もっている機能です。

折角なので
 まずは音楽を聞き出すまでの操作がすべてリモコン化できればいいのですが、普通のリモコンというのは基本的には情報を送る
だけで情報をうけることはできません。操作した結果は、機材側のパネル等に表示されますが、すこし離れていると小さくてみにくいです。
それに、寝っ転がりながら聞いているとパネルを見る気もおこらないでしょう(笑。
 リモコン化するなら、双方向通信ができるようにして、手元のリモコンにも機材側の動作状況が表示できるようにしたいものです。

どのくらいの通信速度がでるの?
 双方向通信を行うとなると、気になるは通信速度です。双方向用の赤外線通信モジュールもあり、
これを利用するのが速度的にもいいのでしょうが、すでに実装している赤外線受光モジュールをつかうことを
考えると、追加で送信用に赤外線LEDをつけるだけの方が簡単です。
 でも実装済の受光モジュールは38kHzの変調光を受光するタイプなので、どこまで通信速度をあげられるだろう?
一度調べてみる必要がありあそうです。

専用の送受信のモジュールがつかえればいいですが、
既存のものが活用できればベターです。


通信速度を調べてみましょう!

まずは、既存の赤外線受光モジュールをつかって、どこまで通信速度がでそうか調べてみました。
いつものブレッドボードに赤外線LEDと受光モジュールを搭載です。これで、PICで38kHzで変調した
クロックを作って、どこまで短いクロックが送受できるかをしれべます。


ブレッドボード上で送受テストです。


変調周波数38kHzで赤外LEDと駆動します。

あれれ?受信信号がうまくでない・・・・・

まずは簡単に38kHz変調した600us幅のクロックを受信した場合の波形を観測します。
当然のことながら、安定したクロックが受信できるかと思いましたが、クロックがでたり
でなかったりしています。そのため、オシロの画面をみていても受信側の信号はチラチラ
します。

受信信号として定常的なクロックがでてきません。なぜだろう?

その理由を探るべく、いつも使う受光モジュールのデータシートを眺めますがよくわかりません。そこで、他のメーカのデータシートを
眺めてみたところ、ようやくわかりました。どうやら、連続してデータを受信できる上限時間と、インターバル間隔があるようです。
これは、迷光対策として受光モジュールが有してる機能なのでしょうね。結構、複雑なことをしています。


よく使う受光モジュールにはそれらしい記述があるようなないような・・・・・


他のメーカのデータシートをみて、受光時の制約がわかりました。

気を取り直して、再測定(まずは遅延時間測定)

 受光時の制約がわかったところで、発光側をすこし調整して再度測定です。まずは、受信信号の遅延時間から調べてみました。
2つの受光モジュールで調べてみましたが、どちらもONおよびOFFの遅延時間は240〜280us程度のようです。結構遅れますね〜。
内部での復調処理がかなり厳密に行われているのでしょう。


SHARPの受光モジュールです。
ON DELAY = 240us
OFF DELAY = 240us

いつもつかう受光モジュールです。
ON DELAY = 280us
OFF DELAY = 240us

通信速度の限界調査
 次は、通信速度の限界調査です。パルスのON時間を260us(10波)では受信ができましたが、210us(8波)に減らしたら、受信信号が欠けたり
でなかったりするようです。 限界パルス幅は260us程度ということです。ちょうどON/OFFの遅延時間に相当です。でも、限界値でつかうのも
怖いな〜。余裕を考えれば、パルス幅はON.OFFとも300usとしたほうがよさそうです。

T-ON 10波(260us)
T-OFF 250us
T-ON 8波(210us)
T-OFF 200us


SHARPの受光モジュールです。

 安定した受信信号が得られています。

この速度では、受信信号が欠落します。

いつもつかう受光モジュールです。

受信信号は問題ありませんが、
受信信号の立ち下がり(L→H)がすこしふらつくようです。

この速度では、受信そのものができないようです。

最高通信速度は?
 結局のところ、受信できる最短パルスは300usということになりそうで、そこから得られる通信最高速度は3.3kbpsになりそうです。
一度に遅れるデータ時間は100ms以下で、こちらも余裕をみて80msとすると、連続に遅れるデータ量は最大で264ビットとなります。
文字に換算すると33文字です。
 でも、実際には赤外線通信なので色々と冗長なデータを付加しないとまともの動かないだろうから、まあ実質は10文字/100msかな〜。
となると20×4桁のLCDの全画面を埋めるには約0.8秒は通信に必要になりそうです。結構かかるな〜。

ちょっと企画倒れになりそう・・・・

まずは簡単なところから! 2021.9.26

まあ最初は双方向通信みたいなややこしいことではなくて、簡単なことから考えましょう。
頻繁につかう手動の部分は2WAY−SP用のVRなので、ここをリモコン化です。
一番簡単なのは、このコントロールアンプのケースにはすでに、IRRがついているので、
そこから信号をつかって、中にPICとDAを入れ込んでやって、見かけ上のVRにしてしまえば
楽ちんです。もっと簡単にしようと思えば、EVC1972TのPICをプログラムを修正したらいいのですが、
汎用性をもたせるには、VRとの置き換えができるようにするのがいいでしょう。そうすれば、
左側にあるヘッドホンアンプ(HPA6120)のVRもリモコン化できます。

とDA
矢印はEVC1972Tのメインボリューム(VR)。これのリモコン化を検討です。
その上の大きなつまみはEVC72320T用のボリュームでエンコーダになっており、リモコン化されています。

ただ、単純にリモコン化だけするとVRの取り付け穴が無駄になりますから、ついでにエンコーダに乗せ換えましょう。
エンコーダを搭載することで、手動での操作もできることと、赤外線リモコンの学習開始のトリガーとすることができます。
すなわち、電源投入時にエンコーダが回転していたら学習モードになるようにすることができます。


このような形での変更です。VRをエンコーダに変更して手動での調整と、IRRの学習トリガーにも使います。

仕様は?
 DAは安価なものでマイクロチップのMCP4921(10ビット)がいいでしょう。PICは18ピンのもので十分です。
DAは10ビットありますが、1/1023分解能は意味がないので、最大分解能は128程度にします。24クリックの
ロータリーエンコーダで5周回せば最大になる分解能です。リモコン操作だと100ms毎のリピートをそのまま
つかうとしても最大値まで10秒かかるので、ここは加速制御をいれてボタンをずっとおしていれば5秒以下で
MAXになるようにしたほうがいいでしょう。


全体の回路はこんなものでしょう。パスコンは適時いれていきましょう。動作電圧は3.3〜5Vになります。


まずはプログラム作成のための環境整備です。

回路図修正 2021.9.28

プログラムを組んだのはいいのですが、何も表示がありません。まあ、できるだけシンプルにしたいので
必要はないのですが、赤外線リモコンの学習時がちょっとやっかいです。というのも、学習を開始するのは

学習開始時期
1)PICに最初に電源を投入した場合
2)電源投入後の1秒以内にエンコーダを操作した場合

になりますが、学習モードに入ったかどうかはわかりません。完全にブラインドです。
さらに、学習内容は
1)VOL-UP 2) VOL−DOWN
の順番で、リモコンキーを1回づつ押して学習させますが、その状態もわかりません。
こちらもブラインドです。

学習が終われば、自動的に稼働モードになるのでエンコーダやリモコンを操作して、出力電圧が
変われば問題なしということです。失敗して繰り返しても、さほど手間はかからないのですが、
プログラムのデバッグにも不便だったので、LEDもとりつけられるようにしました。
まあ、実際にはなくてもいいでしょう。


LED1,LED2を追加です。DACはMCP4912,4922のどちらでも使用可です。

LEDの表示状態と動作状況は下表の通り。

LED1 LED2 動作状況
消灯 消灯 通常モード
点灯 消灯 学習モード(VOL-UPのキー入力待ち)
点灯 点灯 学習モード(VOL-DOWN]のキー入力待ち)

PICは初回電源投入時はリモコンの学習状態になるので、リモコンを使わない場合は、
とりあえず一度電源を投入します。2回目以降の電源投入からエンコーダの動作をうけつけます。

下記にバイナリーを入れています(動作は保証しません。問題等あればBBSにでも書き込みください)
簡単なプログラムですがPIC16F1827は2kWのプログラム領域なので、占有率は50%を超えてしまいました。

バイナリー(HEXフォーマット)
PIC16F1827用

DACはMCP4912/4922のどちらでも使えます。
バイナリーファイル

そういえば

だいぶ前に赤外線リモコン用のDAを搭載した受光ユニットを作っていました(放置状態だったです)。
専用のリモコンを対象に考えていたので、学習やエンコーダの接続は考えていませんでしたが、これを
使えば少しは配線は簡単になるでしょう。まあ、上記の回路は簡単なのでかえって、この基板にあわせた
配線をするが煩雑になる気もしますが・・・・。

赤外線受光ユニットを以前作ったのを思い出しました。


基板を眺めながら回路図を起こしておきました。IRR(IC3)はPICのプルアップのないA0に繋がっているので、
実装しない場合はIC3の1-3間を短絡しておきます。


この基板をつかった場合の、配線はどうなるですが、できるだけシンプルになるように下記にしてみました。
LEDをとりつけなければ、エンコーダを3本線でとりつけるだけになります。赤外線受光ユニットは基板上に実装パターンがあるので
必要なら、そこから配線します。


既存の基板をつかった場合の配線はこんな感じにしましょう。


配線が変わるので、すこしプログラムも修正です。
といっても、I/Oのピン定義を変更するだけなので簡単です.

バイナリー(HEXフォーマット)
既存基板対応

PIC16F1827用

DACはMCP4912/4922のどちらでも使えます。
バイナリーファイル


動作確認の様子です。やはり基板にすると便利かな〜。

アンプのVRを変更するのは、ちょっと気合が乗ったときにやりましょう。
ケース内の改造自体はさして手間もかかりませんが、コントロールアンプって入出力が一杯接続されているので
ケーブルを取り外すだけでも考えると面倒です。
もうちょっと涼しくなってからかな〜、でも涼しくなったらもうちょっと暖かくなってからかな〜と思うのかな(笑。

あ、この基板は欲しい方おられたら進呈します(送料は必要)のでメールください(2021.9.28現在)。


双方向通信のフォーマットを考えよう 


(つづく?)