【Arduino实验14 红外遥控】

这篇具有很好参考价值的文章主要介绍了【Arduino实验14 红外遥控】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、实验目的

二、实验设备与环境

三、实验重点

四、实验难点

五、实验内容

5.1实验任务

5.2实验原理

​5.3实验内容

5.4实验结果

5.5思考题


一、实验目的

        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”的时候,不发送任何载波信号。

【Arduino实验14 红外遥控】

         红外遥控信号编码(NEC协议)

        NEC协议特点:

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

        协议编码脉冲波形:          【Arduino实验14 红外遥控】

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

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

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

【Arduino实验14 红外遥控】

         (2)红外信号接收

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

【Arduino实验14 红外遥控】

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

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

        2.红外遥控

        红外遥控工作时,向红外接收头发射红外信号,红外接收头接收到信号后,经过分析解码发射信号,得到遥控发射器按键的键值编码,主程序根据收到按键的键值编码作出相应的反应控制。        

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

【Arduino实验14 红外遥控】

         (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:监测串口监视器输出按键值编码,填入下表:

【Arduino实验14 红外遥控】

按键

键值编码

按键

键值编码

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:画程序流程图

【Arduino实验14 红外遥控】

         步骤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:设置按键功能

【Arduino实验14 红外遥控】

按键

键值

功能

+

FFA857

控制LED灯变亮

-

FFE01F

控制LED灯变暗

        步骤2:程序流程图 

【Arduino实验14 红外遥控】

        步骤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灯的红外遥控功能。收获了很多知识。

        作品:

        【Arduino实验14 红外遥控】

5.5思考题

1.红外遥控是目前使用最为广泛的一种通信和遥控手段,家用电器通常由红外遥控器实现控制。如果要获取家电遥控器按键编码信息,该怎样实现?文章来源地址https://www.toymoban.com/news/detail-454200.html

到了这里,关于【Arduino实验14 红外遥控】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机--红外遥控

    红外遥控是一种无线、非接触控制技术, 通过使用红外线来传送控制信号。它具有抗干扰能力强、信息传输可靠、功耗低、成本低、易实现等显著优点 ,因此被广泛应用于各种电子设备和家用电器,也越来越多地应用于计算机和手机系统中。 红外遥控系统一般由 发射和接收

    2024年02月15日
    浏览(40)
  • STM32外设系列—红外遥控

    🎀 文章作者:二土电子 🌸 关注文末公众号获取其他资料和工程文件! 🐸 期待大家一起学习交流! 红外遥控,顾名思义,就是利用红外线实现遥控。这里就不单独对红外线做介绍了,红外线的波长再可见光范围外,所以人眼是看不到的。红外遥控的原理就是利用红外线进

    2024年02月14日
    浏览(42)
  • 一、红外遥控介绍(NEC协议)

    目录 1.1、红外线的介绍 1.2、红外遥控器的工作原理 1.3、NEC协议的介绍 1.引导码的组成 2.地址码 3.数据码 4.反码 5.连发码 1.4、红外接受装置 1.在数码管显示红外解码遥控器的按键值:         红外是红外线的简称,它是一种电磁波人的眼睛可见光按照波从长到短排列,红

    2024年02月08日
    浏览(37)
  • 【【51单片机的红外遥控】】

    红外遥控 利用红外光进行通信的设备,由红外LED将调制后的信号发出,再由专门的红外接收头进行解调输出 通信方式:单工 异步 红外LED波长:940nm 通信协议标准:NEC标准 用那种一体化红红外接收头 直接帮忙滤波 好用一点 因为用红外遥控案件按下 速度太快了 比普通按键按

    2024年02月15日
    浏览(38)
  • 51单片机 (十八)红外遥控

    什么是红外线?         人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。其中红光的波长范围为0.62~0.76μm;紫光的波长范围为0.38~0.46μm。比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线.红外线遥控就是利用波长为0.

    2024年02月08日
    浏览(39)
  • (十六)51单片机——红外遥控

    目录 学习目标 成果展示  硬件知识 简介 硬件电路 NEC编码 遥控器键码 外部中断  中断号 寄存器 代码  红外调控  直流电机 总结            本节知识我们来学习关于红外遥控的部分,重点要学习的是NEC编码和外部中断的知识,好了,让我们开始今天的学习吧! 红外遥

    2023年04月09日
    浏览(37)
  • 【【51单片机红外遥控小风车】】

    今天结束了51单片机的学习,明天开始学习stm32 我是学习江科大的视频一步一步完成的 ,他讲的非常好,非常好 特别通俗易懂 学习复刻他的作品我也自己创作了一些 但是现在暂时脱离这块板子了 以后可能会更新一个应用51单片机制作的智能小车 我特别想开一个小车的坑 谢

    2024年02月15日
    浏览(40)
  • 51单片机学习笔记-15 红外遥控

    [toc] 注:笔记主要参考B站江科大自化协教学视频“51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。 注:工程及代码文件放在了本人的Github仓库。 15.1.1 红外遥控器 红外遥控是利用红外光进行通信的设备,由 红外LED 将调制后的信号发出,由专用的红外接收头进行解

    2024年02月04日
    浏览(45)
  • 单片机学习笔记---红外遥控(外部中断)

    目录 红外遥控简介 硬件电路 基本发送与接收 NEC编码​​​​​​​ 遥控器键码 复习外部中断和定时器 红外遥控是利用红外光进行通信的设备,由红外LED将调制后的信号发出,由专用的红外接收头进行解调输出 通信方式:单工,异步 红外LED波长:940nm 通信协议标准:NEC标

    2024年02月22日
    浏览(39)
  • 【【51单片机11.0592晶振红外遥控】】

    这是初步实现的架构 怎么实现内部的详细逻辑 我们用状态机的方法 0状态时一个空闲状态 当它接收到下降沿开始计时然后转为1状态 1状态下 寻找start 或者repeat的信号 再来下降沿读出定时器的值 如果是start 那就进入2状态开始译码 如果repeat 那么重发标志位 重新切回去 我每次

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包