挨踢茶馆

  • 首页
  • AWS
  • 网络技术
    • 思科语音
    • 路由交换
  • 给我留言
  • 关于我
挨踢茶馆
专注于网络技术、云计算的技术博客
  1. 首页
  2. 智能家居
  3. 正文

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

2015 年 11 月 13 日 24466点热度 0人点赞 19条评论

  继上一篇文章使用树莓派(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)。

标签: Raspberry Pi 智能家居 树莓派
最后更新:2015 年 11 月 16 日

挨踢小茶

网络工程师/云计算架构师/云步道师/摄影爱好者

点赞
< 上一篇
下一篇 >

文章评论

  • 小白

    楼主,想问一下我执行到sudo mode2 -d /dev/lirc0时,然后过了很久才会出现
    space 24
    pulse 55
    space 72
    pulse 57
    space 21
    pulse 56
    space 23
    pulse 55
    而且我都没有按遥控器他都出来了,这是什么原因呢

    2017 年 3 月 8 日
    回复
    • 挨踢小茶

      @小白 之前也遇到过,尽量将红外接收器放在少干扰的地方,并且尝试调整方向。

      2017 年 3 月 8 日
      回复
      • 小白

        @挨踢小茶 旁边没有红外发射器,没有按都会出现这种内容,楼主可以用QQ联系你吗?

        2017 年 3 月 8 日
        回复
        • 挨踢小茶

          @小白 有的时候一些其他的设备也会发出类似红外频谱的,所以最好先尝试换一个地方,调整方向,让他不会自动出现这些代码。
          还有就是我之前出现这个情况是因为使用了面包板,而面包板的接触不好,你可以尝试换线缆,并且采取直接连接的形式。

          2017 年 3 月 9 日
          回复
  • 哥特人

    service irsend 显示:
    inactive
    not found(no such file or directory)
    这个怎么解决?怎么开启?
    现在执行sudo irsend SEND_ONCE xxx KEY_UP 显示错误:
    irsend: could not connect to socket
    irsend: connect refused

    那个,博主能加下我么?

    2017 年 3 月 3 日
    回复
  • 小白

    楼主,请问一下接红外线这里,modules文件lirc_rpi gpio_in_pin=23 gpio_out_pin=22这里的23、22对应的是哪些引脚啊,还有我对照这你的来做,为什么加载lirc模块sudo modprobe lirc_rpi时无法发现lirc_rpi这个设备呢,而且我红外接收头也已经接上去了。 :shock:

    2017 年 3 月 3 日
    回复
    • 挨踢小茶

      @小白 有具体的报错信息吗?

      2017 年 3 月 3 日
      回复
  • 哥特人

    sudo irsend SEND_ONCE xxx KEY_UP
    到这一步了始终无法成功,
    显示
    irsend: could not connect to socket
    irsend: no such file or directory
    楼主知道这是为什么?

    2017 年 2 月 19 日
    回复
    • 挨踢小茶

      @哥特人 检查一下,irsend服务有没有正常开启

      2017 年 2 月 28 日
      回复
      • 小白

        @挨踢小茶 我也遇到过这样子的问题,请问一下irsend服务怎么开启啊,怎么检测他有没有正常开启??

        2017 年 3 月 11 日
        回复
        • 挨踢小茶

          @小白 手上没有测试机器,可以这样开启。
          sudo /etc/init.d/lirc start

          2017 年 3 月 11 日
          回复
          • 小白

            @挨踢小茶 楼主,我是利用实验室的电视机遥控器进行红外录入的,主要想利用树莓派终端的指令进行控制实验室的电视机,然后按照你的教程其他一切都顺利,就是到了最后一步sudo irsend SEND_ONCE xxx KEY_UP时始终无法成功,而且我也已经改了名字了,都是提示irsend: could not connect to socket
            irsend: No such file or directory这样的错误,也使用了sudo /etc/init.d/lirc start开启了irsend服务,网上查了很多方法还是不行,楼主请多多指教一下

            2017 年 3 月 15 日
          • 哥特人

            @小白 我总算知道为什么了,第一,这里的引脚gpio写错了,是18和17,改过来,第二,这里有一点没讲,就是初始化错误,lirc是不会去自动找到设备的,boot/config有要改的,自己百度,很多,lirc.conf和lircmd.conf配置要加入include"自己的信号文件路径"这句话,最后出来运行这两句:killall lircd
            lircd -d /dev/lirc0

            2017 年 3 月 15 日
          • 挨踢小茶

            @哥特人 谢谢你的提醒。
            你们用的是哪个版本?不同版本的引脚定义不太一样的,这个我可能要声明在文章里。

            2017 年 3 月 16 日
          • 哥特人

            @挨踢小茶 pi3 B 型号,用的是2017-1-11raspbain。
            顺便说一下,后面第三章的HTTP那里也是页面无法运行成功,显示错误:the site can not be touched,这个还没搞清楚是为什么?

            2017 年 3 月 16 日
          • 小白

            @哥特人 哥特人,求回复一下 :smile:

            2017 年 3 月 20 日
          • 小白

            @哥特人 18跟17是上面lirc默认的两个引脚,加上去也可以。如果引脚写错的话执行sudo mode2 -d /dev/lirc0 是没有space pulse之类的输出的,请问一下boot/config是要改什么呢,还有lirc.conf和lircmd.conf配置文件include自己的信号文件是修改/etc/lirc/的还是原本没有复制之前的,可以具体点吗,谢谢

            2017 年 3 月 18 日
          • 小白

            @哥特人 我可以加QQ邮箱联系一下你吗,哥特人

            2017 年 3 月 22 日
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    挨踢小茶

    网络工程师/云计算架构师/云步道师/摄影爱好者

    最新 热点 随机
    最新 热点 随机
    李飞飞自传《我看见的世界》读后感 Web3 Social 2023 @深圳 AIGC Prompt 的艺术和模型调优 UWA Day 2022 - 如何通过云计算构架高性能、高可靠、智能化的游戏 一文看懂 Amazon EKS 中的网络规划 利用 Direct Connect Gateway 和 Transit Gateway 打造跨国企业网络环境 SD-WAN 和专线混合组网中的高可用设计 为了加速Wordpress网站我踩过了哪些坑?含泪告诉你 利用 SD-WAN 和专线混合组网,加速境内外企业 IDC 和多云数据中心 运行7年之后博客更新主题
    [译]谁是白盒网络市场最大玩家 正式启用《挨踢百科》和进入BackTrack学习 关于天涯社区早前数据泄漏的说明 终端仿真器:SecureCRT 6.7.3 绿色版 路由协议特性概述 Chrome15成为了世界上最流行的浏览器(以版本计算) 独立磁盘冗余数组 恶搞Photoshop:“最强大化妆品”广告 通过AWS Certified Developer – Associate考试 修改思科语音平台MAC地址和License MAC值
    链接表
    • FROYO's Blog
    • Pop's blog
    • TC的博客
    • 今天毕业
    • 挨踢茶馆在线教程
    • 月与灯依旧
    • 月小升博客
    • 泪雪博客
    • 海纳百川
    • 筑楼
    • 网络茶馆
    • 蓝卡
    • 郑晓个人博客
    • 陆鉴鑫的博客

    COPYRIGHT © 2012-2023

    Theme Kratos Made By Seaton Jiang

    粤ICP备12007665号-1