めも

技術ブログと言い張るのはおこがましいただのめもです。RaspberryPiで遊んだり、Web系の勉強したりしています。ガジェット好きちゃん。

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進数で書いている人もいるので、読み込み上の問題なら書き直せば成功するかも?