一、基础配置:
先将红外接收头连接和录制遥控器按键,确保能够正常使用。
1.修改配置
sudo nano /boot/config.txt
添加:
dtoverlay=lirc-rpi,gpio_out_pin=17,gpio_in_pin=18,gpio_in_pull=up
重启后查看/dev/lirc0是否存在
2.连接红外接收头: 注意是gpio18是第12针
3.安装软件:
sudo apt-get install lirc
注意:内核版本4.14和4.19的lirc好像还不同。
4.测试红外遥控器
sudo /etc/init.d/lirc stop
mode2 -d /dev/lirc0
5.录制遥控器
sudo /etc/init.d/lirc stop
irrecord -l #记录想要的key
irrecord -d /dev/lirc0 ~/lircd.conf #这步比较麻烦,刚开始要每个键都压一遍,生成2行,我搞了好几遍。
而且~/lircd.conf也没有生成,到时出现了,XXX.lircd.conf xxx就是输入的remote name
6.将XXX.lircd.conf文件复制到/etc/lirc/lircd.conf.d目录下
sudo cp ~/XXX.lircd.conf /etc/lirc/lircd.conf.d/
7.测试,输入irw:回显示输入的按键–对应刚才的录制
问题:没有任何反应。解决方法最下面:
二、按键行为与特定程序进行关联
1.配置~/.lircrc文件把按键与需要出发的行为进行关联
begin
prog = irexec
button = KEY_UP
config = sudo omxplayer ~/aiqingzhuanyi.mkv & #设置成自己的程序
end
begin
prog = irexec
button = KEY_DOWN
config = sudo killall omxplayer.bin
end
2.开启程序,等待按键触发
sudo /etc/init.d/lirc restart
irexec
3.当按up键时候打开程序,down键时候关闭
三、树莓派通过发送红外信号控制设备:
向aphero设备发送KEY_UP,没有发射头,没有测试
irsend LIST "" ""
irsend SEND_ONCE aphero KEY_UP
#没有测试
四.把红外遥控器模拟成鼠标模式
官方文档:http://lirc.org/html/configure.html#lircmd.conf
1.修改配置文件:
sudo nano /etc/lirc/lirc_options.conf
[lircmd]
uinput = True ##将False修改为True
根据官方文档:
lircmd - Translate infrared signals into mouse events.
output socket and converts them to mouse events. These events are made available either on the lircmd output socket (by default
/usr/var/run/lirc/lircmd) or, using the --uinput option, on a /dev/input device like /dev/input/event12 .
意思是:默认输出到socket,树莓派上可通过cat /var/run/lirc/lircm 按遥控器时候有乱码输出;添加–uinput选项后,作为/dev/input设备
根据官方文档还要设置Xorg.conf,树莓派没有这个文件,我没有设置;新建 /etc/udev/rules.d/55-uinput,删除好像也可以。
2.修改鼠标与前面设置的key建立映射
sudo nano /etc/lirc/lircmd.conf
PROTOCOL IntelliMouse
ACCELERATOR 1 30 10
MOVE_N * KEY_UP
MOVE_E * KEY_RIGHT
MOVE_S * KEY_DOWN
MOVE_W * KEY_LEFT
BUTTON1_CLICK * KEY_ENTER
BUTTON3_CLICK * KEY_BACK
BUTTON2_CLICK * KEY_MENU
#N E S W表示鼠标移动方向,1代表左键,2代表中间键,3代表右键
3.开启服务:
# systemd start lircmd.service
# systemd enable lircmd.service
四.把红外遥控器模拟成键盘模式:
1.测试:先用 lircd-uinput程序测试成功后,再设置为服务
sudo lircd-uinput
lircd-0.9.4c[21627]: Info: lircd-uinput: Opening log, level: Info
lircd-0.9.4c[21627]: Info: Reading data from /var/run/lirc/lircd, writing to /dev/uinput
lircd-0.9.4c[21627]: Info: Using "_UP" as release suffix
3.ir-keytable程序测试:目前输入太快了,延时、重复参数还没有搞清楚。
注意:ir-keytable只有产生了/dev/input/event*文件后,才有输出。使用apt-get安装即可,这个程序不在lirc包中,好像是v4l-utils中。
ir-keytable -t -d /dev/input/event0
1582638176.865978: event type EV_SYN(0x00).
1582638176.915959: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
1582638176.915959: event type EV_SYN(0x00).
1582638176.965979: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
1582638176.965979: event type EV_SYN(0x00).
1582638177.016006: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
1582638177.016006: event type EV_SYN(0x00).
1582638177.065964: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
1582638177.065964: event type EV_SYN(0x00).
(3)开启服务:
sudo systemctl start lircd-uinput
目前,只是进行了初步测试,还没有深入配置,主要是看官方文档,仅做已备忘记录,有时间再测试吧。
------关于输入irw:没有任何反应---------------------------------------------------------------------
树莓派安装红外接收,irw无输出:https://www.hachina.io/dwqa-question/10554.html
also, i have faced a problem where everything seemed to work fine, but i didn’t get any output running irw command. in case someone’s stuck there: the problem is lircd.conf file which you’ve just generated. take a look at it – you probably will get two hex codes for each button, where the second one is always the same. simply delete this value from each line and everything should work now.
另外,我也遇到过这样一个问题:一切看起来都很好,但是我没有得到任何运行irw命令的输出。万一有人被困在那里:问题是您刚刚生成的lircd.conf文件。看看它-你可能会得到两个十六进制代码为每个按钮,其中第二个总是相同的。只需从每一行中删除这个值,现在一切都应该正常了
XXX.lircd.conf文件如下:删除每行的第二个十六进制的数,就可以使用irw输出了
begin remote
name aphero
bits 32
flags SPACE_ENC|CONST_LENGTH
eps 30
aeps 100
header 9134 4555
one 565 1694
zero 565 579
ptrail 564
repeat 9130 2271
gap 108958
toggle_bit_mask 0x0
frequency 38000
begin codes
KEY_UP 0x00FF629D
KEY_DOWN 0x00FFA857
KEY_LEFT 0x00FF22DD
KEY_RIGHT 0x00FFC23D
KEY_ENTER 0x00FF02FD
KEY_BACK 0x00FFE01F
KEY_MENU 0x00FF906F
KEY_KP0 0x00FF6897
KEY_KP1 0x00FF30CF
KEY_KP2 0x00FF18E7
KEY_KP3 0x00FF7A85
KEY_KP4 0x00FF10EF
KEY_KP5 0x00FF38C7
KEY_KP6 0x00FF5AA5
KEY_KP7 0x00FF42BD
KEY_KP8 0x00FF4AB5
KEY_KP9 0x00FF52AD
end codes
end remote