2012年8月19日日曜日

Arduinoで赤外線信号を読取

エアコンのリモコンとか作った そのさん。

室温がわかるようになってもそこから発展しないのはつまんないし、室温をコントロール出来れば面白いなと思ったわけです。
つまり、エアコン操作。

友人がArduinoと赤外線LEDでリモコンを自作しているのを見ていたので、その組み合わせでどうにかなりそうなことは分かっていました。
しかし肝心の送信する信号を知る方法がありません。
PC-OP-RS1 (パソコン用学習リモコン) みたいなので調べればいいじゃないかという意見もありますが、安いものではないしどうせなら自作してみたほうが面白いかな、と。

まず赤外線リモコンの信号とはどんなものなのか検索。
分かりやすく解説してくれているサイトがあったので、この知識を前提に進めます。

ハードウェア

  • Arduino UNO R3
  • PL-IRM-2161-C438
    • 安価で入手可能なセンサーですが、これがなかなか高機能。赤外線リモコン特有の38kHzで点滅する赤外線の有無を出力してくれます。この手の工作では定番ぽい?

赤外線センサーの Vout を、Arduinoのデジタルピンに繋ぎます。残りの電源とGNDも適当に。

ソフトウェア


自宅のエアコンのリモコン信号がどのフォーマットなのかを知るため、赤外線信号のON/OFF時間を取得します。

sketchはGistで公開
Raw IR-signal receiver for Arduino with PL-IRM-2161-C438 — Gist

結果はちょっと見づらいですが、信号のON/OFFが切り替わったタイミングがマイクロ秒単位で取得できます。
リーダー信号の時間から、おそらく家製協フォーマットだろうと推測。

フォーマットが分かれば16進表記にするのは難しくないですね。

IR-signal receiver for Arduino with PL-IRM-2161-C438 — Gist


というわけでリモコン信号の値を受け取ることが出来ました。
ビット順序が昇順か降順かだとかは機器ごとに変わると思いますが、大概の機器はこんな感じでいけそうです。

本当にこれで正しいのかどうかは実際に信号送信してみなければ分からないのですが、それはまた後ほど。

0 件のコメント:

コメントを投稿