出售本站【域名】【外链】

【Arduino实验14 红外遥控】

目录

一、实验宗旨

        1相熟红外遥控发射、接管模块的根柢的本理;

        2了解红外遥控器的编码本理;

        3 编写红外遥控发射、接管步调;

        4 真现LED灯的红外遥控罪能。

二、实验方法取环境

        Arduino UNO套件、计较机、红外遥控器、红外接管头、LED灯、220欧电阻等

三、实验重点

        1 红外遥控发射、接管模块本理;2 红外遥控发射、接管步调取按键编码测定;3红外遥控LED灯的显示

四、实验难点

        1 红外遥控编码本理

五、实验内容 5.1实验任务

        任务形容:库函数IRemote()的运用;获与红外遥控器按键编码信息;遥控器按键控制LED的开关取亮度。

5.2实验本理

        1.红外信号发射、接管本理

        红外遥控是一种无线、非接触控制技术,具有抗烦扰才华强,信息传输牢靠,罪耗低,老原低,易真现等显著劣点,被诸多电子方法出格是家用电器宽泛给取,并越来越多的使用到计较机和手机系统中。红外光按波长领域分为,近红外、中红外、远红外、极红外4类。        

        红外线遥控是操做近红外光传送遥控指令,波长为0.76um~1.5um。用近红外做为遥控光源,是因为红外发射器件(红外发光管)取红外接管器件(光敏二极管、三极管及光电池)的发光取受光峰值波长正常为0.8um~0.94um,正在近红外光波段内,二者的光谱正好重折,能够很好地婚配,可以与得较高的传输效率及较高的牢靠性。

        红外遥控次要由红外发射和红外接管两局部构成。

        红外发射和接管的信号是一串二进制脉冲码,上下电平依照一定的光阳轨则调动来通报相应的信息。为了使其正在无线传输历程中免受其余信号的烦扰,信号调制正在38K红外载波上,通过红外发射二极管发射进来,而红外接管端则要将信号停行解调办理,回复复兴成二进制脉冲码停行办理。        

        (1)红外信号发射

        红外遥控的发射电路是给取红外发光二极管来发出颠终调制的红外光波。

        本始信号便是咱们要发送的一个数据“0”位大概一位数据“1”位,载波频次为38K方波信号,调制后信号便是最末咱们发射进来的波形。用本始信号来控制38K载波,当信号是数据“0”的时候,38K载波毫无糊口生涯的全副发送进来,当信号是数据“1”的时候,不发送任何载波信号。

         红外遥控信号编码(NEC和谈)

        NEC和谈特点:

        ①8位地址位,8位号令位;②为了牢靠性地址位和号令位被传输两次;③脉冲位置调制;④载波频次38khz;⑤每一位的光阳为1.125ms-2.25ms

        和谈编码脉冲波形:          

        按下按键,发射脉冲序列(编码):

        注:脉冲传输的地址为0x59,号令为0x16

        长按按键,代码每隔110ms重复发送:

         (2)红外信号接管

        红外接管电路由红外接管二极管、三极管或硅光电池构成,将红外发射器发射的红外线转换为相应的电信号。红外信号接管端对接管到的信号停行放大、滤波、解调等一系列电路办理,而后输出数字数据信号。红外通信接管头HS0038B,把根柢办理电路集成到一起,只有接管到发射端发出的红外信号,就可以间接输出索要的数字信号。

        当HS0038监测到有38K的红外信号时,就正在OUT引脚输出低电平,当没有38K的时候,OUT引脚就会输出高电平。

        把OUT引脚接到Arduino的IO口上,通过编程获与红外发射端发过来的数据。

        2.红外遥控

        红外遥控工做时,向红外接管头发射红外信号,红外接管头接管到信号后,颠终阐明解码发射信号,获得遥控发射器按键的键值编码,主步调依据支到按键的键值编码做出相应的反馈控制。        

        红外遥控器是家居罕用来控制电视、空调、电扇、音响等家电的控制安置。

         (1)遥控器(红外信号发射)

        红外遥控器正常由指令键,指令编码系统、调制电路、驱动电路、红外发射电路灯及局部构成。

        当按下指令键时,指令编码电路孕育发作所需的指令编码信号,指令编码信号对载波停行调制,由驱动电路停行罪率放大后,由发射电路向外发射经调制订的指令编码信号。

        (2)接管头(红外接管)

        接管电路将发射器发出的已调制的编码指令信号接管下来,并停行放大后送解调电路,解调电路将已调制的指令编码信号解调出来,即回复复兴为编码信号。

        3.红外库函数IRemote()

        红外遥控类库IRremote是第三方库,撑持多种红外和谈,如NEC、Sony SIRC、Philips RC5等。当Arduino主板连贯红外遥控发射、接管模块,可以真现红外遥控罪能。

        运用红外遥控,源步调中先包孕<IRremote.h>头文件。

// 红外库函数头文件取真体化对象声明

#include <IRremote.h>int recvPin = 11; //红外接管器连贯11号引脚IRrecv myIRrecv(recvPin);// 真例化一个红外接管对象

