功能介绍
常见的红外遥控接收传感器采用的是HX1838接收头,接收的红外载波信号是38KHz。HX1838接收头集成了接收放大,解码一体的器件,接收灵敏度高。常见的模块只有3根引脚,使用时的连线请参看接线说明。本模块通常配合红外遥控器使用,可以接收红外遥控器发射的数字信号,实现红外遥控器控制Arduino设备的功能。模块供电电压为3.3V-5VDC,常见的模块实物图如图3.13.1所示,常见的遥控器如图3.13.2所示。在实际使用时,可以采用家里常见的遥控器代替,如电视机遥控器、热水器遥控器、空调遥控器等。市面上常见的遥控器采用的编码方式是NEC方式。
图3.13.1 红外遥控器接收头传感器实物图
图3.13.2 常见红外遥控器实物图
接线说明
Arduino | 红外遥控接收传感器 | 说明 |
---|---|---|
VCC/+/5V | VCC/+/5V | 供电引脚 |
GND/G/- | GND/G/- | 电源地线 |
D2 | DO/S/D | 接Arduino的任意数字引脚都可以,模块输出的信号通常是NEC制式的编码信息 |
遥控器输出的信息不再是简单的高低电平信息,是具有一定的编码格式的信息,需要红外遥控接收头模块完成解码,需要了解详细的编码方式,可以自行搜索相关信息 |
使用说明:
1.按照接线说明完成接线,注意供电引脚必须连接正确。
2(a).Arduino IDE编程
采用Arduino IDE编程时,需要用到红外遥控的库文件。在IDE中打开“库管理器”,搜索“IRremote”,在搜索得到的结果中安装“IRremote”库。安装完成库文件后在“文件”—>“示例”中找到第三方库部分,选择“IRremote”—>“IRrecvDemo”打开,打开后得到参考程序中的示例程序代码,修改连接传感器的引脚后上传程序,上传完成后打开串口监视器,此时,按下遥控器上的任意按键,将会收到此按键对应的编码值,在实际使用时,需要通过程序去识别收到的编码值来确定是哪个按键按下。具体的程序代码解释请参看参考程序部分的注释。
2(b).Mixly编程
在Mixly编程中,红外遥控的接收程序模块在“通信”模块下,里面有红外遥控的接收和发射程序,在此我们只用到接收程序,按照参考程序编写完上传程序后,打开串口监视器,此时按下遥控器的任意键,将会在串口监视器里看到参考程序右侧中显示的遥控器按键信息。
3.注意,当长按某个按键时,接收到的信息将会是“FFFFFFFF”,此数是十六进制表示。当出现乱码或者接收数据不完整时,可以尝试修改loop()函数中的delay()延时的时间。
参考程序:
Arduino IDE参考程序
//对本例程的基本信息说明
/*
* IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
* An IR detector/demodulator must be connected to the input RECV_PIN.
* Version 0.1 July, 2009
* Copyright 2009 Ken Shirriff
* http://arcfn.com
*/
#include <IRremote.h> //引用头文件
int RECV_PIN = 2; //设置接收模块连接的引脚
IRrecv irrecv(RECV_PIN);
decode_results results; //创建解码结果
void setup()
{
Serial.begin(9600);
Serial.println("Enabling IRin");
irrecv.enableIRIn(); // 启动接收程序
Serial.println("Enabled IRin");
}
void loop() {
if (irrecv.decode(&results)) { //如果有数据
Serial.println(results.value, HEX);
irrecv.resume(); // 准备接收下一个数据
}
delay(100);
}