Arduino与红外遥控握手

简介: Arduino与红外遥控握手

1.0 简介

  • 红外遥控器是一种通过红外线及时通讯的控制器,适用于那些需要机器设备状态调整的控制系统。在车载MP3、灯光设备、单片机开发板和遥控车等短距离控制场合中已经得到了普遍应用。本篇通过官方《IRremote》驱动库读出按键码值和实现LED灯的亮灭。

  • 外形结构:主要是由遥控器由红外接收及发射电路、信号调理电路、中央控制器8031.程序及数据存储器、键盘及状态指示电路组成。
  • 1.jpg工作原理:

遥控器由红外接收及发射电路、信号调理电路、中央控制器程序及数据存储器、键盘及状态指示电路组成。


遥控器有两种状态:学习状态和控制状态。当遥控器处于学习状态时,使用者每按一个控制键,红外线接收电路就开始接收外来红外信号,同时将其转换成电信号,然后经过检波、整形、放大,再由CPU定时对其采样,将每个采样点的二进制数据以8位为一个单位,分别存放到指定的存储单元中去,供以后对该设备控制使用。当遥控器处于控制状态时,使用者每按下一个控制键,CPU从指定的存储单元中读取一系列的二进制数据,串行输出(位和位之间的时间间隔等于采样时的时间间隔)给信号保持电路,同时由调制电路进行信号调制,将调制信号经放大后,由红外线发射二极管进行发射,从而实现对该键对应设备功能的控制。(本次学习重点控制状态🤣🤣🤣)


  • 红外遥控器相关参数见下:

红外遥控距离: 接收范围8米左右

发射管红外波长:940nm

晶振频率:455KHZ

载波频率:38KHZ

编码:编码格式为NEC

尺寸:86406mm

电源:CR2025/1600mAH

2.0 实验材料

  • Arduino Uno R3开发板
  • USB数据线
  • 三根公母线
  • SG90舵机
  • 一台安装Arduino开发环境的电脑

3.0 实验步骤

3.1 根据原理图搭建电路

  • 在使用前一定要记得给红外遥控器上电池,还有红外遥控器要结合红外接收模块使用,它负责将接收红外遥控器发射过来的信息并将其解码成十六进制码,这样才能实现既定的通信。(可以使用手机判断红外遥控器是否有电)

                                      2.gif

  • 将红外接收模块与Arduino正确连接,其中S连接D3,VCC接+5V,GND接GND,并将其固定好;

实验原理图分别对应两个实验:

1.jpg

2.jpg

实验接线图:

3.jpg

4.jpg

3.2 库文件调用:

需要IRremote库文件。操作起来:点击Arduino IDE工具选择管理库 ,搜索IRremote选择IRRemoteControl安装,如果这个不行,删除后试试其他的

5.jpg

3.3 新建sketch,拷贝如下代码并进行保存编译上传

代码1:

#include <IRremote.h>
int RECV_PIN = 11;//定义红外接收器的引脚为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); //以16进制换行输出接收代码。注意取值方法【results.value】。
    irrecv.resume(); // 给红外传送指令,让其继续接收下一个值。同315M无线接收一个道理。
  }
}

代码2:

#include <IRremote.h>
long ir_item;
IRrecv irrecv_3(3);
decode_results results_3;
void setup(){
  Serial.begin(9600);
  pinMode(4, OUTPUT);
  irrecv_3.enableIRIn();
}
void loop(){
  if (irrecv_3.decode(&results_3)) {
    ir_item=results_3.value;
    String type="UNKNOWN";
    String typelist[14]={"UNKNOWN", "NEC", "SONY", "RC5", "RC6", "DISH", "SHARP", "PANASONIC", "JVC", "SANYO", "MITSUBISHI", "SAMSUNG", "LG", "WHYNTER"};
    if(results_3.decode_type>=1&&results_3.decode_type<=13){
      type=typelist[results_3.decode_type];
    }
    Serial.print("IR TYPE:"+type+"  ");
    delay(150);
    Serial.print("Receive:  ");
    Serial.println(ir_item);
    if (ir_item == 0xE318261B) {
      digitalWrite(4,HIGH);
      Serial.println("Light turn on");
    }
    if (ir_item == 0xEE886D7F) {
      digitalWrite(4,LOW);
      Serial.println("Light turn off");
    }
    irrecv_3.resume();
  } else {
  }
}

MIxly代码

6.jpg

3.3 实验现象

  • 代码1:
  • 7.jpg
  • 依次按下按钮并记录如下,需要重复实验确定码值!!!
  • 8.jpg
  • 两种遥控器分别对应的码值有所区别
    -代码2:
    点击CH-使小灯点亮,点击CH+使小灯熄灭,实现短距离即时通讯的效果

9.png

红外遥控与Arduino实现小灯控制

10.png

4.0 总结

  • 用红外遥控器与Arduino 通讯,代码1是直接利用Arduino 第三方IRRemoteControl库解码,得到十六进制数,然后重复实验得到码值;代码2是红外遥控器与Arduino 通讯,点击CH-使小灯点亮,点击CH+使小灯熄灭,实现短距离即时通讯的效果
  • 在以后的博文中我们将学会用arduino常用传感器和执行器,从而实现对外部世界进行感知,充分认识这个有机与无机的环境,科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力。
目录
相关文章
|
IDE 开发工具
Arduino 与28BYJ-48步进电机握手
Arduino 与28BYJ-48步进电机握手
322 1
|
传感器
Arduino与LED深度握手
Arduino与LED深度握手
121 1
|
安全 IDE 开发工具
了解有源和无源蜂鸣器的区别以及如何在Arduino中使用它
在本文中,我们将探索蜂鸣器的内部结构,检查其内部结构,并对其工作系统有更深入的了解。在这里,我们讨论一下有源蜂鸣器和无源蜂鸣器的区别。该设备的主要功能是将电信号转换为音频声音。蜂鸣器可分为有源蜂鸣器和无源蜂鸣器两种不同类型,它们都是极化的。
2710 0
|
传感器 IDE 开发工具
Arduino 与HDT11和0.98寸OLED握手
Arduino 与HDT11和0.98寸OLED握手
127 0
|
传感器
Arduino与SG90舵机握手
Arduino与SG90舵机握手
328 0
|
监控 IDE 开发工具
单片机各种通信协议详解
单片机各种通信协议详解
793 0
单片机各种通信协议详解
|
传感器 存储 IDE
HTU21D温湿度传感器与Arduino连接电路图说明
在本用户指南中,我们将学习如何将 HTU21D 温湿度传感器模块与 Arduino 连接。首先,我们将向您介绍 HTU21D 传感器,包括其引出线、特性以及与 Arduino 的接口。其次,我们将在 Arduino IDE 中安装 Adafruit HTU21D 库以访问传感器数据。最后,我们将看到两个在串行监视器和 SSD1306 OLED 显示器上显示温度和湿度值的示例。
410 0
HTU21D温湿度传感器与Arduino连接电路图说明

热门文章

最新文章