也许有人会问有了手机控制或者红外控制为什么还要有一个物理的静音按钮呢?设想一下以下场景:
当你在电视上看大片看得正爽的时候,来了个电话,是到手机上找app来控制呢,还是手忙脚乱的找遥控器来静音,或者直接到电视机边上按个静音键方便呢?
正是因为如此,才有了这个创意。
基本思路:一个简单的轻触式按钮连接到Pi的gpio口,在Pi上运行一个python程序,当按钮按下时,给XBMC发送静音指令。
附加功能:每按一次,LED闪一下
扩展功能:不满足于静音功能的,还可以多增加几个按钮来完成其他的功能,比如播放、暂停、快进、发送邮件、甚至求救报警功能。
开始动手
原料:
树莓派 1个(这个你肯定有了吧,没有就入一个吧)
轻触式按钮 1个
LED 1个
3k3电阻 2个
洞洞板、连接线、面包板之类,看自己情况使用。
步骤1:
焊洞洞板,示意电路图如下:
为了防止LED以及GPIO口电流太大,加了限流电阻。
实际焊接图,请忽略左边五个按钮和左边的电阻,这是我留着备用的。
按照电路图连接到Pi上。
步骤2,安装python的gpio库,如果已经安装了,请跳过此步
cd
gpio
wget https:
//pypi
.python.org
/packages/source/R/RPi
.GPIO
/RPi
.GPIO-0.5.7.
tar
.gz
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
sudo apt-get install python-dev
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)