SSブログ

赤外線リモコン実験機(ソニー製品用)

 定年退職後はテレビを見る時間が増えました。地デジは若者向けなのか 私にとってはあまり面白い番組がないので専らBSやCSを見ているのですが、限られた数のコマーシャルが何度も流れて しかもテンションが高くうるさいものが多くて辟易しています。
コマーシャルが流れるたびにリモコンで消音することが多いのですが、頻度が多いので消音ボタンがへたってきました。
そこで「消音」とか「ミュート」と発声すればテレビに赤外線リモコンの消音コードを送る装置を作ろうと考えましたが、簡単な音声認識をするにしてもハードルが高く時間がかかりそうなので、まずはボタンを押して「消音」コードを送る装置を作り当面はこれで対処しようと思います。

図1 赤外線リモコン送信機回路
赤外線リモコン送信回路(実験用).jpg

回路は図1に示す通り至ってシンプルなものです。
PIC12F1840用のソフトウェアはこちらからダウンロードしてください。
<2023.10.02記>「PICライター(PICerFT)の製作」でPICライターの自作方法を紹介しています。

・ソースコードには「消音」コード送信用のデータが書き込んであり、スイッチボタンを押すとリモコンの赤外線で「消音」コードを送信します。
書き込むデータを変えれば他のリモコンコマンドも送信できますが、現在は一つのコマンドしか送信できません。 
テレビの番号ボタンコードを書き込んで送るとチャンネル設定3桁のうちの1桁になります。 実用的にするにはボタンや送信コード種類を増やすことが必要ですが、そのためのソフト改造は さほど難しい事ではないと思います。

・ソニー製品用リモコンコードは 12bit, 15bit, 20bit と3種類あるようで、ソフトはこれら全てに対応できるよう作ったつもりですがテレビ用の12bitの4種類のコードしか確認しておりませんので動作しないコードがあるかもしれません。

・IR LEDをドライブするのに以前汎用トランジスタを試したところhFEが低く電流波形が鈍ってしまいました。 そこでFETに替えたところ電流のON/OFF特性が良かったのでそれ以来はFETを使っています。但し、低い電圧でONできるタイプであることが必要です。

・リモコンの信号はPWMを使ってキャリア信号を発生し、データの0, 1によってキャリア透過時間を変えて変調をかけています。 しかし、ここで問題が起きました。データ間のブランク時間にはIR LEDは発光しない状態でなければなりませんが、この期間の状態が安定しておらず発光したりしなかったりするという事です。
これはPWM信号がHighの時に透過時間が終わるか、 Lowの時に終わるかの違いによるものと思います。
仕様書を見たところPWM出力はTRISレジスタで出力状態と入力状態(ハイインピーダンス)が切り替えられるので、キャリアの透過の開始時に出力状態にして終了時に入力状態にするように制御して対策しました。 ただ、ハイインピーダンス状態になった時FETのゲート容量や回路の浮遊容量によって電圧がシャープに落ちなかったので10kΩの抵抗でプルダウンしました。

・始め リモコンコードはスイッチボタンを押すごとに1回のみ送信していましたがTVは稀にしか受信していませんでした。 インターネットで調べていたら「赤外線リモコンの通信フォーマット」という記事に1回のボタンが押されたら45mS間隔で5回(5フレーム)送信している図があったので、そのようにソフトを変更したところ動作が確実になりました。 

今回以下の記事を参考にさせていただきました。ありがとうございました。
PICを使った小型赤外線学習リモコン
赤外線リモコンの通信フォーマット
ソニーの赤外線リモコンコードを調べてみた

次はいよいよ難関の音声認識にチャレンジしようと思います。
PICは高機能なものを使う必要があるのでリモコン送信部も移植に伴ってまたソフトを変更しなければなりませんが、基本的な処理方法は今回勉強できたので良かったと思います。

(追記)
消音コードの送信トリガーは音声認識をしなくても 例えば手を2回連続して叩いて行うことも可能であると思います。
その場合、マイク出力をADコンバータに入力しておいて ある閾値を超える音の入力があったら0.1~0.2秒(手をたたく間隔による)待ってからまた閾値を超える入力があるかどうかで連続拍手の有無が判断できると思います。 誤検知の可能性もありますが、意外と可能性は高いかもしれません。
これでしたら、PICもPIC12F1840で行けると思います。
音声認識が難しそうであったらトライしたいと思います。 興味のある方はやってみてはいかがでしょうか。
=> (2022.06.20記) この方式を「音検知式 TV消音リモコン」で試みましたが誤検知が頻繁に起き、単にトリガーを2回検知する方法だけではうまく行きませんでした。 結局FFTのデータも加味して判断することでほぼ実用化しました。


===== 関連記事 =====
音検知式 TV消音リモコン


>> ブログ記事一覧へ
nice!(0) 
共通テーマ:趣味・カルチャー

nice! 0