树莓派论坛

 找回密码
 立即注册

使用树莓派红外控制空调和风扇

laiivan 发表于 2014-10-1 09:01:59 | 显示全部楼层 |阅读模式
1. 硬件连接:红外接收器
vcc 连 pin1 (3.3v)
gnd 连 pin6(ground)
data连 pin12(gpio18)

红外发射器
vcc 连pin2(5v)
gnd连pin25(ground)
data连pin11(gpio17)


如果是2pin的红外发射器,就不用接vcc,为了提高稳定性,需要添加添加三极管和电阻,我们这里就偷懒了,只连接了2pin。

2.软件部分
1. 安装lirc软件组件,sudo apt-get install lirc
2. 加载驱动 sudo modprobe lirc_rpi
3. 测试lirc是否正常  
    sudo mode2 -d /dev/lirc0,   按遥控上的任何键,查看是否有输出类似
   space 4960669
   pulse 2697
   ……
   pulse 2697
4. 修改/etc/lirc/hardware.conf  文件中的 DRIVER和DEVICE
pi@RaspberryPi ~ $ cat /etc/lirc/hardware.conf
# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS=""

#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=""

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

5. 我们发射的红外指令,都是通过先录制,然后发送的方法,录制的情况分2种,
   一种是风扇这种简单的指令,我们使用的办法,可以直接解析出命令,使用lirc的录制功能就可以完成
  另一种就是例如空调这种比较复杂带逻辑的命令,这种无法直接录制,我们采用的办法是使用原始的录制方法,后面讲,这里先给大家提醒一下

6.  irrecord --list-namespace | grep -i key_  挑几个你喜欢的键名,后面会用到的

7.先讲讲一般的录制,风扇这种比较简单的设备遥控
    sudo irrecord -d /dev/lirc0  ~/fan.conf,在用户自己的目录下生成文件
按两下回车后,进行录制,首先按住一个键等待点一直出现到结束
然后不停得按遥控器上不同的键,重复按也没有关系,反正就是要等到点一直出现到结束
第三步,输入你的键名,一定是前面看到的KEY_XX,回车后,按一下你想要录制的那个键
后面输入键名录制,重复进行,直接回车,录制结束,在目录下就生成了fan.conf,如果过程中出错,删掉文件,重新录制

有兴趣的同学,可以看看文件的具体内容,再结合红外的协议标准研究一下,这里就不细说了,有兴趣可以私下给我留言

8.新建一个目录/etc/lirc/remotes,用来存放我们录制的文件,并将文件放入其中
    sudo cp  ~/fan.conf /etc/lirc/remotes/
    并修改文件中name 为好记的字段,这个后面要用的

begin remote
  name  fan
  bits           16
  flags SPACE_ENC|CONST_LENGTH



9.修改/etc/lirc/lircd.conf,添加如下:
    include "/etc/lirc/remotes/fan.conf"
10.重启 sudo /etc/init.d/lirc restart,加载配置文件
11.测试你的风扇吧:
  sudo irsend SEND_ONCE  fan KEY_NEXT
  fan:为第8步骤中提到的名字   KEY_NEXT:你的键值
  (这些要是忘记了,可以再remotes下面的配置文件进行查看,如果失败,就看看你的硬件接法,以及元件好坏)

12.下面讲讲空调这种复杂的玩意,这种是无法直接录制的(希望大家在学习下面的内容前先,学习一下红外的协议标准,不然后面的东西,可能不知所以然)
红外协议:http://www.cnblogs.com/yulongchen/archive/2013/04/12/3017409.html

13. 学习了标准后,就明白了载波,以及频率的概念了,
     后头看看刚才sudo mode2 -d /dev/lirc0 的输出,那个就是我们的协议波形,space表示低电平,pulse表示      高电平,后面跟的是持续的时间,前面风扇用的是解析出来的命令,这里就要用的是这种原始的波形方式

14. 首先在开始录制空调的文件之前,我们需要有一个样板的conf文件,这个文件不能使用前面的文件,我们需要重新录制。
irrecord  -f -d /dev/lirc0 ~/fanraw.conf
-f --force : force raw mode 强制使用raw模式,使用前面步骤7的办法进行录制完成后,大家看看文件内容与前面的有什么不同,并看看与mode2 打出来的信息的关联,估计聪明的孩子已经知道怎么回事了吧
15. raw模式录制的文件其实就是pulse和space的延续时间,然后lirc在按照这个时间进行发送
16.开工:     首先使用sudo mode2 -d /dev/lirc0,找到你的那个键的总行数,多按几次,保证是没有问题的      去掉第一行,然后把后面的数字,一次看看之前的raw文件的样子,写进去,会代码的朋友,可以写个工具处理,嗖嗖的,或者使用linux的正则搞定
17.在文件中重复添加其他键的那些数值,还有键名,最后把name也修改了,include到lircd.conf中,重启程序
18.测试一把,打完收工啦。
   
19.有问题的同学,可以给我留言进行询问

后来我在树莓派上又起了一个小的网页,后台写了CGI,前台一个页面,手机电脑访问页面控制,嗖嗖的
需要代码的朋友,可以给我留言
   

其中用到的参考资料,提供给大家:
http://www.shumeipai.net/forum.php?mod=viewthread&tid=12646
http://www.chengchao.name/wordpress/?p=284
http://www.cnblogs.com/yulongchen/archive/2013/04/12/3017409.html
http://blog.sina.com.cn/s/blog_9f14969901012jlf.html




PS:转载来自:http://blog.sina.com.cn/s/blog_8f689c6a0102v1jg.html





树老大 发表于 2014-10-2 12:42:09 | 显示全部楼层
可以借鉴参考下。
lymanloo 发表于 2014-10-20 17:56:42 | 显示全部楼层
的确很强大的样子。
touchstone 发表于 2015-1-7 11:07:00 | 显示全部楼层
楼主,第9条修改/etc/lirc/lircd.conf,这个lircd.conf是哪来的?是fan.conf吗?
第4条/etc/lirc/hardware.conf ,为什么我的目录下没有这个hardware.conf文件?
zzychm 发表于 2016-8-27 15:27:52 | 显示全部楼层
touchstone 发表于 2015-1-7 11:07
楼主,第9条修改/etc/lirc/lircd.conf,这个lircd.conf是哪来的?是fan.conf吗?
第4条/etc/lirc/hardware ...

请问你的问题后来是怎么解决的?
Memorainer 发表于 2016-9-29 23:22:08 | 显示全部楼层
前排字词一把
814598604 发表于 2017-4-23 11:11:45 | 显示全部楼层
我买了一个格力通用遥控器,每次执行mode2  -d /dev/lirc0 按一下开关键 得到的结果都不一样,但是我已经保持健康节能啊,风速啊,等等这类的状态都不变,就只对接收头按“开”
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版 | Archiver | 树莓派论坛 ( 粤ICP备15075382号-1 )