远程控制系统之红外接收模块
前言
这是一个3针的红外接收头,这应该是我们在日常生活中使用最多的模块了,如电视机遥控器、空调遥控器等等,均会用到红外接收头。在机器人、智能控制、智能制造、智能家居等领域均会用到红外接收头,它也属于远程控制系统的一个重要组成部分。
红外接收头构造
红外接收头由红外监测二极管,放大器,限幅器,带通滤波器,积分电路,比较器等组成。当红外监测二极管监测到红外信号时,它会把信号发送给放大器和限幅器,放大器对信号进行放大,限幅器负责控制脉冲幅度在一定的水平上。当信号进入带通滤波器,带通滤波器只允许通过频率为30khz到60khz的信号,滤除无关信号,然后信号再通过解调电路和积分电路,最后进入比较器还原出发射端的信号波形。红外接收头的种类很多,引脚定义也不完全相同,一般都有三个引脚,包括VCC,GND和DAT(OUT或Signal)。标准的红外接收头的引脚图如下:
市面上的一些红外接收头的引脚定义存在差异,如下图:
可以看出由于生产厂家不同,封装工艺不同,红外接收头的引脚定义也会存在差异,如TSOP4836 SFH5110对比TSOP1736 SFH506 它们的VCC、GND、signal引脚均不相同,所以在使用中我们需要特别注意。幸运的是,某宝有很多封装好的模块供我们选择使用。外貌较好的红外接收头模块
连线的规则:红外接收模块的3个针脚。从下到上,是:(G)GND,(V)VCC,(D)DAT。在实际连接中电缆应该也用明显的颜色来区分三个针脚,典型的颜色为:(G)GND = 黑色,(V)VCC = 红色,(D)DAT = 白色。
基于Arduino的简单测试
在使用前,需要安装IR-REMOTE 的 library,库文件地址:https://github.com/shirriff/Arduino-IRremote,如果编译时发生冲突或故障,请检查你的编译环境中是否存在类似IRRobotRemote的库,如有请删除后再进行编译。
下面做一个从读取红外遥控信号的实验,可通过串口监视器显示结果。代码如下:
/* * 接收红外信号测试 IR */ #include int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // 开始接收 } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); // 接收下一个值 } delay(100); }