赤外線リモコン作成メモ

さて、赤外線リモコンの作成です。Raspberry Piで自作しておられる方もたくさんおられるようなので、いきなりそっちで作ってしまう手もあるのですが、過去にArduinoで失敗したときのリベンジや、3.3V系での作成テスト、無線(XBee)のテスト、その他諸々の理由により、Arduino Fioで作ってみることにします。これができてしまえば、別にRaspberry Pi版を新規に作らなくても、Rasbberry Pi – Arduino間の通信を確立すればリモコンができるわけですし。

で、結論から言いますと、「基本的な機能に限定で、多くを望まないレベル」のものであれば、あっさりできてしまいました。Arduinoで赤外線リモコン、というのは実に多くの方々が既に取り組んでおられるので、誰かの取り組みを真似するだけで、それなりのものはできます。

自分の場合は、以下の方のソースほぼそのままでできました。

Arduinoでリモコン作成

Arduino Fioはソフト書き込みのときにXBeeを外さなくてはいけなかったり(ZB版のXBeeを購入したので、無線書き込みは不可)、ハード的な性能は決して高くないということもあるので、テスト段階ではArduino Megaを利用しました。まずはArduino Megaに上記サイトのリモコン信号用ソースを書き込んで信号を取得、メモ。次に、同サイトのリモコン信号送信用ソースに、先ほどメモした信号をコピペして、各機器が制御可能かどうかをテスト。

th_ir_arudino_mega

使用している赤外線LEDはOSI5LA5113A、赤外線受信モジュールはOSRB38C9AAです。

過去に別のやり方でトライしたときには、照明と扇風機は制御できるがエアコンは制御できないという状況になってしまい、悩んだ末に放置という結果になりました。あれから引っ越しをしまして、今回改めて作り直し、別のエアコンでトライしてみたところ、あっさり動いてしまいました。以下、動作確認した機器のリストです。

<動いたもの>

  • エアコン(東芝製/パナソニック製/日立製)
  • 照明(パナソニック製/シャープ製)
  • テレビ(パナソニック製)

<動かなかったもの>

  • エアコン(三菱製)
  • レコーダー(パナソニック製)

今回試したテストコードでは、赤外線のフォーマット(NECフォーマット云々)等まで踏み込んだ解析はしていないので、動かない機器もそれなりに出てくるかと思いきや、意外なほどに多くの機器が制御できてしまいました。なので、一旦はこれで良しとします。

あとは、ソースをArduino Fioに載せてテスト。とりあえず、エアコン(東芝製)と照明(パナソニック製)が動くことは確認しましたが、やたらめったら信号が長かったエアコン(日立製)とかは、ひょっとしたらFioでは動かないかもしれません。未確認です。

th_ir_arduino_fio

Router設定にしたXBee(ZB)を繋いでおり、Coordinator設定をしてPCに繋いだXBee(ZB)から”1″や”2″の文字を送ることで、異なる赤外線信号を発射できるようにしています。XBeeの設定方法はこちらを参考にさせていただきました。リンク先には「XBee設定ソフトX-CTUはMac版はないよ」と書かれていますが、2014/2/9時点では存在しているので、そちらを使って設定しました。大筋書かれているとおりの設定で動きますが、赤外線制御のソースでシリアル通信のボーレートを57600bpsにしていたので、一応それに合わせてXBeeのボーレートも9600bpsから57600bpsに変更しました。PCから信号を送りたいときは、X-CTUのGUIから送ることもできるかもしれませんが、自分はArduino IDEのシリアルポートを”/dev/cu.usbserial-XXXX”にして(←Mac版の場合)からシリアルモニタを開いて、ボーレートを57600bpsに設定することで、Fioに繋いだXBeeに文字を送ることができました。なお、XBeeのPC接続にはスイッチサイエンスのXBee USB アダプター(リセットスイッチ付き)を使用しています。

さて、「基本的な機能に限定で、多くを望まないレベル」のものはこれで完成ですが、正直に言いますと、あまり実用的なものにはなっていません。一番の問題は、赤外線LEDの指向性です。トランジスタをかますことで、赤外線LEDには130mAぐらい流すようにしてるので(*通常のArduino FioのピンのMax電流は40mAですが、3.3VピンからはMax150mA程度まで流せます。こちらを参照)、2mぐらいは信号が飛んでるみたいですが、向きの合わせ方がかなりシビアです。iRemoconと比べると、相当に使い勝手が悪いです。このへんの問題を解決してる記事があまりなくて、ちょっとどう対応するか、目処が立っていません。別の方向を向いた赤外線LEDを複数くっつける、というのが一番わかりやすい解決法かもしれません。

あと、バッテリ駆動にするなら、XBeeのFio側がRouter設定になっているのを、EndDevice設定にして、きちんとSleep設定しないとダメですね。このへんとかこのへんを参考に、ちょっと勉強する必要がありそうです。

余談ですが、色々調べているうちに、IRKitなるものを見つけました。iRemoconは高過ぎるので正直ちょっと買いにくいのですが、これは欲しいです。10,000円以下で買えますし、小型だし、拡張性も高そうです。でもAmazonでは入荷の目処なし、とのこと。うーん、どうすれば手に入るだろう。