Raspberry Pi Zero W で赤外線リモコン irsimsend コマンド [Raspberry Pi]
今日はダウンロードしたリモコン情報ファイルを使って, raspberry pi 接続の赤外線LEDからリモコン発信ができるようになった。
ただし,その発信を手持ちの学習リモコンで学習して,学習リモコンからCDプレーヤーに発信しても無反応だった。
それで赤外線LEDの出力を強めたりもしたが,なぜか学習リモコンでは成功しなかった。
lirc の irsimsend コマンドで,ダウンロードしたlircd.conf ファイルからリモコンデータをファイル出力できる。
VQ95010.lircd.conf のダウンロード
https://sourceforge.net/p/lirc-remotes/code/ci/master/tree/remotes/yamaha/
VQ95010はヤマハのリモコンの型番。CDX-10も操作できるらしい。
irsimsend コマンドでVQ95010のKEY_OPEN(CDトレイOPEN/CLOSE)のリモコンデータをファイル出力する。
root@raspberrypi:/home/pi# irsimsend -k KEY_OPEN VQ95010.lircd.conf
KEY_OPEN
root@raspberrypi:/home/pi# cat simsend.out
pulse 8800
space 4400
pulse 550
space 1650
pulse 550
space 550
pulse 550
space 550
:
:
エディターで,simsend.out ファイルの数字の部分を取り出して irrp.py が入力できるJSONフォーマットに加工した。
{"yamaha:keyopen": [8800, 4400, 550, 1650, 550, 550, 550, 550, 550, 1650, 550, 1650, 550, 1650, 550, 1650, 550, 550, 550, 550, 550, 1650, 550, 1650, 550, 550, 550, 550, 550, 550, 550, 550, 550, 1650, 550, 1650, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, 1650, 550, 1650, 550, 1650, 550, 1650, 550, 1650, 550, 1650, 550, 1650, 550, 38500]}
この内容をyamaha.dat ファイルに保存した。
pigpiod を起動して,irrp.py で赤外線を発信するとCDトレイが開いた。
root@raspberrypi:/home/pi# systemctl start pigpiod
root@raspberrypi:/home/pi# python3 irrp.py -p -g17 -f yamaha.dat yamaha:keyopen
このraspberry pi は,前の記事のとおり,lirc と pigpio をインストールしていた。
赤外線送受信プログラムirrp.py も作者のサイトからダウロードした。
昨日の記事:Raspberry Pi Zero W で赤外線リモコンの作り方
CDトレイが開くので赤外線は発信されている。その信号を学習機能付きリモコンで学習できない。
Raspberry Pi Zero W で赤外線リモコンの作り方 [Raspberry Pi]
Raspberry Pi Zero Wをamazonで購入した安価なケースに入れて,赤外線リモコンの学習を試してみた。
YAMAHA CDX-10というCDプレーヤーを使っているが,ずいぶん前にそれ用のリモコン(VS34830)を処分していた。
調べたらYAMAHA VQ95010リモコンが代用できるようであり,VQ95010の lirc.conf ファイルなら以下からダウンロードできたので,このファイルからCDプレーヤーにリモコン信号を送ってみたいと考えた。
https://sourceforge.net/p/lirc-remotes/code/ci/master/tree/remotes/yamaha/
そのためLircで試してみたが,結果は,CDプレーヤーは全く反応しなかった。
一方,pigpioを試したところ他のCDプレーヤーやエアコン等のリモコンは学習と発信ができた。
試したことは以下のとおり。Lircの使い方がわからないので,ご覧いただいた方々に助けていただきたい。
赤外線受光モジュール GP1UX511QS
赤外線LED LSIR053
OSのraspbianは現時点(2019年8月)で最新。
pigpio と lirc をインストールする。lirc はOSバージョンによって設定が異なるようだ。
pigpio のインストール
apt install pigpio python3-pigpio
systemctl start pigpiod
GPIO17をoutput,low GPIO18をinput,pull upに設定
echo 'm 17 w w 17 0 m 18 r pud 18 u' > /dev/pigpio
赤外線を受送信するためのプログラムirrp.py.zip をダウンロード
wget http://abyz.me.uk/rpi/pigpio/code/irrp_py.zip
unzip iirp_py.zip
赤外線受光モジュールでリモコンからの信号を学習する。
python3 irrp.py -r -g18 -f yamaha.dat cd:play --no-confirm --post 130
Recording
Press key for 'cd:play' <----リモコンのPlayボタンを押す。
Okay
学習した信号の内容 (JSON)
cat yamaha.dat
{"cd:play": [9052, 4485, 621, 561, 621, 1613, 621, 561, 621, 1613, 621, 1613, 621, 1613, 621, 1613, 621, 561, 621, 1613, 621, 561, 621, 1613, 621, 561, 621, 468, 621, 468, 621, 561, 621, 1613, 621, 561, 621, 468, 621, 468, 621, 1613, 621, 468, 621, 561, 621, 468, 621, 468, 621, 1613, 621, 1613, 621, 1613, 621, 561, 621, 1613, 621, 1613, 621, 1613, 621, 1613, 621, 39910, 9052, 2189, 621, 96124, 9052, 2189, 621, 96124, 9052, 2189, 621]}
同様にいくつかのボタンを学習する。
python3 irrp.py -r -g18 -f yamaha.dat cd:stop --no-confirm --post 130
赤外線LEDから学習した信号を発信する。
python3 irrp.py -p -g17 -f yamaha.dat cd:play
python3 irrp.py -p -g17 -f yamaha.dat cd:stop
赤外線の受送信で動作は確認できた。
Lirc のインストール
apt install lirc
config.txt に以下の2行を追加する。
/boot/config.txt
dtoverlay=gpio-ir,gpio_pin=18
dtoverlay=gpio-ir-tx,gpio_pin=17
lirc_options.confのdriver及びdevice を書き換える。
/etc/lirc/lirc_options.conf
[lircd]
nodaemon = False
driver = default
device = /dev/lirc0
pigpiod は止めておく。
systemctl stop pigpiod
lircd を上記のとおりダウンロードしておいたVQ95010.lircd.conf で起動する。
lircd --driver=default --device=/dev/lirc0 VQ95010.lircd.conf
irsend コマンドで赤外線LEDから発信する。
irsend SEND_ONCE VQ95010 KEY_OPEN
赤外線は発信されているが,CDプレーヤーは無反応。 追記)irsimsendコマンドで出力したVQ95010のリモコンデータをJSONフォーマットに加工して,irrp.py -p での発信でCDプレーヤーが反応した。
VQ95010.lircd.confはこんな内容(抜粋)
# yamaha vq95010 cd player
:
begin remote
name VQ95010
bits 32
:
frequency 38000
begin codes
KEY_OPEN 0x000000009E61807F # Was: OPEN/CLOSE
PROG 0x000000009E6130CF
KEY_TAPE 0x000000009E61EA15 # Was: TAPE
:
以上だが,raspberry で,手元にないYAMAHA CDX-10のリモコンの再現はできなかった。
Raspberry Pi Zero W USB ケーブル直結で USB シリアルコンソールでのセットアップ [Raspberry Pi]
Raspberry Pi Zero W にディスプレイ,キーボード,マウスを接続しない(ヘッドレス)で,USBケーブル1本で接続して USB シリアルコンソールでセットアップ。
ラズパイはこのブログで2011年に書いていた。
https://royalwin.blog.so-net.ne.jp/2011-05-08
このチュートリアルページを参照した(以下内容は同じです)。
https://www.tal.org/tutorials/raspberry-pi-zero-usb-serial-console
セットアップは,サイトからOSをダウンロードしてmicroSDカードに予め書き込みする。SDカード書き込みは,etcherというソフトでWindowsで行った。
https://www.raspberrypi.org/downloads/raspbian/
https://www.balena.io/etcher/
次にLinuxパソコンを使って,作成したSDカードをマウントしてセットアップを行う。SDカードの中にシンボリックリンクを作成しなければならないので,Linuxで行った。
BOOT/config.txt の最後に1行追加して,dwc2 USB controller driverが起動するようにする。
dtoverlay=dwc2
BOOT/cmdline.txtのカーネル起動パラメーターに赤字のとおり,modules-load=dwc2,g_serial を追加する。
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=c6dff9c9-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait modules-load=dwc2,g_serial quiet splash plymouth.ignore-serial-consoles
ttyGS0を有効にするためにROOT/etc/systemd/system/getty.target.wants ディレクトリに移動して、シンボリックリンクを作成する。
cd /etc/systemd/system/getty.target.wants
ln -s /lib/systemd/system/getty@.service getty@ttyGS0.service
セットアップが済んだ SD カードをRaspberry Pi Zero Wに装着して,パソコンとUSBケーブルで接続するとRaspberry Pi Zero Wが通電し,OSが起動する。
teraterm にシリアルポートが表示されるので,ボーレート 115200, 8, no,1,no で接続するとログインプロンプトが(いきなり)表示された。ブートメッセージは表示されない。
ログインは pi /raspberry
raspi-config で無線LAN接続の設定ができる。
pi@raspberrypi:~$ sudo -s
root@raspberrypi:/home/pi# raspi-config
SSID,パスフレーズを入力して,無線ルータに接続した。