赤外線学習リモコン受信機の製作
2011年5月13日(丁度10日前)にアップした赤外線リモコンの受信機のレポートの続きと言えば続きなんですが、家の中を見渡しますとリモコンの数が結構あったのにビックリしまし。SONY、SHARP、Panasonic、PIONEER、SANYO・・・後はクーラー、
扇風機、ケーブルテレビ会社の機械、天井照明など、あと知らないメーカーの物がいくつか??(殆ど使っていませんが)が見つかりました。
そこで思いついたのは、「学習リモコン受信機」です。学習リモコンの存在は知っていて、使っているリモコンの一部のボタン機能を学習リモコンに記憶させ、1本のリモコンで何台かの家電製品をコントロールするものと認識しています。つまり、学習リモコン
送信機と言った方が正確でしょう。しかし、受信する側の学習リモコンはあまり見当たりません。唯一、家にあったのは天井照明のリモコンです。ELPAの朝日電器社のリモコンです。
詳しい情報は http://www.elpa.co.jp/product/li01/elpa166.html のサイトまで ライティングバーに取り付けるタイプのリモコンで、最大5台までON/OFF出来るものです。電気の元を消しても直前のON/OFF状態を記憶する優れモノです。 ライティングバーの取り付けは何社かの規格化がされていて、他メーカーの物でも取り付くようです。私は恥ずかしながら約2mのライティングバーに8本もの電球ソケットを取り付けています。 電球の数で言うと、10個になります。あまりの数の多さに、実際に電球を入れているところは8本で、内3本は左のリモコンユニットを取り付けています。ちなみにリモコンは、NECフォーマットで通信していました。 |
さてWeb上で「学習リモコン受信機」と言うキーワードで検索してみると、結構先人の御仁方々は素晴らしいものを製作していて感動します。一方私は、前回のリモコン制御では少し(いや!かなり!・・・かも?)ごまかし部分があったように思えますが、
とりあえず正常動作しているので・・・お許しを!・・・・と言うことで、反省の意味を込めて、今回は前回とは全く違う方法(特にソフトウェアのアルゴリズムは変えました)で製作しました。また拘ったのは、出来るだけ小さく作ることです。そして一つ一つが独立して動作
し、多チャンネルが必要な場合は、必要個数用意(例えばドッキングや積み重ねなど)するだけで対応できる物を目標にしました。
取り急ぎ動作のさせるための信号として、AC125V/250V-5Aの無接点リレーを駆動しています。同時に確認用のLEDも取り付けました。
今回家中にあるリモコンの信号チェックにデジタルオシロを使っていましたが、作業効率がかなり悪いので、秋月電子さんで販売している「PICマイコン赤外線リモコン学習キット」:\2,400を購入し、
秋葉原にある「アキバラボ」で組み立てを行い、家に帰り、LCDを取りつけ、通信コードの解析に使用しました。結構便利なのですが、SONYフォーマットは未対応なので、これだけは仕方ないのでオシロで行うことにしました。
唯一、このSONYフォーマットの処理で一番時間がかかりました。フォーマットの詳細は他に譲りますが、SONYフォーマットは7bit(データコード)+ 5bit、8bit、13bit
(デバイスコード)構成で、デバイスコードがリモコン、あるいはボタンによって変化するので、厄介でした。とりあえず何とかなりました。なお、どのリモコンも検出する全データを取り込んで比較しています。いつもの仕様は下記の通りです。
上記の外観を簡単に説明致します。白い四角い物は12Vリレーです。結構薄く、a接点1個で高容量の負荷(AC125V/250V-5A)を駆動できる物です。足が曲がって黒いものが飛び出ているものは赤外線センサー受信モジュール
です。これは殆どの物が使えそうです。駆動は5Vで行っています。LEDは動作確認用です。将来は面実装にしたいと考えています。赤いスイッチが見えますが、中立OFFタイプのもを使っています。どちらか片方に倒すと、
マイコンはリセットされ、LEDが2回点滅します。その間にスイッチを反対側に倒すとリモコンボタン登録モードになります。この辺りの操作方法は改善の余地がありそうです。基板にはピンの様なものが2か所あります。1か所は電源+12Vを接続します。リレー付近にあるピンはリレーの接点がそのまま繋がれています。
今回センサーとLEDをわざと足を長くしたまま搭載したのはケースをどうするか、まだ未定なのでこのようにしています。それらを除くと現行基板のサイズは、45×27×厚み12mmで仕上がっています。基板化すればもう少し、小さくなると思います。裏には面実装部品がいくつか取り付いています。
+5Vレギュレータやプルアップ抵抗、保護ダイオードなどがあります。
ソフトウェアについて、前回を少しアレンジすれば出来ると甘んじていました。ちなみに前回はデジットで見つけた100円リモコンだけをターゲットにしていたので、それで終わってしまいましたが、今回は
3種のフォーマットに対応しようとした為、特に家電協フォーマットが6バイト(48ビット)と長くなり、前回の方法では最後の方でデータが狂うことが判明しました。また上でも触れましたが、SONYフォーマット
にいては、デバイスコードがリモコンやボタンによって長さが変わるため、それに応じたソフトにしなければなりません。
リモコンのフォーマットの検出方法は、Web上にもありますが先人の御仁達の情報をヒントに、信号の出始めのタイミング時間を計って判定しています。またリモコンからのコードチェックは、全ての情報(コード)をチャックしています。
SONYフォーマットでは12ビット〜20ビット、家電協フォーマットでは48ビット、NECフォーマットでは32ビットをチェックしています。
操作の最初には、必ずお使いのリモコンのボタンの1つを押して、登録しなければなりません。登録が完了すると、マイコン内部のEEPROMに検出したコードの全てが保存されます。このコードを元に、次から検出する赤外線センサからのコードと比較
して処理します。ありがちなのは一旦登録したボタンがどれだったのか忘れることがありますので、気を付けて下さい。
動作はとりあえず「オルタネート」動作にしていますが、ここで厄介なことがあります。リモコンによってはボタンを押している間、連続してデータを送信するものがあります。この時、マイコンは次のデータが来たと思い、トグル動作をします。これではダブって動作することになりますので、
強制的に休み時間を作っています。その時間の適切値を見つけるのに苦労しました。だいたい「0.3秒」くらいが操作する上で適切な時間になりました。他の人にも試してもらいましたが、特に違和感が無いそうです。
今回使ったマイコンは2kバイトのROM領域があり、今回、82%ほど使用しました。コーティングが下手くそなこともあってメモリーを多く使ってしまいましたが、なんとか収まりました。割り込みは一切使っていません。別のマイコンを使えばもっと余裕が持てるし、機能も増やせそうですが、
機会を見てやってみたいと思います。
いつもの様に動画をアップしましたので参考にして下さい。