“红外接收”的版本间的差异

来自YFRobotwiki
跳转至: 导航搜索
 
(未显示2个用户的30个中间版本)
第1行: 第1行:
  
[[Image:红外接收.jpg|400px|thumb|红外接收]]
+
[[Image:红外接收.jpg|300px|thumb|红外接收]]
  
  
第6行: 第6行:
 
=== 产品简介 ===
 
=== 产品简介 ===
 
<br>
 
<br>
 红外接收模块,采用HS0038一体化红外遥控接收元件, 中心 频率为38.0kHz,自然光的反射干扰。
+
  红外遥控分发射和接收两部分,发射部分为Mini遥控器,接收部分为 红外接收模块, 红外接收模块 采用HS0038一体化红外遥控接收元件, 载波 频率为38.0kHz, 周期26us,可抗 自然光的反射干扰。
  
 +
红外系统原理框图如下,Mini遥控器编码调制发出红外线,接收模块将接收到的红外线遥控信号,经过放大、解调和整形后输出功能指令信号,送至微处理器进行识别和处理,从而实现遥控过程。
 +
 +
[[File:红外系统框图.png|600px]]
 +
 +
<img src="http://yfrobot.gitee.io/YFRobot/wiki/img/红外遥控系统.gif" alt="红外">
 +
 +
 +
其他详见参考资料。
  
 
=== 规格参数 ===
 
=== 规格参数 ===
 
<br>
 
<br>
*供电电压 :DC5V
+
*供电电压 :DC3v3-5V
* 接收信号 :38 kHz
+
* 红外协议:NEC
 +
*载波频率 :38 kHz
 
*周期:26μs
 
*周期:26μs
 +
*接收距离:10m
 
*安装孔径:3MM
 
*安装孔径:3MM
*模块尺寸:28*21*11MM(长*宽*高)
+
*模块尺寸:28*21*11MM (长*宽*高)/ Mini遥控器:88*40*7MM (长*宽*高)
 
*孔间距:15MM
 
*孔间距:15MM
*模块重量:2.3g
+
*模块重量:2.2g / Mini遥控器:12.6g
 
+
 
+
  
 
=== 主要应用 ===
 
=== 主要应用 ===
第36行: 第44行:
 
=== 应用示例 ===
 
=== 应用示例 ===
 
<br>
 
<br>
:'''电路连接 示意图'''
+
<font color="darkorenge">''' 提示'''</font>:以下程序需使用到 IRremote库文件,文件下载地址见页末 - 参考资料。下载后将其解压至arduinoIDE安装目录/libraries文件夹中,例如: "D:\Program Files\Arduino\arduino-1.6.4-windows\arduino-1.6.4\libraries"。
 +
<br><br>
 +
'''电路连接'''
 +
 
 
<br>
 
<br>
::'''红外接收模块'''的 G、V、S分别连接 '''Arduino UNO'''的GND、VCC(+5V)、D11引脚。
+
:'''红外接收模块'''的 G、V、S分别连接 '''Arduino UNO'''的GND、VCC(+5V)、D11引脚。
  
+
'''电路连 示意 '''
<!--[[Image: 红外 收模块.jpg|400px|center|红外接收模块接线 ]]-->
+
  
 +
<!-- <img src="http://yfrobot.gitee.io/wiki/img/红外遥控.png"  alt="红外遥控" /> -->
  
 +
<img src="http://file.yfrobot.com.cn/wiki/image/sensor_circuit/IRReceiver.png-yf"  alt="红外遥控" />
  
:'''示例代码'''
+
 
<br>
+
 
 +
'''示例代码'''
 +
<br><br>
 
<font color="darkcyan">'''示例一'''</font>:获取键值
 
<font color="darkcyan">'''示例一'''</font>:获取键值
<pre >
+
<source lang="c">
 
