概要
LIRCを使って赤外線の送受信を行うRPiTPH Monitor及びRPZ-IR-Sensor用の応用例です。 GPIOを直接制御することでも赤外線送受信は可能ですが、 他のタスクが入るとタイミングがずれてうまくいかないケースがあります。LIRCを使うことで安定した通信が可能になります。 CPUリソースが限られているRaspberry Pi ZeroではLIRCを使うことを推奨しております。
本ページは2017年8月にリリースされたRaspbian Stretch用の設定方法です。 最新バージョンであるBusterをお使いの場合は設定方法が異なりますので、 Buster設定方法をご覧ください。Stretchをインストール後、apt-get upgradeなどでKernelが4.19に更新されると動作しなくなることを確認しております。Kernelは更新しないようにしてください。
設定方法はKernelとLIRCバージョンによって異なることがあります。 本ページの方法で動作確認済みのOSとLIRCバージョンの一覧は以下の通りです。 Kernelバージョンはapt-get upgradeで更新されることがあります。更新したくない場合は raspberrypi-bootloaderおよびraspberrypi-kernelパッケージのバージョンを固定することをおすすめします。
OS | Kernelバージョン | LIRCバージョン | 動作確認 |
---|---|---|---|
Raspbian Stretch 2017-09-07 | 4.9 | 0.9.4 | 確認済 |
Raspbian Stretch 2018-11-13 | 4.14 | 0.9.4 | 確認済 |
Raspbian Stretch 2019-04-08 | 4.14 | 0.9.4 | 確認済 |
LIRCのインストール
以下のコマンドでlircをインストールしてください。
sudo apt-get install lirc
LIRCの設定
/boot/config.txtをスーパーユーザーで開き、lirc-rpiに関する設定を以下のように編集してください。
# Uncomment this to enable the lirc-rpi module
dtoverlay=lirc-rpi
dtparam=gpio_out_pin=13
dtparam=gpio_in_pin=4
/etc/lirc/lirc_options.confをスーパーユーザーで開き、一部設定を以下のように編集してください。
driver = default
device = "/dev/lirc0"
設定が終了したら再起動して、以下を実行してlircdを一度終了してください。
sudo service lircd stop
赤外線受信
以下のコマンドを実行した後、基板の赤外線受信ユニットに向けて、お使いのリモコンから赤外線を送信してください。 送信が終わったらCtrl+Cで取り込みを終了します。
mode2 -d /dev/lirc0 > rec.txt
受信に成功すると、赤外線情報がrec.txtに記録されます。
space 1141941
pulse 3506
space 1700
pulse 466
space 401
pulse 467
space 1269
...
赤外線送信
先ほど記録したデータを赤外線送信データとして登録します。 /etc/lirc/lircd.conf.dディレクトリに好きな名前でconfファイルを作成します。(今回はaircond.confとします) さらに、confファイルを以下のように編集してください。nameの行は好きな名前を付けられます。 今回はエアコンのオフボタンの例としてname aircond, name offとしました。 begin raw_codesのname offに続く行は赤外線データを示しています。 rec.txtに記録されたデータのうち、先頭のspaceを抜いたpulseから始まる数値をスペースで区切って入力していきます。 1行のデータが非常に多い場合エラーとなる事があります。適宜改行を入れてください。
begin remote
name aircond
flags RAW_CODES
eps 30
aeps 100
gap 200000
toggle_bit_mask 0x0
begin raw_codes
name off
3506 1700 466 401 467 1269 ...
end raw_codes
end remote
送信準備として以下を実行します。
sudo service lircd stop
sudo service lircd start
登録した赤外線データを送信するには以下のコマンドを実行します。正常に送信されればお使いの機器が反応します。また、赤外線送信中を示す赤色LEDが一瞬点灯します。
irsend SEND_ONCE aircond off
関連記事
RPZ-IR-Sensor (Raspberry Pi用 温度/湿度/気圧/明るさ/赤外線 ホームIoT拡張ボード)
動作をプログラミング可能な、Raspberry Pi/Zero(ラズパイ)用ホームIoT拡張ボードです。温度、湿度、気圧、明るさセンサー、赤外線送受信機能を搭載。温度が上がったらエアコンをオンにする、暗くなったら照明を点灯する、外出先から家電の操作をする、気温や日照時間を記録する、といった使い方が可能です。LEDにステータスを表示したり、スイッチを押したら特定の処理をすることもできます。
RPi TPH Monitor Rev2 (Raspberry Pi用 温度/湿度/気圧/赤外線 ホームIoT拡張ボード)
動作をプログラミング可能な、Raspberry Pi(ラズパイ)用ホームIoT拡張ボードです。温度、湿度、気圧センサー、赤外線送信、受信機能を搭載。温度が上がったらエアコンをオンにする、外出先から家電の操作をする、気温や湿度を記録する、といった使い方が可能です。ディスプレイやLEDに情報表示、スイッチを押したら特定の処理をすることもできます。