2012年12月30日日曜日

Raspberry PiでIRリモコンを読む


うちの場合リビングに2台の同じエアコンがあってリモコンを操作すると両方が動作します。
普通はこれでもいいのですが、たまに片方を止めたい時などリモコンを微妙に手で覆ってコントロールしています。
iRemoconもいいのですが、できればエアコンのHA端子制御につけているXBeeモジュールの先にマイコンでも付けて弱いIR出力を出せるようにしたいと思っています。
RaspberryPiが来たので、まずはリモコンの解析を兼ねて取り込みの方を検討し始めました。
まだクロス環境は構築してないので出来ればdriverは標準のもので済ませたい(たしかkernelをbuildしないとdriverをbuild出来なかった気がします)ので、ユーザーランドからうまく出来ないか試し始めました。

IRレシーバーのICをGPIOに繋いでみました。

とりあえず、mmapでgpioのあたりをアクセスできるようにして、gettimeofday()で100usec毎にGPIOをサンプリングしてみました。
目論みとしてはリモコンは3回繰り返し同じコードを出すので、うち2回程度はコンテキストスイッチに邪魔されずに取れるのではないか、2回とれれば正しいコードを取得できるのでは無いかという感じです。

やってみましたが、見事ダメでした。リモコンのボタンを2回連続で押して最初の4回は途中でコンテキストスイッチが入ったようで情報が欠落しています。2回は全部正しく取れましたが、どうも安定して取れてません。

もう少し他のインターフェイスも研究して、最悪driverを書かないとだめかな。
100usに1bitのサンプリングなのでdriverでtimer割り込み使えばOKなレベルなんですけどね。

0 件のコメント:

コメントを投稿