赤外線学習リモコンR2-D2
布団でごろごろしながらPCをいじっていると、そのまま寝てしまうことが多い。
しかし、照明、TV、エアコンをONにしたまま寝てしまうと、疲れが全く取れない。
そこで、照明、TV、エアコンを自動的にON/OFFする仕組みを作ろうと考えた。
自動といえば、ドロイド、R2-D2。
ということで、赤外線で色々な機器を操作するR2-D2を作ることに
システム構成図
処理スケジュール
時刻 | 処理 |
07:30 | エアコンON、エアコン温度指定26度 |
07:55 | 照明ON、テレビON、テレビ音量指定10、テレビチャンネル指定NHK、ミニR2-D2暴れる |
09:00 | エアコンOFF、照明OFF、テレビOFF |
10:00 | DVDレコーダから動画を取得、iPod用にエンコード |
02:00 | エアコンOFF、照明OFF、テレビOFF |
検討過程
赤外線の制御はトラ技付録78K0 USBマイコン基板で行うこととした。
ガワは市販のR2-D2 USBハブ(右)にしようかと思ったが、7000円と値段が高く、ちょっと大きい。そこで、ヴィレッジヴァンガードで見つけたR2-D2スピーカーに、小型のUSBハブを埋め込むことにした。
また、照明、TV、エアコンのON / OFFだけでは動きがなく、面白みに欠ける。そこで、賑やかしとして、赤外線で操作できるマイクロドロイド R2-D2を購入。
さらに、通勤中の楽しみとして自動的にお笑い動画をDVDレコーダから取得、mp4に変換し、iPodに入れるようにした。
したがって上記のようになった。
構成物 - ハードウェア
- タイトー R2-D2スピーカー
- ボディとして使用するために中身をくりぬいた。
- CQ出版 USBマイコンでパソコンI/O! (トラ技付録78K0 USBマイコン基板 同等品が付属)
- 赤外線制御のためにボディに埋め込んだ。
- ELECOM これハブ プラス。 U2H-TM400Bシリーズ
- iPod - R2-D2間接続のためにボディに埋め込んだ。
- トミー マイクロドロイド R2-D2
- 賑やかしのために周囲に配置した。
- PARA Light 赤外線リモコン受信モジュール PL-IRM0101
- 赤外線受信のためにレーダーアイ部分*3に埋め込んだ。
- 東芝 赤外線LED TLN233
- 赤外線送信のためにホロプロジェクター部分に埋め込んだ。
- Linkman フルカラーLED LA509UGBMAA1
- 装飾のためにPSIライト部分に埋め込んだ。
- OPTOSUPPLY 超高輝度青色LED OSUB5111A
- 装飾のためにロジックディスプレイ部分に埋め込んだ。
構成物 - ソフトウェア
時刻起動はWindows標準のタスクスケジューラを使用した。*1
トラ技付録78K0 USBマイコン基板用赤外線制御プログラム
諏訪工房様のソースを元に下記修正を加えた。
- マイクロドロイド R2-D2、東芝エアコン(RAS-2217D)、東芝DVDレコーダ(RD-S301)、Panasonicテレビ(TH-36FG15)、 KOIZUMIシーリングライト(GHN6141D)の信号を扱うために、データコード長を16bit固定から8bitの倍数に拡張した。*2
- キャリア信号を送信するフォーマットに合わせて変更できるようにした。
- あらかじめ設定した信号をキーボードの1234567890キーで送信できるようにした。
- キーボードのEnterキーで受信済み/送信済みの信号を送信できるようにした。
- NECフォーマットではリピートコードのoff幅はリーダコードのoff幅の半分のはずなので、そのように修正。
- 装飾用LEDを制御するようにした。
他者の著作物の修正版なので、実物のここでの公開は控える。
赤外線制御プログラム転送&実行マクロ
マイコン初心者なので、上記プログラムをフラッシュメモリに書き込むのはちょっと怖い。そこで、RAMを使うことにする。
ただ、毎回転送すると非効率なので、転送済みかを判定し必要時のみ転送、実行するようなTera Termマクロを作った。*3
; COM5を開く
connect '/C=5'
if result<>2 goto end
timeout=5
; プログラムロード、実行
setsync 1
sendln ''
sendln 'dump f000 1'
result=1
while result=1
recvln
result=1
while result=1
recvln
result=1
while result=1
recvln
strscan inputstr '9B'
if result=0 then
sendln 'load'
waitln 'Drop a HEX file.'
sendfile 'C:\video\rmc.hex' 1
endif
setsync 0
sendln 'jmp f000'
; TV電源OFF
wait '=>'
send 's'
wait 'send data='
sendln '40 04 01 00 BC BD'
; 照明電源OFF
wait '=>'
send 's'
wait 'send data='
sendln '01 76 00 FF'
; エアコン電源OFF
wait '=>'
send 's'
wait 'send data='
sendln 'F2 0D 03 FC 01 B0 07 00 B6'
wait '=>'
:end
; COM5を閉じる
disconnect
; Tera Term終了
closett
exit
タスクスケジューラに "C:\Program Files\teraterm\ttpmacro.exe" c:\video\tv_light_aircon_off.ttl というように設定する。
DVDレコーダ(VARDIA(RD-S301))からMPEGを取得してMPEG4にエンコードするスクリプト
動作には下記が必要。
タスクスケジューラに cscript GetMpgAndEncodeToMp4.js というように設定する。
なお、デジタル放送は取得不可。あらかじめアナログ放送のみを保存するフォルダをVARDIA側に作る必要がある。
写真
まさにquick-and-dirty
参考
- トラ技付録78K基板を使おう
- リモコン | デバイス共通 | マイクロコンピュータ | FAQ | サポート | NECエレクトロニクス
- トラ技(2008.8)付録基板「USBマイコン」で遊ぶ
- LAN赤外線学習リモコンKTIの紹介 サンプル・資料・応用
関連
Amazon
オススメ!
この価格でUSB接続できるマイコンが付いてくる。
本当に手軽にPCからマイコンへプログラムを転送できますし、マイコンのポート数も多いので、結構遊べます。ウェブ上にも情報が沢山あるし、オススメです