/*
 
/*
 
  * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
 
  * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
第79行: 第93行:
 
   }
 
   }
 
}
 
}
</pre>
+
</source>
 程序下载地址:[http://pan.baidu.com/s/1qJCKY IRrecvDemo]
+
 程序下载地址:[https://eyun.baidu.com/s/3hsQn8zi IRrecvDemo]
 +
 
 +
程序运行结果:接收按键值,并串口打印。出现 "FFFFFFFF" 码值,属于正常现象,它是当收到重复码(长按)时NEC的解码值。
 +
 
 +
'''NEC重复码'''
 +
 
 +
对于重复发射(按钮按住),解码代码将一次次的返回相同的解码值。唯一的例外是NEC,会重复发射一个特殊的代码,而不是重复的发射该按键编码值。因此, 解码程序返回一个特殊REPEAT值(NEC默认返回值为0xFFFFFFFF,用户也可以在库中进行修改)。
 +
 
 +
[[File:NEC重复码定义.png|600px]]
 +
 
  
程序运行结果:接收按键值,并串口打印。偶尔出现 "FFFFFFFF" 码值,属于正常现象,可适当延长延时时间。
 
  
 
 最终整理按键值表格:
 
 最终整理按键值表格:
第146行: 第168行:
  
 
<font color="darkcyan">'''示例二'''</font>:红外遥控
 
<font color="darkcyan">'''示例二'''</font>:红外遥控
<pre >
+
<source lang="c">
/*
+
// Infrared remote control test
* 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>
 
#include <IRremote.h>
  
 
int RECV_PIN = 11;
 
int RECV_PIN = 11;
 +
int LED_PIN = 13;
  
 
IRrecv irrecv(RECV_PIN);
 
IRrecv irrecv(RECV_PIN);
第166行: 第183行:
 
{
 
{
 
   Serial.begin(9600);
 
   Serial.begin(9600);
 +
  pinMode(LED_PIN,OUTPUT);
 
   irrecv.enableIRIn(); // Start the receiver
 
   irrecv.enableIRIn(); // Start the receiver
 
}
 
}
第171行: 第189行:
 
void loop() {
 
void loop() {
 
   if (irrecv.decode(&results)) {
 
   if (irrecv.decode(&results)) {
    Serial.print("irCode: ");
 
 
     Serial.println(results.value, HEX);
 
     Serial.println(results.value, HEX);
     delay(200);
+
     controlLED(&results);
 
     irrecv.resume(); // Receive the next value
 
     irrecv.resume(); // Receive the next value
 
   }
 
   }
 
}
 
}
</pre>
 
程序下载地址:[http://pan.baidu.com/s/1qJCKY IRrecvDemo]
 
  
 程序 运行结果 接收按键值,并串口打印。偶尔出现 "FFFFFFFF" 码值,属于正常现象,可适当延长延时时间。
+
//Control the LED
 +
void controlLED(decode_results *results) {
 +
  switch(results->value){
 +
    case 0xFFA25D:
 +
      digitalWrite(LED_PIN,LOW);
 +
      break;
 +
    case 0xFFE21D:
 +
      digitalWrite(LED_PIN,HIGH);
 +
      break;
 +
  }
 +
}
 +
</source>
 +
 程序 下载地址 [https://eyun.baidu.com/s/3pLQFnQz IRrecvControl]
  
 +
程序运行结果:按“MENU”按钮,点亮LED,按下“关闭”按钮,关闭LED。
  
  
第187行: 第215行:
 
===参考资料===
 
===参考资料===
 
<br>
 
<br>
* [http://pan.baidu.com/s/1bnBGvKF IRremote库文件]
+
* [https://yfrobot.gitee.io/wiki/lib/Arduino-IRremote-master.zip Arduino-IRremote-master库文件],[https://yfrobot.lanzoui.com/irjjssaf2uf Arduino-IRremote-master库文件]
* [http://pan.baidu.com/s/1mgy6Kfm 红外原理简介]
+
*<strike> [https://eyun.baidu.com/s/3dF2Ddex IRremote库文件]</strike>
 +
* [http://yfrobot.gitee.io/wiki/doc/HS0038B.pdf HS0038B]
 +
* [https://eyun.baidu.com/s/3hstJ61Q 红外原理简介]
 +
* [https://eyun.baidu.com/s/3c4lGmfY HS0038红外接受电路设计与应用]
 +
* [https://eyun.baidu.com/s/3nwKZxjj 红外遥控系统原理图解]
  
  

2023年2月17日 (五) 17:28的最后版本

红外接收


产品简介


红外遥控分发射和接收两部分,发射部分为Mini遥控器,接收部分为红外接收模块,红外接收模块采用HS0038一体化红外遥控接收元件,载波频率为38.0kHz,周期26us,可抗自然光的反射干扰。

红外系统原理框图如下,Mini遥控器编码调制发出红外线,接收模块将接收到的红外线遥控信号,经过放大、解调和整形后输出功能指令信号,送至微处理器进行识别和处理,从而实现遥控过程。

红外系统框图.png

红外


其他详见参考资料。

规格参数


  • 供电电压:DC3v3-5V
  • 红外协议:NEC
  • 载波频率:38 kHz
  • 周期:26μs
  • 接收距离:10m
  • 安装孔径:3MM
  • 模块尺寸:28*21*11MM(长*宽*高)/ Mini遥控器:88*40*7MM(长*宽*高)
  • 孔间距:15MM
  • 模块重量:2.2g / Mini遥控器:12.6g

主要应用

广泛应用于:空调、风扇、暖风机、加湿器、电视、DVD、机顶盒、车载移动DVD、硬盘播放器、多媒体组合音响、数码相框、手机等家电产品,电脑及周边设备,感应洁具,仪表,工业自动化,遥控玩具,通讯器材,照相器材,事务机器,金融电子,汽车电子,灯饰照明等领域。


引脚说明


  • 1. G -- Gnd(地)
  • 2. V -- Vcc(电源+5V)
  • 3. S -- Sign(信号)


应用示例


提示:以下程序需使用到 IRremote库文件,文件下载地址见页末 - 参考资料。下载后将其解压至arduinoIDE安装目录/libraries文件夹中,例如: "D:\Program Files\Arduino\arduino-1.6.4-windows\arduino-1.6.4\libraries"。

电路连接


红外接收模块的 G、V、S分别连接 Arduino UNO的GND、VCC(+5V)、D11引脚。

电路连接示意图


红外遥控


示例代码

示例一:获取键值

/*
 * 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 = 11;
 
IRrecv irrecv(RECV_PIN);
 
decode_results results;
 
void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}
 
void loop() {
  if (irrecv.decode(&results)) {
    Serial.print("irCode: ");
    Serial.println(results.value, HEX);
    delay(200);
    irrecv.resume(); // Receive the next value
  }
}

程序下载地址:IRrecvDemo

程序运行结果:接收按键值,并串口打印。出现 "FFFFFFFF" 码值,属于正常现象,它是当收到重复码(长按)时NEC的解码值。

NEC重复码

对于重复发射(按钮按住),解码代码将一次次的返回相同的解码值。唯一的例外是NEC,会重复发射一个特殊的代码,而不是重复的发射该按键编码值。因此, 解码程序返回一个特殊REPEAT值(NEC默认返回值为0xFFFFFFFF,用户也可以在库中进行修改)。

NEC重复码定义.png


最终整理按键值表格:

遥控器字符 键值 遥控器字符 键值
红色/关闭键 0xFFA25D MENU 0xFFE21D
TEST 0xFF22DD + 0xFF02FD
返回键 0xFFC23D 快退/左2三角 0xFFE01F
播放/一个三角 0xFFA857 快进/右2三角 0xFF906F
0 0xFF6897 - 0xFF9867
C 0xFFB04F 1 0xFF30CF
2 0xFF18E7 3 0xFF7A85
4 0xFF10EF 5 0xFF38C7
6 0xFF5AA5 7 0xFF42BD
8 0xFF4AB5 9 0xFF52AD


示例二:红外遥控

// Infrared remote control test
 
#include <IRremote.h>
 
int RECV_PIN = 11;
int LED_PIN = 13;
 
IRrecv irrecv(RECV_PIN);
 
decode_results results;
 
void setup()
{
  Serial.begin(9600);
  pinMode(LED_PIN,OUTPUT);
  irrecv.enableIRIn(); // Start the receiver
}
 
void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    controlLED(&results);
    irrecv.resume(); // Receive the next value
  }
}
 
//Control the LED
void controlLED(decode_results *results) {
  switch(results->value){
    case 0xFFA25D:
      digitalWrite(LED_PIN,LOW);
      break;
    case 0xFFE21D:
      digitalWrite(LED_PIN,HIGH);
      break;
  }
}

程序下载地址:IRrecvControl

程序运行结果:按“MENU”按钮,点亮LED,按下“关闭”按钮,关闭LED。


参考资料





返回首页

更多建议和问题欢迎反馈至 YFRobot论坛

购买方式:YFRobot 电子工作室