Top/Devel/電子工作/トラ技付録78K0 USBマイコン基板/赤外線学習リモコンR2-D2

赤外線学習リモコンR2-D2はてなブックマーク

IR_R2-D2.jpg

布団でごろごろしながらPCをいじっていると、そのまま寝てしまうことが多い。

しかし、照明、TV、エアコンをONにしたまま寝てしまうと、疲れが全く取れない。

そこで、照明、TV、エアコンを自動的にON/OFFする仕組みを作ろうと考えた。


自動といえば、ドロイド、R2-D2。
ということで、赤外線で色々な機器を操作するR2-D2を作ることに :)

システム構成図

IR_R2-D2_SYSTEM.png

処理スケジュール

時刻処理
07:30エアコンON、エアコン温度指定26度
07:55照明ON、テレビON、テレビ音量指定10、テレビチャンネル指定NHK、ミニR2-D2暴れる
09:00エアコンOFF、照明OFF、テレビOFF
10:00DVDレコーダから動画を取得、iPod用にエンコード
02:00エアコンOFF、照明OFF、テレビOFF

検討過程

赤外線の制御はトラ技付録78K0 USBマイコン基板で行うこととした。


ガワは市販のR2-D2 USBハブ(右)にしようかと思ったが、7000円と値段が高く、ちょっと大きい。そこで、ヴィレッジヴァンガードで見つけたR2-D2スピーカーに、小型のUSBハブを埋め込むことにした。


また、照明、TV、エアコンのON / OFFだけでは動きがなく、面白みに欠ける。そこで、賑やかしとして、赤外線で操作できるマイクロドロイド R2-D2を購入。


さらに、通勤中の楽しみとして自動的にお笑い動画をDVDレコーダから取得、mp4に変換し、iPodに入れるようにした。


したがって上記のようになった。

構成物 - ハードウェア

楽天アフィリエイト

構成物 - ソフトウェア

時刻起動は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 :p

IR_R2-D2_01.jpg
IR_R2-D2_02.jpg
IR_R2-D2_03.jpg
IR_R2-D2_04.jpg
IR_R2-D2_05.jpg
IR_R2-D2_06.jpg
IR_R2-D2_07.jpg

参考

関連

Amazon



オススメ!
この価格でUSB接続できるマイコンが付いてくる。
本当に手軽にPCからマイコンへプログラムを転送できますし、マイコンのポート数も多いので、結構遊べます。ウェブ上にも情報が沢山あるし、オススメです :)

*1 赤外線の時刻起動のみならら、マイコンのタイマーで実現できるが、今回はmp4のエンコードも行うため、タスクスケジューラを使用した。
*2 東芝エアコンがカスタムコードも含め?、8bit*9という奇数バイトのデータを送信していた。
*3 F000番地が"9B"なのはプログラムによらないため、新しいプログラムを転送したいときはUSB端子を引き抜く等の作業が必要。
差分 一覧