也许有人会问有了手机控制或者红外控制为什么还要有一个物理的静音按钮呢?设想一下以下场景:
当你在电视上看大片看得正爽的时候,来了个电话,是到手机上找app来控制呢,还是手忙脚乱的找遥控器来静音,或者直接到电视机边上按个静音键方便呢?
正是因为如此,才有了这个创意。
基本思路:一个简单的轻触式按钮连接到Pi的gpio口,在Pi上运行一个python程序,当按钮按下时,给XBMC发送静音指令。
附加功能:每按一次,LED闪一下
扩展功能:不满足于静音功能的,还可以多增加几个按钮来完成其他的功能,比如播放、暂停、快进、发送邮件、甚至求救报警功能。
开始动手
原料:
万博网页版登陆页派 1个(这个你肯定有了吧,没有就入一个吧)
轻触式按钮 1个
LED 1个
3k3电阻 2个
洞洞板、连接线、面包板之类,看自己情况使用。
步骤1:
焊洞洞板,示意电路图如下:
为了防止LED以及GPIO口电流太大,加了限流电阻。
实际焊接图,请忽略左边五个按钮和左边的电阻,这是我留着备用的。
按照电路图连接到Pi上。
步骤2,安装python的gpio库,如果已经安装了,请跳过此步
- cd /tmp
- cd gpio
- wget [url]https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.5.7.tar.gz[/url]
- tar xvzf RPi.GPIO-*.tar.gz
- cd RPi.GPIO-*/
- sudo python setup.py install
复制代码
如果安装的时候出现错误:
source/py_gpio.c:23:20: fatal error: Python.h: No such file or directory
这是因为缺少Python.h文件,没安装python编译环境:
sudo apt-get install python-dev
步骤3:开始我们的python程序吧
- #!/user/bin/env python
- import RPi.GPIO as GPIO
- import time
- import urllib
- import urllib2
- import json
- def mute():
- url=’http://你的Pi的ip地址:8080/jsonrpc’
- values = {“jsonrpc”:”2.0″,”method”:”Application.SetMute”,”id”:1,”params”:{“mute”:”toggle”}}
- jdata = json.dumps(values)
- req = urllib2.Request(url, jdata)
- req.add_header(‘Content-Type’,’application/json’)
- response = urllib2.urlopen(req)
- return response.read()
- GPIO.setmode(GPIO.BOARD)
- GPIO.setup(11,GPIO.OUT)
- GPIO.setup(12,GPIO.IN)
- while True:
- in_value= GPIO.input(12)
- if in_value ==False:
- mute();
- GPIO.output(11,False)
- time.sleep(0.5)
- GPIO.output(11,True)
- while in_value == False:
- in_value = GPIO.input(12)
复制代码
然后运行python key.py,按下按钮看看屏幕右上角已经有了静音标志了?再按一下,又消失了。
还可以在这个代码基础上修改做别的操作,希望这个能够起到抛砖引玉的作用。