这篇将介绍怎么来利用红外遥控器操作树莓派 需要准备一个红外接收器,淘宝上搜索:HS0038B 接收器连接: data:GPIO1 (18) gnd:gnd vcc:3.3v 顺便说下发射器的连接: data:GPIO0 (17) gnd:gnd vcc:5v 发送命令举例(与本文无关):
irsend SEND_ONCE tv KEY_1
irsend SEND_ONCE tv KEY_POWER
<strong>安装并调试:</strong>
#安装lirc
sudo apt-get install lirc
#完成后,开机会自动启动该服务,如果想关闭开机启动
禁用: sudo update-rc.d lirc remove
启用: sudo update-rc.d lirc defaults
#绑定模块并校验
sudo modprobe lirc_rpi
dmesg | grep -i lirc
#测试,随便按遥控器,如果出现一堆的pluse和space,表示工作正常
mode2 -d /dev/lirc0
配置一下/etc/hardware.conf
#其余的不用配置
LIRCD_ARGS="--uinput"
DRIVER="default"
DEVICE="/dev/lirc0"
<strong>录制按键:</strong>
#用 irrecord --list-namespace 查看可以使用的key列表,录制前需要关闭sudo /etc/init.d/lirc stop
#开始录制,开始后需要随便按键通过2*80的调试,随后输入key(必须在irrecord --list-namespace 列表中)
irrecord -n -d /dev/lirc0 ~/lircd.conf
#修改 conf中的name为 tv (也可以是别的名称)
sudo mv ~/lircd.conf /etc/lirc/lircd.conf
<strong>我的lircd.conf:</strong>
# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
#
# this config file was automatically generated
# using lirc-0.9.0-pre1(default) on Fri Feb 7 14:20:44 2014
#
# contributed by
#
# brand: /home/pi/lircd.conf
# model no. of remote control:
# devices being controlled by this remote:
#
begin remote
name tv
bits 16
flags SPACE_ENC|CONST_LENGTH
eps 30
aeps 100
header 9011 4499
one 566 1673
zero 566 556
ptrail 564
pre_data_bits 16
pre_data 0x32A6
gap 107974
toggle_bit_mask 0x0
begin codes
KEY_1 0x807F
KEY_2 0x40BF
KEY_3 0xC03F
end codes
end remote
<strong>启动并调试:</strong>
sudo /etc/init.d/lirc start
#使用irw命令测试
#我的测试结果:
0000000032a6807f 00 KEY_1 tv
0000000032a640bf 00 KEY_2 tv
0000000032a6c03f 00 KEY_3 tv
到这里,红外接收已经能正常工作了.
那怎么样才能利用红外执行命令呢?
lircrc该出场了.
<strong>执行系统命令:</strong>
在home目录添加一个.lircrc (这个是个人的)
或者在/etc/lirc/目录下增加一个lircrc(文件前面没有点,这个是全局的)
lircrc内容:
#config的也可以是多个用逗号分隔
begin
prog = irexec
button = KEY_1
config = echo "hello lirc one!"
end
begin
prog = irexec
button = KEY_2
config = echo "hello lirc two!"
end
配置完成后重启lirc:sudo /etc/init.d/lirc restart,并且启动irexec.(irexec是lirc附带的一个工具),看看效果.
<strong>和python结合:</strong>
#安装pylirc库
apt-get install python-pylirc
修改lircrc文件
#prog 随便起一个名字,后面会用到
begin
prog = myapp
button = KEY_1
config = hello
end
begin
prog = myapp
button = KEY_2
config = hello,world
end
测试python
[code lang="python"]
import pylirc
#初始化,这个的myapp需要和lircrc中的prog的名称一致
pylirc.init("myapp", "/etc/lirc/lircrc", 1)
#设置成阻塞模式
pylirc.blocking(1)
#按下按键就能看到对应的config值,如果没有匹配的key则显示为None
print pylirc.nextcode()
至此,就介绍完了红外控制树莓派的方法.就等你发挥你的想象力,be fun!