decode_results results; // 声明一个存储红外编码信息的构造体对象

        IRremote类库函数中界说了红外承受类IRrecv、红外发射类IRsend。

        红外接管IRrecv库函数

        IRrecv myIRrecv(recvPin) //创立红外接管真例对象,recvPin接管头引脚

        decode_results results; //声明接管编码信息存储的构造体对象

        成员函数:        

        myIRrecv.enableIRIn(); // 初始化红外解码

        IRrecv.decode(&results); // 检查接管红外编码,解码信息存入decode_results构造对象        

        resultsIRrecv.resume(); // 接管下一个编码

        result.value(); //支到的编码数据信息

        注:获与的红外遥控器键值是一个16进制字符串。

        红外发射类IRsend库函数

        IRsend myIRsend() 创立一个红外发射真例对象

        IRsend库成员函数

        myIRsend.sendNEC(data,nbits) 以NEC编码格局发送指定值

        myIRsend.sendRaw(buf,len,hz) 以本始编码格局发送信号

        4.红外遥控控制LED灯组电路

5.3实验内容

        1.红外遥控按键编码测试

        轨范1:连贯电路

        轨范2:步调流程图(略)

        轨范3:源步调

/* * 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. */#include <IRremote.h> int recvPin = 11; //红外接管器连贯11号引脚 IRrecv myIRrecv(recvPin); decode_results results; // 用于存储接管红外编码信息的构造体对象 void setup() { Serial.begin(9600); // 初始化串口通信 myIRrecv.enableIRIn(); // 初始化红外解码 } void loop() { if (myIRrecv.decode(&results)) { //检查能否接管到编码信息 Serial.print("the keycode is:"); Serial.println(results.value, HEX); myIRrecv.resume(); // 接管下一个编码 } }

        轨范4:监测串口监督器输出按键值编码,填入下表:

按键

 

键值编码

 

按键

 

键值编码

 

CH -

 

FFA25D

 

CH+

 

FF30CF

 

“-”键

 

FFE01F

 

1

 

FF18E7

 

“+” 键

 

FFA857

 

2

 

FF7A85

 

◣◣键

 

FF22DD

 

3

 

FF10EF

 

◥◥键

 

FF02FD

 

4

 

FFE21D

 

◥Ⅱ键

 

FFC23D

 

5

 

FF38C7

 

EQ

 

FF906F

 

6

 

FF

 

100+

 

FF9867

 

7

 

FF42BD

 

200+

 

FFB04F

 

8

 

FF

 

0

 

FF6897

 

9

 

FF5

 

        轨范5:步调调试         注:遥控器每个按键都对应差异的编码,差异遥控器运用的编码也不雷同。显现“FFFFFFFF”编码,是因为运用的是NEC和谈的遥控器,当按住某按键不放时,其会发送一个重复编码“FFFFFFFF”。而其余和谈的遥控器,则会重复发送对应的编码。

        2. 红外遥控控制LED灯的开、关

        轨范1:连贯电路

        轨范2:画步调流程图

         轨范3:编写控制步调

#include <IRremote.h> int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; #define LEDPIN 8 void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver pinMode(LEDPIN,INPUT); } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); // Receive the next value switch(results.value){ case 0xFF52AD: digitalWrite(LEDPIN,HIGH); break; case 0xFF42BD: digitalWrite(LEDPIN,LOW); break; } } delay(100); }

        轨范4:步调调试

        3.实验任务扩展:实验任务:(1)红外遥控真现LED灯开、关控制,(2)开灯条件下,按键控制LED灯光变亮、变暗。

        轨范1:设置按键罪能

按键

 

键值

 

罪能

 

+

 

FFA857

 

控制LED灯变亮

 

-

 

FFE01F

 

控制LED灯变暗

 

        轨范2:步调流程图 

        轨范3:编写步调

#include <IRremote.h> int RECV_PIN = 11; int LEDPIN = 6; IRrecv irrecv(RECV_PIN); decode_results results; int val = 0; void setup() { Serial.begin(9600); //初始化接管器 irrecv.enableIRIn(); //设定数字IO口的形式,OUTPUT 为输出 pinMode(LEDPIN, OUTPUT); } void loop() { if (irrecv.decode(&results)) { //按“+”号键 if (results.value == 16754775 && val < 255) { val = val + 10; }//按下“-”号键 else if (results.value == 16769055 && val > 0) { val = val - 10; } irrecv.resume(); } Serial.println(val); analogWrite(LEDPIN, val); }

        轨范4:步调调试

5.4实验结果

        结论:通过按键可控制灯的亮灭,按键亮,按键灭。按键可控制灯的开灭,当灯亮时,按“+”键,灯逐突变亮,按“-”键,灯逐突变暗。

        深思:通过原次实验我学会了不少知识,相熟了红外遥控发射、接管模块的根柢的本理,了解了红外遥控器的编码本理,能编写红外遥控发射、接管步调,真现LED灯的红外遥控罪能。支成为了不少知识。

        做品:

        

5.5考虑题

1.红外遥控是目前运用最为宽泛的一种通信和遥控技能花腔,家用电器但凡由红外遥控器真现控制。假如要获与家电遥控器按键编码信息,该怎么真现?


2023-11-19 01:37  阅读量:108