1)原理
红外遥控是一种利用红外光编码进行数据传输的无线通信技术,具有抗干扰能力强、信息传输可靠、功耗低、成本低、易实现等显著优点,被诸多电子设备特别是家用电器广泛采用。生活中常用的电视遥控器和空调遥控器,都是使用红外遥控。
通用红外遥控系统由发射和接收两大部分组成。发射部分一般由指令键(或操作杆)、指令编码系统、调制电路、驱动电路、发射电路等几部分组成。当按下指令键或推动操作杆时,指令编码电路产生所需的指令编码信号,指令编码信号对载波进行调制,再由驱动电路进行功率放大后由发射电路向外发射经调制的指令编码信号。接收部分一般由接收电路、放大电路、调制电路、指令译码电路、驱动电路、执行电路(机构)等几部分组成。接收电路将发射器发出的已调制的编码指令信号接收下来,并进行放大后送解调电路,解调电路将已调制的指令编码信号解调出来,即还原为编码信号。指令译码器将编码指令信号进行译码,最后由驱动电路来驱动执行电路实现各种指令的操作控制。
下面介绍几种红外线遥控常用器材。
(1)一体化红外接收头。一体化红外接收头(图8-19)的内部集成了红外接收电路,包括红外监测二极管、放大器、限幅器、带通滤波器、积分电路和比较器等。它可以接收红外信号并还原成发送端的波形信号。通常使用的一体化红外接收头都是接收38 k Hz左右的红外信号。不同的红外一体机接收头可能会有不同的引脚定义,使用的时候请仔细阅读使用说明书。
(2)红外遥控器。红外遥控器(见图8-20)上的每个按键都有各自的编码,按下按键后,遥控器就会发出对应编码的红外波。最常见的红外遥控器大多使用NEC编码。
图8-19 一体化红外接收头
图8-20 红外遥控器
图8-21 红外发光二极管
生活中的大多数红外通信都使用38 k Hz的频率进行通信。如果使用其他频率进行通信,则需要选用对应频率的器材。
(3)红外发光二极管。红外发光二极管(见图8-21)和普通的发光二极管外形很相似,但是它可以发出肉眼不可见的红外光。与红外一体接收头搭配使用,就可以进行红外通信了。
2)IRremote类库
(1)IRrecv类。IRrecv类可用于接收红外信号并对其解码。在使用该类之前,需要定义一个该类的对象,比如取名为irrecv。IRrecv类的成员函数如下。
①IRrecv()。
功能:IRrecv类的构造函数。可用于指定红外一体化接收头的连接引脚。
语法:IRrecv irrecv(recvpin)。
参数:irrecv,一个IRrecv类的对象;
recvpin,连接到红外一体化接收头的OUT引脚的LaunchPad引脚的编号。
返回值:无。
②enableIRIn()。
功能:初始化红外解码。
语法:irrecv.enableIRIn()。
参数:irrecv,一个IRrecv类的对象。
返回值:无。
③decode()。
功能:对接收到的红外信息进行解码。
语法:irrecv.decode(&results)。
参数:irrecv,一个IRrecv类的对象;
results,一个decode_results类的对象。
返回值:int类型,解码成功返回1,失败返回0。
④resume()。
功能:接收下一个编码。
语法:irrecv.resume()。
参数:irrecv,一个IRrecv类的对象。
返回值:无。
(2)IRsend类。IRsend类可以对红外信号编码并发送。
①IRsend()。
功能:IRsend类的构造函数。
语法:IRsend irsend()。
参数:irsend,一个IRsend类的对象。
返回值:无。(www.xing528.com)
②send NEC()。
功能:以NEC编码格式发送指定值。
语法:irsend.send NEC(data,nbits)。
参数:irsend,一个IRsend类的对象;
data,发送的编码值;
nbits,编码位数。
返回值:无。
③sendSony()。
功能:以NEC编码格式发送指定值。
语法:irsend.sendSony(data,nbits)。
参数:irsend,一个IRsend类的对象;
data,发送的编码值;
nbits,编码位数。
返回值:无。
④sendRaw()。
功能:发送原始红外编码信号。
语法:irsend.send Raw(buf,len,hz)。
参数:irsend,一个IRsend类的对象;
buf,存储原始编码的数组;
len,数组长度;
hz,红外发射频率。
返回值:无。
除此之外还有如下函数,用于常见协议的红外信号发送:
①SendRC5();
②Send RC6();
③SendDISH();
④SendSharp();
⑤SendPansonic();
⑥SendJVC()。
3)红外接收
要想使用遥控器来控制LaunchPad,首先需要了解遥控器各按键对应的编码。不同的遥控器,不同的按键,不同的协议,都对应着不同的编码。可通过IRremote的示例程序来获取遥控器发送信号的编码。
在菜单栏中打开“File”→“Examples”→“IRremote”→“IRrecvDemo”,这时在编辑窗口会出现程序,如表8-16所示。
表8-16 红外遥控接收应用示例程序清单
把一体化红外接收头的OUT引脚连接到LaunchPad的11号引脚,VCC和GND引脚分别连接到LaunchPad的VCC和GND引脚就可。把红外遥控器对准一体化红外接收头,按下不同的按键,通过串口监控器就可以看到相应按钮的编码了。
上载表8-16中程序,运行该示例后,使用遥控器向红外一体化接收头发送信号,依次按下按键“1~9”和“0”,在串口监视器中查看,可以看到如图8-22所示的信息。
图8-22 按键的编码信息
在本实验中按键“1”对应的编码是“FFA25D”,按键“2”对应的编码是“FF629D”,等等。遥控器的每个按键都对应了不同的编码,不同的遥控器使用的编码方式也不相同。
4)使用红外控制LED灯的亮与灭
表8-17中示例通过红外线控制LED的亮与灭。按下红外遥控器的按键“1”点亮红色LED灯,按下红外遥控器的按键“2”熄灭红色LED灯。红色LED灯直接使用MSP430G2 LaunchPad底板自带的LED灯,一体化红外接收头连接方式与上例相同。
表8-17 红外遥控应用示例程序清单
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。