900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 嵌入式Linux红外遥控 树莓派红外遥控 (lirc gpio-ir)—— 一篇就够了!

嵌入式Linux红外遥控 树莓派红外遥控 (lirc gpio-ir)—— 一篇就够了!

时间:2019-08-22 08:52:22

相关推荐

嵌入式Linux红外遥控 树莓派红外遥控 (lirc gpio-ir)—— 一篇就够了!

超简单!树莓派红外遥控配置

前言

第一步:驱动配置(/boot/config.txt)

第二步:安装lirc,并配置

第三步:测试

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

第五步:测试

第六步:使用

配置(~/.lircrc)

写在最后

前言

网上很多关于树莓派红外配置的教程,但都讲的很不清晰,也有很多是上个世纪的老古董了,本篇是综合众多教程并结合本人树莓派系统(-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命令可以配置你的按键,但是准确度极低,这里我仅用它输出配置格式而已

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. 回车开始录入

# 之后录入随意,我们只是为了获取配置文件格式,官方要求是按不同的遥控器键,至少出现1个点,但不超过10个点,直到出现提示

# 接下来会让输入键名,然后按住该键,这里建议用 KEY_1、KEY_2 类似的名字,这样不会报错,他默认是对键名格式有要求的,忽略则可以在 irrecord 命令后加 --disable-spacename

# 录入一两个键就可以了,回车结束,我们只为了获得配置文件格式

# 回车后可能在当前目录直接生成 mini_con.lirc.conf 文件,也可能会让按一个键再结束(注意!是按一个键,快按,不是按住不动!)

# 复制模板到 /etc/lirc/lircd.conf

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

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

# 前边是一大片注释

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

...

第五步:测试

可以测试按键配置了!

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,或者控制一个硬件开关等等…

写在最后

欢迎留言、私信、讨论;

文章有知识性错误请立马联系博主,博主将非常感谢;

无需经过允许即可随意使用转载,知识本来就是被广泛用来学习的;

非常感谢您能看到此处,本文为博主学习笔记,如有不同见解,请不吝赐教。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。