部屋の照明のスイッチが不便な場所にあったので,赤外線で照明をON/OFFできる機器を取り付けましたが,もう一つリモコンが欲しかったので,AVRを使い自作しました.
付属のリモコン
回路図は上図のとおりです.回路が簡単なのとケースにスペースが無いため,空中配線しました.
リモコンの送信距離を得るため,赤外線LEDをFETでドライブして1.1Aほど流しています.
赤外線リモコンを作るにはまず送信信号の波形が必要になるため,LIRCを作成してリモコンの波形を調べましたが,信号のフォーマットが一般的なものとは異なり独自のものであったためにうまくキャプチャできませんでした.
そのため付属のリモコンを分解して送信用LEDの電圧をオシロスコープで測定して波形を得ました.
ケースには,100円ショップで売っていた単三電池2個の電池ボックスが付いている3V→5V(USB)変換器のケースを使用しました.
完成した写真は次のとおりです:
完成写真(内部)
完成写真(外観)
このリモコンを制作して9.5年が経ちましたが,電池を確か一度だけ交換してずっと使い続けてきました.最近このリモコンで使ってきた蛍光灯のペンダントライトから異音が聞こえるようになってきたので,この機会にLEDのシーリングライトに交換しました.アイリスオーヤマのACL-6DGという型番のものでリモコンでコントロールできますが,一つしかリモコンが付属していなかったので昔作ったこのリモコンを新しい照明に対応させました.
まずは赤外線の信号のプロトコルを知る必要があるので,やはり昔作成した赤外線LEDリモコンの受信機を使って信号をPCに取り込みました.信号を取り込んでからAVRのコードを自動的に生成するツールを作成しました.以下のように使います.
生成されたAVRのコードはここにあります.この自作リモコンには2つスイッチがあるので,ON/OFFと常夜灯に割り当てました.かなり久しぶりにAVRのアセンブラを使いましたが,avrasm2は今使っているマシンにインストールしていなかったので,Arduinoに含まれているavr-asを使うことにしました."#include <avr/io.h>"としてヘッダファイルを読み込む前に"#define __ASSEMBLER__"としておかないとアセンブラ用のコードが生成されない問題に時間を使ってしまいました.
上記のアイリスオーヤマのACL-6DG用のリモコンを制作して2.5年が経ちましたが,このシーリングライトが壊れてしまいました. LED照明なのに非常に寿命が短いと思います. 仕方がないので新しいシーリングライトを購入して,再びそのリモコンのコードを解読して使えるようにしました.
購入したのはYselect YLLS-06J2というもので,リモコンの2つのスイッチには前回と同様に電源のON/OFFと常夜灯に割り当てました. リモコンコマンドの解析に使ったツールも前回と同じです. 今回作成したコードはここに置きました. このリモコンは一度ファームウェアを書き込んだら二度と修正しないと思って接着剤でフタをとめる作りにしているので,こんなことならばもっとファームウェアの変更がやりやすい構造にしておけばよかったと思います.