树莓派红外遥控 (lirc、gpio

您所在的位置:网站首页 树莓派初始化gpio 树莓派红外遥控 (lirc、gpio

树莓派红外遥控 (lirc、gpio

2023-07-21 19:30| 来源: 网络整理| 查看: 265

超简单!树莓派红外遥控配置 前言第一步:驱动配置(/boot/config.txt)第二步:安装lirc,并配置第三步:测试第四步:按键配置(/etc/lirc/lircd.conf)第五步:测试第六步:使用配置(~/.lircrc) 写在最后

前言 网上很多关于树莓派红外配置的教程,但都讲的很不清晰,也有很多是上个世纪的老古董了,本篇是综合众多教程并结合本人树莓派系统(2020-05-27 Raspberry Pi OS (32-bit) Lite)写的。在很多重要配置处下方,会对比其他教程。本配置是基于 4.19.x 及更高内核的,你并不需要降低你的系统内核,如果你是4.19.x以下的内核,那么网上有很多教程。本教程仅配置红外接收。 第一步:驱动配置(/boot/config.txt) # dtoverlay=gpio-ir,gpio_pin=17 # dtoverlay=gpio-ir-tx,gpio_pin=18

前边注释 ‘#’ 去掉(两行都去掉),这两行在 /boot/config.txt文件默认是有的 17对应GPIO17(红外接收),18对应GPIO18(红外发射) 这里需要重启一次树莓派

对比:

其他教程有说配置/etc/modules文件的,这里并不需要! 有说modprobe加载lirc-rpi的,这里并不需要!4.19.x 及更高内核并没有该驱动啦! 还有在/boot/config.txt配置 dtoverlay=lirc-rpi 的,这是4.19.x之前的配置方式!

第二步:安装lirc,并配置 sudo apt-get install lirc

这里跟其他教程一样,需要安装lirc软件包

/etc/lirc/lirc_options.conf 配置

driver = default device = /dev/lirc1

修改这两处即可! ls /dev 你会看到 lirc0、lirc1其中一个或两个,至此驱动程序配置成功,就这么简单! 上文device,接收就跟接收的GPIO引脚对应的设备一样,如果之前配置跟我一样,这里就一样即可。

对比:

其他教程有修改 /etc/lirc/hardware.conf 文件的,这里不需要,那是之前的修改方式。

第三步:测试

到这里你可以测试接收了

mode2 -d /dev/lirc1

执行该命令后 按遥控器会有类似下面的输出:

pulse 629 space 518 pulse 627 space 523 pulse 628 space 523 pulse 631 space 517 pulse 629

红外接收正常!!!

第四步:按键配置(/etc/lirc/lircd.conf)

lirc软件包有一个irrecord命令可以配置你的按键,但是准确度极低,这里我仅用它输出配置格式而已

sudo irrecord -f -d /dev/lirc1 ... # 提示 Press RETURN to continue. 回车,之后等待,千万别按键 # 提示 Enter name of remote (only ascii, no spaces) : 输入配置文件的名字 (比如:mini_con) # 提示 Press RETURN now to start recording. 回车开始录入 # 之后录入随意(可以一直按住一个键,如果点出现的慢,很可能是没有在命令前加 sudo),我们只是为了获取配置文件格式,官方要求是按不同的遥控器键,至少出现1个点,但不超过10个点,直到出现提示 # 接下来会让输入键名,然后按住该键,这里建议用 KEY_1、KEY_2 类似的名字(具体看下文附1),这样不会报错,他默认是对键名格式有要求的,忽略则可以在 irrecord 命令后加 --disable-spacename # 录入一两个键就可以了,回车结束,我们只为了获得配置文件格式 # 回车后可能在当前目录直接生成 mini_con.lirc.conf 文件,也可能会让按一个键再结束(注意!是按一个键,快按,不是按住不动!) # 复制模板到 /etc/lirc/lircd.conf

这里强烈建议加 -f 参数,没有该参数输出的配置文件都有问题,看运气 一定要加 sudo

附1 irrecord -l # 会列出允许的键名,从中选取即可 # 提示 irrecord -l | grep MENU 可以看到含有 MENU 关键字的合法键名

配置文件格式就得到了!类似下面这种格式:

# 前边是一大片注释 begin remote name mini_con flags RAW_CODES|CONST_LENGTH eps 30 aeps 100 gap 108106 begin raw_codes name KEY_1 9100 4521 628 name KEY_2 9820 4520 556 end raw_codes end remote

该文件对格式,空格有严格要求!!!!!

接下来开始录入信号

mode2 -m -d /dev/lirc1 # 开始录入,配置 /etc/lirc/lircd.conf 文件 # 按要配置的键(比如 1 ),会有类似输出 620000 9170 4441 640 552 604 554 609 552 635 528 612 551 601 556 634 528 609 553 614 1629 610 1632 635 1615 627 1619 596 1602 639 1629 611 1618 616 1605 633 1607 638 552 610 1604 633 1615 596 562 621 541 594 567 595 564 568 594 593 1649 566 598 568 601 591 1678 516 1697 556 1692 547 1683 546 132000

加-m参数是为了获得raw格式的输出,而不是前文space pulse格式输出 620000 并不是真的620000 ,反正会有一个很大的数(相比于9170) 132000 也不是真的 132000,也会有一个很大的数(相比于9170) 复制 两个大数之间的内容,复制到lircd.conf文件中 name KEY_X 下,第一个数要与原数位置对应,前文说过,这里有严格的空格要求,他这里每个字段都是右对齐的 切记!lircd.conf 文件中不要两个大数,亲测保留会报错的!!! 建议每个key配置后留一空行

name KEY_1 xxxx xxxx xxx ... # 空行 name KEY_2 xxxx xxxx xxxx ... 第五步:测试

可以测试按键配置了!

sudo service lircd restart # 重启服务(必须!!!!) irw

按键,看是否跟配置的键名一样 类似如下输出:

xxxxxxxxx 0xXX KEY_1 mini_con

到此所有配置就结束了!!!

第六步:使用

本人使用的是 lirc 软件包中的 irexec

配置(~/.lircrc)

配置格式如下:

begin prog = irexec button = KEY_1 config = python3 /root/pydata/lirc_commond/list_root.py && bash /root/pydata/lirc_commond/end.sh end begin prog = irexec button = KEY_2 config = echo "This key is not set." end

是不是 very nice

配置文件一定要在执行 irexec 命令的用户家目录,文件名为 .lircrc 在这里你就可以开始你的想象了 ^_^ ps:一键开启smb,一键apache2、httpd,或者控制一个硬件开关等等…

写在最后

欢迎留言、私信、讨论; 文章有知识性错误请立马联系博主,博主将非常感谢; 无需经过允许即可随意使用转载,知识本来就是被广泛用来学习的; 非常感谢您能看到此处,本文为博主学习笔记,如有不同见解,请不吝赐教。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3