読者です 読者をやめる 読者になる 読者になる

Raspberry Pi"を"リモコン制御する

以前MicrosoftのIRリモコンを入手した。しかし使う機会がなく放置していた。

今回、思い付きでRaspberry Piにつなぎ、リモコン制御してみようかと考えた。とりあえず、リモコンでシャットダウンできるところまで行ったので、以下その手順。

用意するもの

手順

準備

リモコンの受光部のUSBケーブルをRaspberry Piにつなぐ

インストール

下記コマンドを実行し、Linuxの(赤外線)リモコンソフトであるiircをインストールする。

$ sudo apt-get install lirc lirc-x

 インストール途中で、リモコンの種類を聞かれる。最初(リモコンの種類の設定)は、"Windows Media Center…"を選択し、次(送信の設定)は"None"にする。

確認

リモコンから出た信号を受信できているか確認する。

$ irw

000000037ff07bf2 00 KEY_HOME mceusb
000000037ff07bf2 01 KEY_HOME mceusb
000000037ff07bf2 02 KEY_HOME mceusb

 これはリモコンのスタートボタンを押したときの反応。そのほかのボタンも押してみて、リモコンの信号が届いているか確認する。

ボタン動作設定

リモコンのボタンを押したときの動作を設定する。homeディレクトリに.lircrcなる設定ファイルを作る。

とりあえず、リモコンの電源ボタンでシャットダウンさせたいので、以下の通りに書いた。

begin
        remote = mceusb
        button = KEY_POWER
        prog = irexec
        config = shutdown -h now
end

  • remote…リモコンの種類。ここでは、"mceusb"で固定。
  • button…リモコンのボタン名。ここでは、ボタン名は前述のirwコマンドで確認できる(KEYで始まる文字列がボタン名である)。
  • prog…ボタン押下で起動するプログラム。ここでは、"irexec"で固定。
  • config…ここでは、ボタン押下で実行するコマンド。

他のボタンを登録したい場合は、同じようにbeginからendまでの設定を追記しよう。

動作テスト

テストに先立ち、サービスを再起動し、上記の設定を有効にする。

$ sudo service lirc restart

irexecを起動する。

$ irexec

上記の設定ファイル通りの動作になるか確認する。

irexecを常時起動させる

端末から毎回irexecを起動するのは面倒である。起動時にirexecをバックグラウンドで起動するように設定しよう。

従来、起動時にプログラムを起動させる場合、rc.localに追記するのが普通だった。今回もrc.localへ追記する方法を試してみたが、うまくいかない。調べたところ、違うやり方があるらしい。

/etc/profile.dにirexec.shという名のスクリプトを作る。

$ cd /etc/profile.d/

$ sudo nano irexec.sh

スクリプトの内容は以下の通り。

#!/bin/sh

irexec -d

作った後で、このスクリプトに実行権限を与える。

$ chmod 755 irexec.sh

 再起動して、リモコンが動作するか確認する。

おわりに

その他いろいろできそうだが、とりあえず、シャットダウンさせることはできたので、今回はここまでにする。

参考

第214回 春休み特別企画・赤外線リモコンを使う,あるいは「Ubuntu魔法使い」になる方法:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社