Linux:使用树莓派红外控制空调和风扇
June 17, 2015
Table of Contents
一. 硬件连接:
红外接收器
vcc 连 pin1 (3.3v)
gnd 连 pin6(ground)
data连 pin12(gpio18)
红外发射器
vcc 连pin2(5v)
gnd连pin25(ground)
data连pin11(gpio17)
如果是2pin的红外发射器,就不用接vcc,为了提高稳定性,需要添加添加三极管和电阻,我们这里就偷懒了,只连接了2pin。
二.软件部分
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
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.
7.先讲讲一般的录制,风扇这种比较简单的设备遥控
sudo irrecord -d /dev/lirc0
有兴趣的同学,可以看看文件的具体内容,再结合红外的协议标准研究一下,这里就不细说了,有兴趣可以私下给我留言
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.重启
11.测试你的风扇吧:
sudo irsend SEND_ONCE fan KEY_NEXT
fan:为第8步骤中提到的名字
12.下面讲讲空调这种复杂的玩意,这种是无法直接录制的(希望大家在学习下面的内容前先,学习一下红外的协议标准,不然后面的东西,可能不知所以然)
13. 学习了标准后,就明白了载波,以及频率的概念了,
14. 首先在开始录制空调的文件之前,我们需要有一个样板的conf文件,这个文件不能使用前面的文件,我们需要重新录制。
irrecord -f -d /dev/lirc0 ~/fanraw.conf
-f
完成后,大家看看文件内容与前面的有什么不同,并看看与mode2 打出来的信息的关联,估计聪明的孩子已经知道怎么回事了吧
15. raw模式录制的文件其实就是pulse和space的延续时间,然后lirc在按照这个时间进行发送
16.开工:
17.在文件中重复添加其他键的那些数值,还有键名,最后把name也修改了,include到lircd.conf中,重启程序
18.测试一把,打完收工啦。
19.有问题的同学,可以给我留言进行询问
其中用到的参考资料,提供给大家:
- http://www.shumeipai.net/forum.php?mod=viewthread&tid=12646
- http://www.eeboard.com/bbs/thread-6940-1-1.html
- 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
0 Comments