需要的硬件:
连接红外接收管:
不同的红外接收管连线可能不太一样,需要参考相应的Datasheet。以TSOP 1238为例的话,当红外线接收窗朝向自己时,从左到右三个引脚分别为:
1. GND,接地,RPi PIN 6
2. VS,电源,接3.3V电源,RPi PIN 17
3. OUT,数据输出,接GPIO 24,RPi PIN 18
由于Raspberry Pi的GPIO只能接收3.3V的输入,所以红外接收管的电源务必要接3.3V的供电。我自己用的红外接收管的型号是TSOP 1838(引脚顺序是OUT, GND, VS),按lirc_rpi项目页面的说法,这个管子应该在5V供电下才能正常工作,不过我还是只接了3.3V,发现也能用。
系统软件安装:
lirc_rpi项目为Linux内核提供了支持GPIO口的红外接收管的驱动,在最新的Raspbian系统中应该已经包含。如果你的系统中没有这个模块,也许需要自己重新编译内核。具体可以参考lirc_rpi项目主页。
然后需要安装用户态的服务进程:
sudo apt-get install lirc
加载lirc_rpi内核模块:
sudo modprobe lirc_rpi gpio_in_pin=24 gpio_out_pin=23
注意,在加载lirc_rpi时必须指定输入端口是GPIO 24,跟实际接线一致。输出端口设为GPIO 23,是因为我不需要这个输出端口,而目前我们GPIO 23口是空着的。
测试红外接收是否正常:
sudo mode2 -d /dev/lirc0
如果按遥控器上的键,屏幕上能显示出一串pluse和space值的话,多半就是正常了。
配置下/etc/lirc/hardware.conf:
...
LIRCD_ARGS="--uinput"
...
DRIVER="default"
...
DEVICE="/dev/lirc0"
让lirc学习一下你遥控器上的按键,在我的例子中,请至少学习5个按键,分别做为上(up)、下(down)、左(left)、右(right)、选择(sel):
sudo /etc/init.d/lirc stop
#学习按键
irrecord -n -d /dev/lirc0 ~/lircd.conf
#把学习后生成的配置文件作为lircd的配置文件
sudo mv ~/lircd.conf /etc/lirc/lircd.conf
sudo /etc/init.d./lirc start
配置完后,可以用irw命令测试遥控器是否工作正常。
配置~/.lircrc.conf文件,把按键与需要触发的行为进行关联:
begin prog = lcdmenu button = up config = upendbegin prog = lcdmenu button = right config = rightendbegin prog = lcdmenu button = left config = leftendbegin prog = lcdmenu button = down config = downendbegin prog = lcdmenu button = sel config = selend为Raspberry Pi添加液晶屏控制菜单,我参考了Github上的RaspberryPiLcdMenu,这个项目实现了使用一个带五个小按钮的液晶屏套件作为硬件基础来显示与操作一个菜单的系统,我没有这个套件,而且我是用红外遥控器而不是小按钮来操作,所以需要重写跟按钮有关的代码,通过lirc提供的接口去获取遥控器的按键信息,很容易,可以参考我已经实现好的代码,在Buttons.py中:
git clone https://github.com/lifanxi/rpimenu.git
RaspberryPiLcdMenu项目提供了一个很灵活的菜单配置系统可以很方便的添加新的菜单项,我给它添加了遥控fmd播放豆瓣FM的菜单功能项(参考lcdmenu.xml)。
一切就绪,启动lcdmenu.py程序:
sudo python lcdmenu.py
如果你的配置没有问题,这时就可以在液晶屏上看到定制后的菜单,并可以用遥控器来遥控操作了,按上下键选项不同的菜单项,向右键进入子菜单,向左退回上一级菜单,选择键用于根据屏幕提示确定某些特定的操作。
添加了Douban.fm的菜单
豆瓣FM播放中,可以滚动显示曲名和播放进度
手机版 | Archiver | 万博网页版登陆页派论坛 ( 粤ICP备15075382号-1 )