HTML5でスマートフォンからファービーとかテレビとかを操作する赤外線リモコンを!(2/2)
2014/05/22 7M4MON
前章により、めでたく赤外線リモコン用のWAVファイルを作成できるようになりましたので、学習リモコンを作ってみたいと思います。
シャープのテレビリモコン、ソニーのテレビリモコン、Canon WL-DC100
- 作戦1 PICマイコンでリモコン解析装置を作る!
赤外線センサの出力を48kHzでサンプリングして、状態が変わったら、それまでの回数を出力するものです。
ソースコードはこちら。CCS Cコンパイラ用です。
最初はsampling_timeは配列にしてまとめて送ろうとしたのですが、 バッファを確保できない(RAMが64byteしかない)ので逐次送ることしました。
USB-シリアル変換アダプタを4ピンヘッダにつなぎ、115200-8-n-1で接続、SerialDebug2でダンプします。
これで、シャープのリモコンは上手くいくのですが、TOSHIBAのブルーレイレコーダーのリモコンでは、
255サンプリング(約5.3ms)よりも長い符号が来るので、NGでした。
ならばとsampling_timeを16ビット化して実験したのですが、今度はputc用のビット変換と送出
counterlsb = counter;
counterusb = counter >> 8;
putc(counterusb);
putc(counterlsb);
をやっているうちに最小幅を取り逃すことが判明。8bit PICマイコンでは力不足かなと、16bitで10kB程度のRAMを持つ
マイコンで作り直すのは面倒だなぁとかなんとか考えていたのですが、そういえばロジアナを持っていたことを思い出し、
作戦2に続きます。
- 作戦2 ロジックアナライザ「ZEROPLUS LAP-C」でリモコンを解析してMakeWaveFile用のフォーマットにしちゃる!
写真はロジアナの外部電源端子から3.3Vを取り、電源にパスコンを付けて、OUTを30kΩでプルアップしてB7に入力した物です。
設定は、Internal sampling frequency = 50000 Hz, RAM size = 32KBです。48kHzサンプルからは4%ほど多いですが、問題ありませんでした。
読み込んだデータをExport Waveformします。その際、Data Modelを「SamplingChangedDot」、Output RangeのFromを「T Bar」にします。
設定ファイルはこれです。ソニーのテレビ2chをエクスポートしたものは これです。
このファイルを 赤外線リモコン用のWAVファイルを作るWebアプリケーション にアップロードすれば、
いい感じに整形するようにしました。
おまけ
- 音が小さいやつ対策アダプタの作成
302SHではイヤフォンを付けたときは音が出ているのに赤外線アダプタでは動作せずに悩んでいた。
オシロで確認したら0.8Vp-pしか無かったので、20dBのアンプを作ってみた。
結果良好。
- 19kHzの音を作成するハードウェアを作って録音する。
19kHzのオシレーターをオペアンプで作成し、PCのマイク入力に入れる作戦。
回路はこちらを参考に、19kHzの定数に変更。 赤外線センサのoutは、オープンコレクタらしいので、図2のC1とGND間に追加。
C1はフィルムコンデンサにした。
ボタンを押して持続的に発振させて、オシロスコープで観測しながらでボリュームで周波数とレベルを追い込む。
Thinkpad R60ではマイク入力にLPFが入ってたので、USBオーディオアダプタを別途付ける。
しかし、歪まないレベルがわかりずらい&録音開始時と終了時は手動で行う必要がある&
録音したデータはシングルエンドなので振幅が半分になってしまうことから、直接WAVファイルを作成する方針に変更した。
- RTS線に赤外線センサをレベル変換IC越しにつけて、ハイ・ローの時間をPCでカウントしてみる。
マザーボードのシリアルポートにつけて実験したが、PinChangedの時間が短すぎてだめだった。残骸…なにか参考になれば。
今後の課題等
- CSSもうちょっとなんとかしたいな!
- いろんなリモコンのWAVファイルをみんなで共有できればいいんじゃないかな!
- おもちゃ売り場とかで、デモ機が反応したらおもしろいんじゃないかな!