Raspbian BusterでLirc(gpio-ir)を試す(送信編)
前回の続き。
dive2blue.hatenablog.com
赤外線送信のコマンドを学習させ、送信する。
設定
lirc_options.confは受信用にしておく。
pi@raspberrypi:~ $ sudo vi /etc/lirc/lirc_options.conf driver = default # 送信なら # device = /dev/lirc0 # 受信なら device = /dev/lirc1
config.txtは接続したGPIOのピン番号を指定しておく。
pi@raspberrypi:~ $ sudo vi /boot/config.txt # 接続した番号追記する dtoverlay=gpio-ir,gpio_pin=16 dtoverlay=gpio-ir-tx,gpio_pin=5
学習用のコマンド
以下のコマンドで学習できる。
pi@raspberrypi:~ $ irrecord -n -d /dev/lirc1
ダイアログに従い、リモコンのボタンを押すだけ。
指示自体は難しくないが、いろんなボタンを何回も押す必要があり時間がかかる。しかも、私の場合うまくいかなかかった。
rawからコマンド作成
上記の方法でうまくできないのでmode2でRawの信号から設定ファイルを作る。
私の場合、エアコンを操作したいのでonとoffを収集。
pi@raspberrypi:~ $ sudo mode2 -d /dev/lirc1 Using driver default on device /dev/lirc1 Trying device: /dev/lirc1 Using device: /dev/lirc1 Running as regular user pi space 16777215 pulse 3485 # ここから下を使う。 space 1712 pulse 446
ファイルの整形はこの辺を参考に。書くのがめんどくなった
https://qiita.com/KAKY/items/55e6c54fa2073cdc0bbe
http://wbbwbb.blog83.fc2.com/blog-entry-159.html
わからないパラメータは記載しなくてもたぶん大丈夫
作ったファイルはこんな感じ
#aircon.lircd.conf begin remote name aircon bits 0 eps 0 aeps 0 one 0 0 zero 0 0 gap 50000 toggle_bit_mask 0x0 frequency 38000 begin raw_codes name off 3486 1717 445 441 422 1311 417 416 447 447 416 409 452 406 445 415 448 439 …(略) 421 439 424 436 417 442 420 440 423 1310 418 1328 418 1311 415 1316 423 1315 416 name on 3495 1723 439 442 419 1315 421 438 424 436 425 435 416 443 418 441 421 439 …(略) 400 443 419 441 419 1312 422 1283 453 435 416 443 418 441 421 439 430 442 425 end raw_codes end remote
作ったファイルを移動。
pi@raspberrypi:~ $ cp aircon.lircd.conf /etc/lirc/lircd.conf.d/
送信
lirc_options.confは送信用にしておく。
pi@raspberrypi:~ $ sudo vi /etc/lirc/lirc_options.conf driver = default # 送信なら device = /dev/lirc0 # 受信なら # device = /dev/lirc1
lircdのサービスを再起動。設定ファイルがあっていれば、Listコマンドで表示される。
pi@raspberrypi:~ $ sudo systemctl restart lircd.service pi@raspberrypi:~ $ insend LIST "" "" aircon pi@raspberrypi:~ $ insend LIST aircon "" 0000000000000001 off 0000000000000002 on
以下のコマンドで送信。
pi@raspberrypi:~ $ sudo irsend SEND_ONCE aircon on
スマホのカメラ越しに見ると光っているのが見える。
エラー
insend LIST "" ""で設定が表示されない
xxx.lircd.confのパルス数が偶数だったりいらないものが含まれている
hardware does not support sending
pi@raspberrypi:~ $ sudo irsend SEND_ONCE aircon on hardware does not support sending Error running command: Input/output error
lirc_options.confのdeviceがlirc1になっている。送信するときはlirc0である必要がある。
pi@raspberrypi:~ $ sudo vi /etc/lirc/lirc_options.conf driver = default # 送信なら device = /dev/lirc0 # 受信なら # device = /dev/lirc1
transmission failed
pi@raspberrypi:~ $ sudo irsend SEND_ONCE aircon on transmission failed Error running command: Input/output error
xxx.lircd.confのパルス部分が255個以上ある。現時点ではどうも255に収める必要があるみたい。
赤外線を光らせるとこまではたどりついたけど、うちのエアコンは255にパルス数が収まらず、動かないんだけど…
パルスを16進数で書いている人もいるので、読み込み上の問題なら書き直せば成功するかも?