profile-photo

チャイルドガード

小さな子供が近づいたらテレビの電源をOFFに!


子供(赤児)にテレビをいじられないよう、近づいたらテレビの電源をOFFにする装置。
正面に付いているのは超音波センサ。これで子供までの距離を測って、近づいたらリモコンコードを赤外線でテレビに送信する。
これだけでは子供が設定距離前後をウロウロするとテレビが点いたり消えたりしてしまうので、一旦送信した後は、設定距離の2倍以上離れるまで、ガードの状態にはならないようにしてある。
今までいい加減にやってたけど、赤外線リモコンとその送信コードについて改めて勉強しました。
とは言え、Arduinoの世界は情報も多く、ライブラリも沢山あるので、割と簡単に作ることができました。Arduinoファンの皆さんいつもありがとうございます_(._.)_

 

001

正面から見たところ。
超音波センサの右に付いているのは、子供が近づいた時にリモコン送信する判定距離設定用の半固定抵抗。
ハードウェア的にはArduinoのアナログポートに繋いでいるだけ。
距離との換算や判定はソフトウェア任せ。

002

基板の部品面。
スルーホール加工ができないので、片面基板を使っている。そのため、きわめてシンプル。
特に今回はデバイスをコネクタ接続にしたので、殆ど何も無い状態になってしまう。

003

ハンダ面。
設計時の勘違いでジャンパーが少し飛んでしまった。
抵抗やトランジスタは表面実装部品(SMD)を使っている。
SMDを使うと基板の穴開けが不要になるので製作が随分楽になる。理想は部品全てをSMDにして、「基板の穴開けゼロ」だが、なかなかそうは上手くいかない(^_^;
一番手前にあるのは、リモコンの送信コマンド設定用DIP-SW。一応、電源ON/OFFだけではなくここで設定したコマンドコードを送信できるようにしてある。

004

ケースに入れたところ。
いつもながら、機械加工がニガテなので、なかなか設計通りに仕上がらなくて、アチコチ隙間ができてしまう。
アクリルを使うようになって、大分楽にはなったが、こちらはもう少し修行が必要だ。

005

側面
CPUはArduino Pro/Miniを使ったので、電源供給はUSBコネクタからそのまま行う。
しかし、今時Mini-USBのコネクタはないかも…
最近SparkFunのMicroが手に入るようになったので、こちらへ移行したいのだが、ProMiniの豊富なポート数も魅力なのだ。
Pro/MiniのMicroUSBコネクタ版と言うのは作られないのだろうか?

006

背面
右下に覗いているのが赤外線LED。
赤外線なので、点いているかどうか分からないので悩んでいたが、デジカメが赤外線を撮すことを思い出して、デジカメの液晶ファインダで覗いてみた。あまり明るくはないが、ぼ〜っと紫色に光るのが見えた。これで安心してデパグを進めることができた。
最終的には、別掲の『IRチェッカー』を使って、出力コードの確認を行った。

007

動作中の様子
液晶に距離を表示して、CPUのD13ピンLEDに送信状況を表示するようにしてある。

008

aitendoの特価液晶(TS174)を表示に使用。
7桁の7セグLCDなので、左3桁に現在値を右3桁に設定値を表示している。
設定値はリアルタイム表示なので、半固定抵抗を回すと表示が変化する。

赤外線リモコン

今回、要望は東芝レグザのTVを制御したいとのことだったので、赤外線リモコンはレグザのみに対応している。
赤外線リモコンの基本的なプロトコルはNECが作成した物が業界標準になっている。
『NECフォーマット』と呼ばれて各社が使っている。
実のところはIR送受信用のICをNECが世界で最初に作り、各家電メーカーがそれを採用したからと言うことらしい。 ただし、SONYとパナソニックは独自規格を決めて、NECフォーマットとは違うやり方をしているようだ。
リモコンの信号は「ヘッダ部」「データ部」「トレーラー部」の3つからなっていて、NECフォーマットではデータ部は32bitで構成されている。
この内最初の16bitはカスタマコードと呼ばれて、メーカーや装置に特有のコードらしい。
「らしい」と言うのは、全ての一覧表みたいな物が入手できず、IRチェッカーで色々なリモコンを調べた結果で推測しているからだ。
次の8bitがコマンドで、リモコンのボタンに対応した色々な機能が割り付けてある。最後8bitはコマンドコードの2の補数を取った物で、ここでデータが正しいかどうかチェックしている。

東芝テレビ(レグザ)のリモコン

今回の対象は、前に書いたように東芝のテレビだ。
1つのリモコンで2台のテレビを操作できるようで、「TV1」「TV2」を設定できる様になっている。
本機も基板上のジャンパーピンでTV1/2を切り替えられるようにしてある。
また、送信するコマンドはDIP-SWの設定をPOWER-ONスタート時に読み込んで送信するようになっている。
IRチェッカーで調べて貰ったところ、レグザのカスタマコードは、
TV1=0x02fd、TV2=0x02bdだった。
また電源ON/OFFのコマンドは0x48だったので、本機はTV1の時、0x02fd48b7を送信するようにしてある。


参考までにハードウェア・ソフトウェアの情報を。ただしこれらは僕の覚えであり、正確に改版を反映していない可能性があります。この通り作って動かないからと、怒らないで欲しい。