使用树莓派(Raspberry Pi)实现智能家居(2/4)

  继上一篇文章使用树莓派(Raspberry Pi)实现智能家居(1/4)介绍了树莓派的一些基本参数和用途之后,下面让挨踢小茶带大家看看如何使用树莓派实现智能家居吧。

  首先想象一下,您心目中的智能家居是怎样的?能够用APP控制台灯,电视,空调,门窗……?甚至用语音来进行控制?其实参考世面上已经在销售的产品以及在Kickstarter和Indiegogo上正在众筹的产品,你可能会有一些新的看法和思路。但是在挨踢小茶心目中,智能家居需要做的不仅仅是一款能用APP控制的智能插座,或者能代替各种遥控器的遥控终端,而是一个像Google Next一样,能像您的一个私人管家,可以自动、无时无刻、让您无法察觉的为您服务。比如说,在我每天固定8点钟起床的时候,可以自动为我打开窗帘,煮好咖啡……在我每天固定7点钟下班回家的时候,可以为我提前打开空调,打开电视机和我喜欢的电视节目。当然每个人的心中都有不一样的诉求,这个就因人而异了。

  好废话不多说了,下面来介绍一下技术实现方法。实现目标是利用APP和语音来控制红外开关。

  首先了解一下需要用到的GPIO接口。

树莓派的GPIO口

  不同版本的GPIO引脚定义略有不同,具体可以查看下面这张表格。

Raspberry-Pi-GPIO-pinouts

需要用到的部件:

  • 树莓派一个
  • 红外接收模块
  • 红外发射模块
  • 杜邦线若干
  • 红外插座
  • 红外遥控器
  • 面包板(选用)

  大部分部件都可以在某宝上购得……

安装必须的软件

  升级树莓派版本

sudo apt-get update && sudo apt-get dist-upgrade

sudo apt-get upgrade

  安装LIRC – Linux Infrared Remote Control,LIRC是开源的用来控制树莓派接收和发射红外信号的软件

sudo apt-get install lirc

  编辑你的 /etc/modules文件,加入以下代码

lirc_dev
lirc_rpi gpio_in_pin=23 gpio_out_pin=22

  修改/etc/lirc/hardware.conf文件,如下(黑色字体部分为需要修改的地方)

LIRCD_ARGS=”–uinput

# Don’t start lircmd even if there seems to be a good config file
# START_LIRCMD=false

# Don’t start irexec, even if a good config file seems to exist.
# START_IREXEC=false

# Try to load appropriate kernel modules
LOAD_MODULES=true

# Run “lircd –driver=help” for a list of supported drivers.
DRIVER=”default”

# usually /dev/lirc0 is the correct setting for systems using udev
DEVICE=”/dev/lirc0
MODULES=”lirc_rpi

# Default configuration files for your hardware if any
LIRCD_CONF=””
LIRCMD_CONF=””

安装红外接收器

  根据下图所示的引脚对应关系将红外接收模块接到树莓派上(不同版本的接线方式不一样,具体请查看第一张图中的GPIO引脚定义做相应的更改)。在这个地方,挨踢小茶因为购买了劣质的杜邦线,导致红外接收模块一致无法正常工作,这个问题排错了2个星期才最终得到解决……

raspberry-pi-version1-modelb-gpio-pinout

  另外请注意红外接收器的电压数,大部分是3V的。插的时候理论上可以支持热插拔,但保险起见建议将树莓派关机断电之后进行操作。

  对于大部分红外接收器来说,接法是

vcc 连 pin1 (3.3v)
gnd 连 pin6(ground)
data连 pin12(gpio18)

调试红外接收器

  开机后,加载lirc模块

sudo modprobe lirc_rpi

  然后结束lrcd进程

sudo kill $(pidof lircd)

  启动测试

sudo mode2 -d /dev/lirc0

  红外接收器已经打开,处于监听状态。这个时候,利用任何红外发射器(可以是电视遥控器或其他遥控器)对红外接收模块按任意按钮,就可以在树莓派终端上看到类似如下的代码,看到这个代码便证明红外接收模块是正常工作的。如果没有看到,请检查你的接线、电压、以及通过lsusb查看是否加载了相应模块。

pulse 1681
space 4816
pulse 1695
space 4784
pulse 1333
space 3638

配置红外发射器

  首先清除接收器指令

sudo kill $(pidof lircd)

  列出接收器常用的指令,挑选其中自己需要的指令,记住便可

sudo irrecord –list-namespace

  一般常用的指令可能是这些

KEY_UP
KEY_DOWN
KEY_LEFT
KEY_RIGHT
KEY_ESC
KEY_ENTER
KEY_SPACE
再次清除接收器指令
sudo kill $(pidof lircd)
打开红外接收器
irrecord -d /dev/lirc0 ~/lircd.conf

  按照指示,请先按enter二次,再按住你的遥控器任意键,直到屏幕上的……………….跑完。
跑完后,你刚刚按住的那个键,请一直重覆按,直到屏幕上的……………….跑完。

  接下来就是设定了,请先输入
  KEY_UP
  然后按遥控器上按你要设定为 上 的那个键,然后再按ENTER
再输入
  KEY_DOWN
  然后按遥控器上按你要设定为 下 的那个键,然后再按ENTER

  重覆上述动作,一直到你设定完成,最后按enter离开。
  以上步骤完成了红外信号录入的动作,之后你将可以在/home/pi/lircd.conf文件中看到你刚才录入的红外信号。

配置红外发射器

  首先关闭树莓派将红外发射器接到对应的GPIO口上,对于大部分红外接收器来说,接法是

vcc 连pin2(5v)
gnd连pin6(ground)
data连pin11(gpio17)

更改LIRC配置文件,将xxx替代为你自定义的名字。

sudo cp ~/lircd.conf /etc/lirc/xxx.conf

编辑/etc/lirc/xxx.conf文件,将name ***/lircd.conf 更改为 name xxx,这里的xxx需要与上面的一致

  进行测试,将xxx替代为前面定义的文字,并且执行定义好的按钮KEY_UP, KEY_DOWN等

sudo irsend SEND_ONCE xxx KEY_UP
sudo irsend SEND_ONCE xxx KEY_DOWN
sudo irsend SEND_ONCE xxx KEY_LEFT
sudo irsend SEND_ONCE xxx KEY_RIGHT
sudo irsend SEND_ONCE xxx KEY_ENTER

  现在可以使用家庭电视遥控器或其他红外遥控器的按钮录入树莓派,然后最后用irsend命令来测试这个红外信号是否成功发射!

  至此,已经可以用树莓派的CLI对家里的一些设备做一些简单的控制啦!不过前提是,这个家庭设备需要和插座之间再接一个红外插座,通过控制这个红外插座的开合,来对家庭设备做间接的控制。

  如果使用APP或者语音来控制呢?可以参考后面的两篇文章使用树莓派(Raspberry Pi)实现智能家居(3/4),使用树莓派(Raspberry Pi)实现智能家居(4/4)。



 
 » 除非注明,本博客文章均为挨踢小茶原创,转载请以链接形式标明本文地址
该日志由 挨踢小茶 于2015年11月13日发表在 智能家居 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 使用树莓派(Raspberry Pi)实现智能家居(2/4) | 挨踢茶馆
关键字: , ,

使用树莓派(Raspberry Pi)实现智能家居(2/4):目前有1 条留言

发表评论



快捷键:Ctrl+Enter

无觅相关文章插件,快速提升流量